2018年如何快速學Java


前言

只有光頭才能變強

提前預警:本文適合Java新手閱讀(老手可在評論區給下建議),希望大家看完能有所收獲。

一、為什么我要寫下這篇文章

1.1直接緣由:

  • 在今天(2018年11月4日)有個同學給我發微信找我
    • 同學:能不能給他一個網頁他改一下,他想參考一下,然后用於做畢業設計。
    • 3y:可以啊,你的題目是什么啊?想用Java來寫嗎?
    • 同學:對啊,我現在在學Java呢(ps:之前跟該同學聊天的時候"我看着這些代碼就頭暈,我對電腦真不感興趣"....真香!)
    • 隨后這個同學發了一個小視頻過來,說自己在學Java。我看了一下:大概是在練習&^|這些操作符。

同學發過來的小視頻圖--截取

最后,我告訴這同學:"你去找視頻看吧,你現在學這些對你的畢業設計沒有什么幫助的啊"。然后讓他去B站找視頻看了

ps:我並不是說學&^|這些運算符是沒用的,但如果單純是想自己用Java來寫畢業設計的話,這些知識點應該是用不上的。

1.2間接緣由:

自身經歷:

我學習Java也是自學的,在大學期間也是一直一個人在學(身邊的同學可能家里有礦)。即便我在學習的時候也去搜了不少的意見,例如在知乎上找<Java如何快速入門>,<Java應該怎么樣學?>,<給剛開始學Java的年輕人一些建議>等等類似的話題,但是現在回過頭來看,我還是走了不少的"彎路"了。

比如說,當時我花了蠻多的精力去學JSP,最后整理成博客發到網上去。網友的評論:

  • “不玩 JSP 十幾年了“。
  • “jsp不是老掉牙的技術嗎”。
  • “看這個有一種穿越的感覺……碼了6w多字,看着就心疼……”。
  • “這十年前的技術都被挖出來了?”
  • “剛畢業時寫過好幾個自定義標簽,那時候感覺好有成就感,但是現在,用於view的jsp,似乎有點過時了,view一般用【模板】或者【完全靜態 + ajax + json】了”

JSP博文

嗯...那篇文章我當時在2018.02.07發布。我學JSP的時候是在2017年初吧,其實在2017年JSP也已經是落后的技術了,但我還是花了不少的時間去學習JSP的各種用法(自定義標簽,JSTL,EL表達式等等)。

網友們其實說得都沒有毛病,對我來說:在2017年花了不少時間去學如何使用JSP(過期的技術),這就是我認為的"彎路"

  • ps:在2018年花點時間了解JSP是沒毛病的,但深入學習的話是沒必要的。

"彎路"說明:如果你有充裕的時間,怎么學都不是事,畢竟你是真真正正地在學編程。只要在學編程,就不是彎路,最怕你不學。


以這篇文章回復我部分的讀者:

寫博客以來,還是有部分讀者是零基礎學Java的,有轉行的、也有年輕的師弟師妹的。一般他們也問我應該怎么學Java比較好,學習Java的路線應該是怎么樣的。

emmmm,我一般都是比較簡單的回復一下:讓他們多做筆記啊,接下來應該花時間學什么,不學什么...就完了..

所以,寫完這篇文章,遇到再問我如何學習Java的時候,我直接發個鏈接就完事了(懶人必備)..

1.3目的

如果你:

  • 想要用Java在短短的幾個月時間內寫出自己的畢業設計。
  • 想要用Java體驗一下如何從零搭建一個屬於自己的網站。

那么可以看一下我下面所寫的不成熟的建議

二、如何快速學Java

這里我以Java EE(Jakarta EE)/Java Web的經驗來說哦。(都把你們看做是零基礎入門的了)

學習Java EE(Jakarta EE)總體來說會有以下三大模塊:

  • Java
  • 數據庫
  • Web前端

數據庫、Java、Web前端

在我看來,無論學習什么技術都好,在學習該項技術的細節之前都得知道:這項技術是什么,為什么我要學習這項技術,學習了這項技術有什么好處

  • 看似好像我在說多余的話,但如果你在學習某項技術的時候無法回答上面的三個問題。再過幾天,你很大程度上會忘記這項你所“學過”的技術。
  • 比如說,如何你連“為什么要用多線程”你都無法用通俗的話來解釋清楚。即便你當時學習的時候知道多線程可以用xxx方式來創建,多線程的xxx的api。那再過兩個月,人家問你”Java多線程有什么用啊?”。你想想你還能答什么,我認為你是記不住“多線程可以用xxx方式來創建、多線程的xxx的api”這些知識點了。
  • 再比如說,如果學習Spring時不知道IOC和new對象有什么區別,那我為啥不直接new對象而要那么麻煩去學Spring呢?

簡單來說:如果你不知道學習某項技術是干嘛用的,那先不要學


如果你是零基礎學習Java並理解力不是爆棚的話,我建議以視頻學習為主。

可能你會看到這樣類似的言論:

  • “看視頻學習太慢了”
  • “直接看源碼啊,源碼就是最好的解釋”
  • “有問題直接Google啊,用什么百度”
  • “最好的資料是官網文檔”
  • .....

但是,那都是對有經驗的人或者高智商的人群來講的。

如果是零基礎普通人,看視頻學習/看不懂源碼/用百度/看中文博客來學習不丟人

ps:如果看的視頻講師的語速不是特別快,建議以1.5或者1.75倍速觀看。

2.1關於視頻資源

我在學習Java的時候也收集了很多的視頻資源,並不是每個都有看過。只是在混群的時候發現有人發了,就復制下來整理一下罷了。

視頻資源

其他的視頻資源:

  • B站:(bilibili.com)一個神奇的網站。如果你想看哪個視頻,可以先搜一下B站有沒有。
  • 慕課網:(imooc.com)里頭也有挺多的視頻資源。
  • 公眾號/混qq群/微信群:不少人手里都有幾t的資源,如果跟群友的關系不錯,一般都會免費給你發的
  • ......

2.1學習Java基礎

零基礎學習Java的路線我簡單總結為以下:

劉意視頻

在學習Java基礎時,我簡單來說一下什么東西可以不碰

  • &^|位運算符,++ii++類似這種繞死人的語法
  • 內部類
  • AWT,SWING編程
  • 注解

需要深入理解的知識點:

  • 流程控制
  • 面向對象的概念
  • Java語法
    • this指針、重寫和重載、final、static等等這些基礎的東西
  • 集合(包括泛型)
    • 常用的集合類
  • IO流
    • IO流代碼的編寫
  • (理解這些知識點,能夠在有提示的情況下碼出代碼,但不要為了一些細節鑽牛角尖)

簡單過一遍的知識:

  • 異常
  • 多線程
  • 網絡編程
  • 反射機制
  • (你得知道這個知識點是干嘛用的,為什么要學這個知識點,能看懂具體的代碼!)

對於上面所說深入理解的知識點,我個人是非常建議在學習期間寫筆記(博客)的。如果你想寫筆記的話,最好直接就用markdown語法來編寫,而不是用word/簡單的記事本。

markdown語法非常好學,幾分鍾跟着就可以學習了,幾乎所有的it博客網站都支持markdown

如果喜歡畫思維導圖的,我這里推薦processOn就可以了。無需下載Xmind這么麻煩了:

有的時候並不需要使用IDEA打開一個.java或者.xml這樣的文件,可以使用notepad++記事本:

學會科學上網和使用Chrome瀏覽器,比如說下載攔截廣告插件,英語翻譯插件

