Java學習路線圖(如何快速學Java)
不知不覺從初學Java到現在已經8年了,今天在這裡給剛入門和入門不久的小夥伴們一些建議。可能總結的不是很詳細,但給出了一個大概的學習路線。希望對大家有幫助哈~
如何快速學Java
這裡我以Java EE(Jakarta EE)/Java Web的經驗來說哦。(都把你們看做是零基礎入門的了)
學習Java EE(Jakarta EE)總體來說會有以下三大模組:
- Java
- 資料庫
- Web前端
在我看來,無論學習什麼技術都好,在學習該項技術的細節之前都得知道:這項技術是什麼,為什麼我要學習這項技術,學習了這項技術有什麼好處。
- 看似好像我在說多餘的話,但如果你在學習某項技術的時候無法回答上面的三個問題。再過幾天,你很大程度上會忘記
- 比如說,如何你連“為什麼要用多執行緒”你都無法用通俗的話來解釋清楚。即便你當時學習的時候知道多執行緒可以用xxx方式來建立,多執行緒的xxx的api。那再過兩個月,人家問你”Java多執行緒有什麼用啊?”。你想想你還能答什麼,我認為你是記不住“多執行緒可以用xxx方式來建立、多執行緒的xxx的api”這些知識點了。
- 再比如說,如果學習Spring時不知道IOC和new物件有什麼區別,那我為啥不直接new物件而要那麼麻煩去學Spring呢?
簡單來說:如果你不知道學習某項技術是幹嘛用的,那先不要學。
如果你是零基礎學習Java並理解力不是爆棚
可能你會看到這樣類似的言論:
- “看視訊學習太慢了”
- “直接看原始碼啊,原始碼就是最好的解釋”
- “有問題直接Google啊,用什麼百度”
- “最好的資料是官網文件”
- .....
但是,那都是對有經驗的人或者高智商的人群來講的。
如果是零基礎普通人,看視訊學習/看不懂原始碼/用百度/看中文部落格來學習不丟人。
ps:如果看的視訊講師的語速不是特別快,建議以1.5或者1.75倍速觀看。
1.1 關於視訊資源
我在學習Java的時候也收集了很多的視訊資源,並不是每個都有看過。只是在混群的時候發現有人發了,就複製下來整理一下罷了。
其他的視訊資源:
- B站:(bilibili.com)一個神奇的網站。如果你想看哪個視訊,可以先搜一下B站有沒有。
- 慕課網:(imooc.com)裡頭也有挺多的視訊資源。
- 公眾號/混qq群/微信群:不少人手裡都有幾t的資源,如果跟群友的關係不錯,一般都會免費給你發的
- ......
1.2 學習Java基礎
零基礎學習Java的路線我簡單總結為以下:
- 首先去官網下個JDK,按現在常用的版本JDK1.8就夠學習了
- 下載地址:JDK1.8下載:www.oracle.com/technetwork…
- 隨後去下載現在Java常用的編輯器IDEA(也可以用eclipse,但現在IDEA的確是好用)..
- 下載地址:IDEA下載:www.jetbrains.com/idea/
- 以1.5/1.75倍速觀看Java基礎視訊(以劉意為例)
在學習Java基礎時,我簡單來說一下什麼東西可以不碰:
&^|
位運算子,++i
和i++
類似這種繞死人的語法- 內部類
- AWT,SWING程式設計
- 註解
需要深入理解的知識點:
- 流程控制
- 面向物件的概念
- Java語法
- this指標、重寫和過載、final、static等等這些基礎的東西
- 集合(包括泛型)
- 常用的集合類
- IO流
- IO流程式碼的編寫
- (理解這些知識點,能夠在有提示的情況下碼出程式碼,但不要為了一些細節鑽牛角尖)
簡單過一遍的知識:
- 異常
- 多執行緒
- 網路程式設計
- 反射機制
- (你得知道這個知識點是幹嘛用的,為什麼要學這個知識點,能看懂具體的程式碼!)
對於上面所說深入理解的知識點,我個人是非常建議在學習期間寫筆記(部落格)的。如果你想寫筆記的話,最好直接就用markdown
語法來編寫,而不是用word/簡單的記事本。
markdown語法非常好學,幾分鐘跟著就可以學習了,幾乎所有的it部落格網站都支援markdown
:
- markdown學習:www.jianshu.com/p/q81RER
如果喜歡畫思維導圖的,我這裡推薦processOn就可以了。無需下載Xmind這麼麻煩了:
- ProcessOn來畫思維導圖:www.processon.com/i/5815483ce…
有的時候並不需要使用IDEA開啟一個.java
或者.xml
這樣的檔案,可以使用notepad++
記事本:
- NotePad++記事本:notepad-plus-plus.org/
學會科學上網和使用Chrome瀏覽器,比如說下載攔截廣告外掛,英語翻譯外掛
- Chrome瀏覽器:www.google.com/chrome/
- 攔截廣告外掛:chrome.google.com/webstore/se…
- 英語翻譯外掛:chrome.google.com/webstore/se…
雖然是快速學習Java,但學完上面的估計得一個月了(:..
一個月發現都是面向控制檯程式設計(console),輸入輸出一些資料來玩。
期間可能就學習IO的時候可以複製檔案,修改檔名有點意思。但好日子就要來臨了!
1.3 學習Java Web基礎
首先我們可以學習一下Web前端的知識(此部分都簡單過一下就好了)
- HTML/CSS/JavaScript/jQuery
- CSS框架(都有中文手冊,很快就上手了,選一個自己喜歡的就好了):
- BootStrap:www.bootcss.com/
- Materialize:www.materializecss.cn/
到目前為止,學完上面這些可以搭建“能看”的靜態網頁了。曾經看過一段話來總結上面的技術:
- “HTML是名詞,CSS是形容詞,JavaScript是動詞”
隨後學習JavaWeb的路線如下:
- Tomcat(簡單過一下)
- XML/註解(簡單過一下)
- Servlet(重點理解)
- HTTP協議(重點理解)
- Filter過濾器(重點理解)
- Listener監聽器(簡單過一下)
- JSP(簡單過一下)
- AJAX、JSON(簡單過一下)
基於上面的學習,起碼已經可以使用request物件來接收前端傳送過來的資料,使用response物件將Java後端的資料返回給前端,使用Filter攔截器來處理中文亂碼問題(Tomcat預設的編碼是ISO-88591)。總的來說已經可以實現前後端互動了!
1.4 學習資料庫
資料庫這裡指的是關係型資料庫,一般我們以MySQL來入門就足夠了。
在學習期間,其實很多時間都耗費在配置環境上面,比如我之前安裝JDK,安裝MySQL,安裝Oracle就耗費了不少時間。後來我也將其寫成部落格,需要重新安裝的時候翻一下部落格就好了。
- 比如MySQL安裝教程:segmentfault.com/a/119000001…
主要學習SQL的基本使用吧:
- 建立表(create table)
- 增刪改查(insert,delete,update,select)
- 對於儲存過程、觸發器這些瞭解一下即可
- 對於索引、鎖後面再學(此部分很重要,但以快速入門來說,可以先不看)
1.5 學習Java連線資料庫(JDBC)
到這裡,我們Java Web、資料庫、Web前端的基礎都已經基本學完了,但此時Java和資料庫是相互獨立的。我們想要以程式的方式來對資料庫的資料進行操作,那就要學習一下Java連線資料庫(JDBC)。
JDBC這項技術並不難呀,就是模板程式碼,來來去去就幾個步驟:
- 匯入MySQL或者Oracle驅動包
- 裝載資料庫驅動程式
- 獲取到與資料庫連線
- 獲取可以執行SQL語句的物件
- 執行SQL語句
- 關閉連線
由於這些程式碼可能會重複出現,那我們可以學習一下DbUtils這個元件:可以幫我們減少編寫JDBC的模板程式碼。
1.6專案管理和框架的學習
經過上面的學習,已經是可以在本地寫一個Web專案了。
- 頁面框架使用BootStrap/Materialize框架來搭好
- 請求處理交由Servlet,返回的資料可以通過AJAX或者使用JSP,DAO層可以使用DbUtils。
- 資料儲存在MySQL中
為了讓寫程式碼變得更爽,我建議用半天學一下Maven(專案管理工具),用幾天學一下SpringBoot。
- 從Servlet直接跳到SpringBoot可能有點難理解,但多搞幾天我相信還是可以的..
1.7Linux學習
最後,我們在本地上寫完的專案想要讓其他人都看得見,一般都會部署在Linux環境下的。(此部分的學習可以等到將專案寫完,想要部署專案才學習)
我是不推薦使用虛擬機器再搞Linux的,直接買一臺方便很多
- 如果是學生的話,一個月的學生版也就10塊一個月。
- 如果是轉行的大哥話,現在阿里雲雙十一有優惠,買起來就很便宜了。
優惠連結:m.aliyun.com/act/team111…
總結
總結一下我認為學習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團長”或者“javatuanzhang”關注。
參考: