前言
許久不見,最近公眾號多了很多在校的師弟師妹們。有很多同學(xué)都加了我微信問了一些諸如 [如何自學(xué) Java ]的問題,我都一一解答了,這是大家對我的信任,我非常感謝。你們知道我現(xiàn)在的職業(yè)是 java web 開發(fā),可你們你們不知道的是我在這個(gè)份職業(yè)之前做的是 Android 開發(fā),一年前通過自學(xué)才轉(zhuǎn)過來 java 崗位。下面就跟你們聊聊我的自學(xué)經(jīng)驗(yàn)以及一些建議,希望能幫助到大家。
了解 Java 的前世今生
在學(xué)習(xí)之前,我相信很多人都是網(wǎng)上直接找教程,開始學(xué)。但我跟你們不一樣,我會先去網(wǎng)上找一些 Java 相關(guān)的發(fā)展史來了解一下,很多人可能疑惑這有什么用呢?那些發(fā)展史又不會幫你提高你的技術(shù)。我告訴你們這里的用處可大了,舉個(gè)栗子,不去了解你又怎么會知道 JDK 11 已經(jīng)出了,JDK 8 是目前最多人使用的版本,而你此時(shí)找到的是 JDK 6 的教程,學(xué)習(xí)一段時(shí)間后,你發(fā)現(xiàn)你的代碼跟別人不一樣,殊不知人家用的 JDK 8。那么這中間你就浪費(fèi)了許多時(shí)間了,所以了解一門語言的前世今生是很有必要的。
建立學(xué)習(xí)大綱
很多人不知道怎么學(xué),怎么規(guī)劃自己的學(xué)習(xí)路線。對于這種情況我的應(yīng)對方法是建立學(xué)習(xí)大綱,比如 Java 基礎(chǔ),那你就得想 Java 基礎(chǔ)有哪些知識點(diǎn),然后把它羅列下來做成一個(gè)學(xué)習(xí)大綱或者思維導(dǎo)圖。那你在學(xué)習(xí)之前,你就跟著學(xué)習(xí)大綱按部就班地學(xué)就好了,哪塊沒攻克的就翻相應(yīng)的資料重點(diǎn)學(xué)習(xí)。下面是我整理的簡單版的思維導(dǎo)圖,給你們做參考,你們的大綱不能像我做的這么簡化,你們要逐項(xiàng)展開,比如說 Java 基礎(chǔ),應(yīng)該具體到某一個(gè)知識點(diǎn)才行,因?yàn)樵骄唧w,你學(xué)得越清晰。
簡單說一下,上面我整理的學(xué)習(xí)大綱分為四個(gè)階段,對于應(yīng)屆生來說,把上面四個(gè)階段掌握了,找到實(shí)習(xí)工作完全沒問題。但如果想更進(jìn)一步,進(jìn) BAT 等公司,可能還需要學(xué)習(xí)下數(shù)據(jù)結(jié)構(gòu)與算法。
PS:重中之重的是 Java 基礎(chǔ) 和 算法,大廠非常青睞算法好的應(yīng)屆生
PPS:推薦一款好用的思維導(dǎo)圖軟件:https://mubu.com/inv/929852
不要浪費(fèi)時(shí)間在找資料上
自學(xué) Java ,我相信很多人一開始都是煞費(fèi)苦心找資料的,越多越好,越詳細(xì)越好,因?yàn)檫@樣很有滿足感,心里想著只要我每天堅(jiān)持看幾個(gè)小時(shí)很快看完的。殊不知,不斷保存教程的結(jié)果就是某度云盤里面躺了一大堆教程,就算是每天不睡覺地看還不一定能看完。自制力好的人,估計(jì)在保存后會翻出來看兩眼,過幾天又忘得一干二凈了。自制力不好的人更衰,直接讓教程在云盤里面積灰。對于初學(xué)者來說,只要找到囊括了 Java 基礎(chǔ)的資料就可以開始學(xué)了。
切忌眼高手低
有些問題需然看起來很簡單,很弱智,很傻逼。首先,你動(dòng)手比光看不做敲記憶更牢固;其次,你敲出來可能會有各種各樣奇奇怪怪的問題,而你的水平就是在解決這些問題中提高的。所謂大神都是踩各種各樣的坑才過來的。
善于利用搜索引擎
遇到問題,第一時(shí)間想到的是網(wǎng)上搜索試試看能不能解決,不能解決再去問人。移動(dòng)互聯(lián)網(wǎng)發(fā)展到今天,可以毫不夸張的說,你遇到的 99% 的問題都能在網(wǎng)上找到解決辦法,剩下的 1% 是因?yàn)槟氵€沒學(xué)會用關(guān)鍵字來搜索。
多思考
學(xué)會思考,養(yǎng)成多思考的習(xí)慣。在寫代碼的過程中多想想人家為什么這樣寫。舉個(gè)栗子,為什么 java 類只能單繼承,而接口卻可以多繼承,稍加思考你就會知道答案:如果存在多繼承,那個(gè)兩個(gè)父類有兩個(gè)一模一樣的方法怎么辦,子類就不知道繼承哪一個(gè)方法。而接口能多繼承的原因是:接口中的方法都是方法名,沒有函數(shù)體,具體的實(shí)現(xiàn)需要靠實(shí)現(xiàn)類去實(shí)現(xiàn),一旦實(shí)現(xiàn)類實(shí)現(xiàn)了方法,那么就不存在多個(gè)接口有相同的方法名的出現(xiàn)的問題了,因?yàn)楹瘮?shù)體都是一樣的。
多交流
我做開發(fā)十多年的時(shí)間,如果大家對于學(xué)習(xí)java的學(xué)習(xí)方法,學(xué)習(xí)路線以及你不知道自己應(yīng)該是自學(xué)還是培訓(xùn)的疑問,都可以隨時(shí)來問我,大家可以加我的java交流學(xué)習(xí)qun:四九四,八零一,九三一,qun內(nèi)有學(xué)習(xí)教程以及開發(fā)工具。
熟能生巧
很多人困惑,為什么我看視頻的時(shí)候很懂,過兩天就啥都忘了?其實(shí)這是正常的,因?yàn)槟氵€沒有對知識進(jìn)行實(shí)踐歸納。在入門 Java 之后,就需要大量的實(shí)戰(zhàn)來鞏固你的基礎(chǔ)。所以說忘了不要緊,先按大綱按部就班學(xué),之后再通過實(shí)戰(zhàn)來鞏固基礎(chǔ)。
項(xiàng)目驅(qū)動(dòng),不要為了學(xué)而學(xué)
相當(dāng)一部分初學(xué)者都堅(jiān)持不下去,因?yàn)樘菰锪?。遇到這種情況,首先你要明確你學(xué)習(xí) Java 的目的是什么?我相信很多人最終目的都是--錢。這太正常了,沒錢誰愿意做這么費(fèi)腦力的事啊。但是你是需要通過項(xiàng)目來賺錢的。所以我們學(xué)習(xí)是要通過項(xiàng)目來驅(qū)動(dòng)的。你要想你學(xué)完之后希望鼓搗一個(gè)什么東西出來。比如我之前學(xué) Android ,我就是打算弄一個(gè)天氣預(yù)報(bào)的APP出來,那有了目標(biāo)之后,你就開始思考,網(wǎng)上查,這個(gè)東西,需要用到什么技術(shù)。比如,我當(dāng)時(shí)就是要先會 Javase 才能學(xué)安卓,學(xué)到了安卓之后又有其他的技術(shù),比如 Android 網(wǎng)絡(luò)框架,UI框架等等。以項(xiàng)目來驅(qū)動(dòng)自己學(xué)習(xí),整個(gè)過程將會有趣得多。
后語
以上就是我對自學(xué) Java 的幾點(diǎn)建議,如果本文對你哪怕有一丁點(diǎn)幫助,請幫忙點(diǎn)好看。你的好看是我堅(jiān)持寫作的動(dòng)力。