雖然是快速學習Java,但學完上面的估計得一個月了(:..

一個月發現都是面向控制台編程(console),輸入輸出一些數據來玩。

控制台

期間可能就學習IO的時候可以復制文件,修改文件名有點意思。但好日子就要來臨了

2.2學習Java Web基礎

首先我們可以學習一下Web前端的知識(此部分都簡單過一下就好了)

到目前為止,學完上面這些可以搭建“能看”的靜態網頁了。曾經看過一段話來總結上面的技術:

  • HTML是名詞,CSS是形容詞,JavaScript是動詞

隨后學習JavaWeb的路線如下:

  • Tomcat(簡單過一下)
  • XML/注解(簡單過一下)
  • Servlet(重點理解)
  • HTTP協議(重點理解)
  • Filter過濾器(重點理解)
  • Listener監聽器(簡單過一下)
  • JSP(簡單過一下)
  • AJAX、JSON(簡單過一下)

Servlet知識點

基於上面的學習,起碼已經可以使用request對象來接收前端發送過來的數據,使用response對象將Java后端的數據返回給前端,使用Filter攔截器來處理中文亂碼問題(Tomcat默認的編碼是ISO-88591)。總的來說已經可以實現前后端交互了

2.3學習數據庫

數據庫這里指的是關系型數據庫,一般我們以MySQL來入門就足夠了。

在學習期間,其實很多時間都耗費在配置環境上面,比如我之前安裝JDK,安裝MySQL,安裝Oracle就耗費了不少時間。后來我也將其寫成博客,需要重新安裝的時候翻一下博客就好了。

主要學習SQL的基本使用吧:

  • 創建表(create table)
  • 增刪改查(insert,delete,update,select)
  • 對於存儲過程、觸發器這些了解一下即可
  • 對於索引、鎖后面再學(此部分很重要,但以快速入門來說,可以先不看)

MySQL基本語法

2.4學習Java連接數據庫(JDBC)

到這里,我們Java Web、數據庫、Web前端的基礎都已經基本學完了,但此時Java和數據庫是相互獨立的。我們想要以程序的方式來對數據庫的數據進行操作,那就要學習一下Java連接數據庫(JDBC)。

JDBC這項技術並不難呀,就是模板代碼,來來去去就幾個步驟:

  • 導入MySQL或者Oracle驅動包
  • 裝載數據庫驅動程序
  • 獲取到與數據庫連接
  • 獲取可以執行SQL語句的對象
  • 執行SQL語句
  • 關閉連接

由於這些代碼可能會重復出現,那我們可以學習一下DbUtils這個組件:可以幫我們減少編寫JDBC的模板代碼。

2.6項目管理和框架的學習

經過上面的學習,已經是可以在本地寫一個Web項目了。

  • 頁面框架使用BootStrap/Materialize框架來搭好
  • 請求處理交由Servlet,返回的數據可以通過AJAX或者使用JSP,DAO層可以使用DbUtils。
  • 數據保存在MySQL中

為了讓寫代碼變得更爽,我建議用半天學一下Maven(項目管理工具),用幾天學一下SpringBoot

  • 從Servlet直接跳到SpringBoot可能有點難理解,但多搞幾天我相信還是可以的..

2.7Linux學習

最后,我們在本地上寫完的項目想要讓其他人都看得見,一般都會部署在Linux環境下的。(此部分的學習可以等到將項目寫完,想要部署項目才學習)

我是不推薦使用虛擬機再搞Linux的,直接買一台方便很多

  • 如果是學生的話,一個月的學生版也就10塊一個月。
  • 如果是轉行的大哥話,現在阿里雲雙十一有優惠,買起來就很便宜了。

優惠鏈接:https://m.aliyun.com/act/team1111/#/share?params=N.FF7yxCciiM.pfn5xpli

三、總結

總結一下我認為學習Java的路線:

  • Java基礎-->流程控制-->面向對象(包括Java語法)-->Java集合-->Java IO流-->異常-->多線程-->網絡編程-->反射
  • JavaWeb基礎-->HTML/CSS/JavaScript/jQuery-->Tomcat-->XML/注解->Servlet-->HTTP-->Filter過濾器和監聽器-->JSP-->AJAX/JSON-->數據庫(MySQL)-->JDBC和DbUtils
  • 項目管理和框架-->Maven-->SpringBoot
  • Linux基本命令

最后我們的項目是這樣的:

  • 以Maven來管理我們的項目
  • 前端通過BootStrap來搭建頁面框架
  • SpringBoot來搭建Java后端環境,SpringMVC處理前端請求(SpringBoot整合了)
  • DAO層使用DbUtils組件來完成,MySQL作為數據庫

當然了,我的Java路線不一定就是對的,我這里只是給出一種路線。

再次說明:這套路線是以“快速”學習Java的,如果你想要找到一份好工作,上面的知識點是不夠的

如果是你,你會給出一條怎么樣的Java路線?不妨在評論區留言~~

一個堅持原創的Java技術公眾號:Java3y,歡迎大家關注

3y所有的原創文章:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM