如何正確有效的學(xué)習(xí)好java
如何正確有效的學(xué)習(xí)好java
Java語言的學(xué)習(xí)開始,很多同學(xué)都不知道應(yīng)該從哪入手?想知道如何從零開始學(xué)Java嗎?請(qǐng)看下文,以下是學(xué)習(xí)啦小編分享給大家的有效學(xué)習(xí)好java的方法,希望可以幫到你!
有效學(xué)習(xí)好java的方法
1明確面向?qū)ο蟮姆懂?/p>
我們必須明確一個(gè)大方向,也就是說現(xiàn)在面向?qū)ο蟮木幊谭懂?。盡管人工智能曾經(jīng)有所浪潮(看看Borland為什么有Turbo Prolog),但未來5-10年工業(yè)界廣泛承認(rèn)并接受的將是面向?qū)ο笫降木幊獭?/p>
工業(yè)界目前最流行的面向?qū)ο缶幊陶Z言就是C++和Java。所以基本上鎖定這兩個(gè)方向就可以了。而且完全可以同時(shí)掌握。
2掌握J(rèn)ava的精華特性
掌握J(rèn)ava的精華特性的同時(shí),一定要知道為什么。比如,Interface和multi-thread。用interface是更好的多繼承的模型,而多線程則是設(shè)計(jì)到語言一級(jí)的重要特性。要完全理解interface是為什么,用多線程又有幾種常用的編程模型。
3開始進(jìn)行設(shè)計(jì)
理解了語言的特性是為什么了之后,就可以試著上升到設(shè)計(jì)這個(gè)層次,畢竟學(xué)習(xí)語言是要用的。目前比較好的開發(fā)模式是采用自定向下的面向?qū)ο蟮脑O(shè)計(jì),加上MVC的模式(你可以看一下我介紹的關(guān)于MVC的內(nèi)容)。首先要找出最頂層的對(duì)象(這往往是最難的),然后一層一層往下遞歸,記住每次應(yīng)符合7+/-2的原則,因?yàn)槲覀內(nèi)说亩逃洃浘褪沁@樣。一般有圖形用戶界面的應(yīng)從界面開始設(shè)計(jì)。
4學(xué)習(xí)設(shè)計(jì)模式
有了基本設(shè)計(jì)模型后,可以學(xué)一些設(shè)計(jì)模式(Design Pattern)。這是目前證明很有效的。比如體系結(jié)構(gòu)模式(Layering分層,Pipe/Filter管道或過濾器),設(shè)計(jì)模式(有很多,比如對(duì)象池Object Pool、緩沖池Cache等),編程模式(比如Copy-on-Write)。
懂了這些模式之后,就會(huì)對(duì)系統(tǒng)的整體結(jié)構(gòu)有很好的把握,而學(xué)術(shù)上也有傾向一個(gè)系統(tǒng)完全可以由各種模式組合而成。前面提到的MT實(shí)際上就有好幾種模式,掌握后就不用自己花很多時(shí)間去試了。另外一個(gè)很重要的領(lǐng)域就是并行和分布式計(jì)算領(lǐng)域,大概有20種左右。
5進(jìn)行編程實(shí)踐
接下來就不能紙上談兵了,最好的方法其實(shí)是實(shí)踐。一般教科書上的例子并不能算是實(shí)踐,只能算是讓你掌握語言特性用的。而提倡做實(shí)際的Project也不是太好,因?yàn)槟氵€沒有熟練的能力去綜合各種技術(shù),這樣只能是你自己越來越迷糊。
我認(rèn)為比較好的方法是找一些比較經(jīng)典的例子,每個(gè)例子比較集中一種編程思想而設(shè)計(jì)的,比如在我的實(shí)踐當(dāng)中,我曾經(jīng)學(xué)習(xí)過一個(gè)很經(jīng)典的例子就是用Java實(shí)現(xiàn)的HotDraw(源自SmallTalk),你可以用rolemodel或hotdraw在搜索引擎上找一下,我記不大清楚了。好象是個(gè)網(wǎng)站,上面有原代碼和一些基本設(shè)計(jì)的文檔。
另一個(gè)來源可以到是個(gè)不錯(cuò)的文檔基地。從HotDraw上我學(xué)到了什么是Framework,以及如何用rolemodel的方式來構(gòu)造,這樣我就可以應(yīng)用到其他的地方。順便說一句,這個(gè)例子你絕對(duì)不會(huì)覺得小,只會(huì)覺得大,并且他還是真正的商用的Framework。
6學(xué)習(xí)修改經(jīng)典例子
結(jié)合前面學(xué)到的設(shè)計(jì)模式你就可以很好的理解這些經(jīng)典的例子。并且自己可以用他來實(shí)現(xiàn)一些簡(jiǎn)單的系統(tǒng)。如果可以對(duì)他進(jìn)行進(jìn)一步的修改,找出你覺得可以提高性能的地方,加上自己的設(shè)計(jì),那就更上一個(gè)層次了,也就會(huì)真正地感到有所收獲。
好象以上談的跟Java沒什么關(guān)系,其實(shí)我們?cè)缇蛻?yīng)該從單純的學(xué)習(xí)語言到真正的學(xué)習(xí)好編程的領(lǐng)域。學(xué)習(xí)技術(shù)是沒有止境的,你學(xué)習(xí)第一種語言可能要半年時(shí)間,以后每種語言都不應(yīng)該超過兩個(gè)月,否則你會(huì)覺得學(xué)習(xí)語言是包袱,是痛苦。
7學(xué)以致用
學(xué)習(xí)是為了用的,是為了讓你的程序產(chǎn)生價(jià)值,把握住這個(gè)原則會(huì)比較輕松點(diǎn)。
有效學(xué)習(xí)好java的建議
1. 刻意練習(xí)適合較成熟的領(lǐng)域
書中提到的適合的合理發(fā)展行業(yè)或領(lǐng)域,指的是這個(gè)行業(yè),最杰出的從業(yè)者已達(dá)到一定的程度的表現(xiàn)水平。包括音樂、舞蹈、體育、棋類等有固定評(píng)分標(biāo)準(zhǔn)的領(lǐng)域。而那些沒有客觀標(biāo)準(zhǔn)來評(píng)價(jià)卓越績(jī)效的領(lǐng)域,如銷售、園藝、企業(yè)管理等,不太適合刻意訓(xùn)練。
實(shí)際上,我們看到這個(gè)領(lǐng)域也像認(rèn)知范圍一樣在不斷擴(kuò)大,如文案寫作,現(xiàn)在也有一整套有效的培訓(xùn)和訓(xùn)練的方法。隨著新興領(lǐng)域不斷崛起,專業(yè)化分工越來越細(xì),會(huì)沉淀出越來越多的科學(xué)方法,形成刻意訓(xùn)練的基礎(chǔ)。
2. 刻意練習(xí)需要好的導(dǎo)師或教練
這一點(diǎn)書中多次表達(dá)得比較充分。
練習(xí)的早期,大量的反饋來自于導(dǎo)師或教練,隨著時(shí)間的推移,學(xué)習(xí)者要學(xué)會(huì)自我監(jiān)測(cè),自我調(diào)整。
對(duì)于初學(xué)者,導(dǎo)師的要求沒有那么高,他有足夠熟練的技能即可。如果你已訓(xùn)練了好幾年,那就需要找一位更能干、權(quán)威的導(dǎo)師。
現(xiàn)在很多人學(xué)習(xí)利用得最多的是: 網(wǎng)絡(luò),
1) 學(xué)習(xí)資料、資源極大的豐富。視頻學(xué)習(xí)資料可以更好地幫助入門。
2) 在線學(xué)習(xí)的社群,找到學(xué)習(xí)的氛圍。
不過對(duì)于絕大多數(shù)學(xué)習(xí)者來說,找到一位好老師還是非常重要。好的老師能給予及時(shí)有效的反饋和學(xué)習(xí)監(jiān)督,這也是很多自學(xué)、在線學(xué)習(xí)無法提供,造成完成率非常低的原因。編程開發(fā)經(jīng)過3~4個(gè)月的培訓(xùn)學(xué)習(xí),就可完全達(dá)到一個(gè)入門工作的要求。
在經(jīng)濟(jì)條件允許的情況下,優(yōu)先找導(dǎo)師學(xué),尤其是在“入門的初級(jí)階段”,不然在這個(gè)階段,很可能你的對(duì)新知識(shí)、新技能的渴求和熱情會(huì)在掌握之前就會(huì)消失殆盡。
3. 刻意練習(xí)發(fā)生在舒適區(qū)之外
刻意練習(xí)需要付出近乎最大限度的努力。一般來說,不是令人心情愉快的。
人的身體偏愛穩(wěn)定性,舒適區(qū)的正面作用是心理安全,自我情緒穩(wěn)定,維護(hù)自我形象。負(fù)面作用就是“溫水煮青蛙”,松懈倦怠保守,不思進(jìn)取、固步自封。
刻意練習(xí)的過程是痛苦的,興趣和喜悅來自于成就感。
4. 刻意練習(xí)要有準(zhǔn)確的目標(biāo)和切實(shí)的計(jì)劃
特定的目標(biāo)需要量化,目標(biāo)要能分解成計(jì)劃來執(zhí)行
要想取得進(jìn)步,必須完全把注意力集中在任務(wù)上
關(guān)于目標(biāo)和計(jì)劃,有很多原則和實(shí)施方法,如SMART,這里不展開。
5. 刻意練習(xí)需要有效反饋
即時(shí)反饋包括:練習(xí)時(shí)在哪些方面不足,怎么會(huì)存在這些不足,以及現(xiàn)在離目標(biāo)還有多遠(yuǎn)。
對(duì)比很多自學(xué)沒有效果的原因,是無法給學(xué)習(xí)提供一個(gè)有效的反饋系統(tǒng),學(xué)了多少,是什么樣的問題,學(xué)到哪里了,這些對(duì)于一個(gè)還沒有入門的人還說,是很難把握的。當(dāng)然考試也是一個(gè)有效的反饋機(jī)制。
有效學(xué)習(xí)好java的注意事項(xiàng)
交換著學(xué)更有效
一開始,比約克問我說,當(dāng)我面前堆了一摞書要啃的時(shí)候,我會(huì)怎么辦。
“人通常會(huì)一塊兒一塊兒地整,” 比約克說,“干完這個(gè)再干那個(gè)。”
正確的學(xué)習(xí)方法,應(yīng)該是交換著學(xué),學(xué)會(huì)兒這個(gè),再學(xué)會(huì)兒那個(gè)。好比你要練網(wǎng)球的發(fā)球,你不應(yīng)該花一個(gè)小時(shí)的時(shí)間苦練發(fā)球,而應(yīng)該把反手擊球、截?fù)簟⒖蹥⒑筒椒?,結(jié)合起來交換著練。“這就增加了難度,”比約克說,“而人們往往容易忽略這些不是立竿見影的效果。”
專注地練一段時(shí)間能讓你的發(fā)球水平有一個(gè)明顯的提高,而交換著練習(xí)則能夠使你在很多技能上,都往前邁出小小的一步,你幾乎無法察覺自己有所提高。然而,隨著時(shí)間的推移,這些小小的進(jìn)步累積起來,將會(huì)比你花同樣多的時(shí)間,去一項(xiàng)一項(xiàng)單獨(dú)掌握每一個(gè)技能所獲得的提高多得多。
對(duì)此,比約克表示,交換練習(xí)用得好的話,能讓你把各項(xiàng)技能都相應(yīng)的 “座”到位。“把一個(gè)知識(shí)點(diǎn)跟記憶中的其他東西聯(lián)系起來學(xué),這樣的學(xué)習(xí)會(huì)更加有效,”他說。需要注意的一點(diǎn)是:交換著練習(xí)的這些小技巧,要同屬于一個(gè)大的技能才行。如果你想學(xué)打網(wǎng)球,那么你交換著練習(xí)的應(yīng)該是發(fā)球、反手擊球、截?fù)簟⒖蹥⒑筒椒?,而不是發(fā)球、花樣游泳、背誦歐洲國家的首都和學(xué)習(xí)用Java 編程。
同樣,只在一個(gè)固定的地方學(xué)習(xí)當(dāng)然很好,前提是你只需要在那個(gè)地方才會(huì)用到你學(xué)的那些東西。如果你想在宿舍、辦公室或者圖書館二樓自習(xí)室等等以外的地方,也能回憶起你所學(xué)的知識(shí),比約克建議,不妨在幾個(gè)不同的地點(diǎn)換著進(jìn)行自習(xí)。
無論你是學(xué)數(shù)學(xué)、學(xué)法語,還是學(xué)社交舞步,交替著學(xué)和換著地點(diǎn)學(xué)都將適用。
不要馬上復(fù)習(xí)
類似的還有一個(gè)叫做“時(shí)間間隔效果”(spacingeffect),這一概念最初由赫爾曼·艾賓浩斯(Hermann Ebbinghaus)在1885年提出,學(xué)習(xí)的時(shí)候,復(fù)習(xí)要隔開一段時(shí)間,會(huì)學(xué)得更好。
“如果你學(xué)了之后不練,研究表明,中間隔的時(shí)間越長(zhǎng),你忘的就越多,”比約克說。但有趣的是:如果你學(xué)了之后,隔一段時(shí)間再學(xué),這時(shí)候你隔的時(shí)間越長(zhǎng),復(fù)習(xí)的時(shí)候你學(xué)到的東西就越多。
比約克表示:“當(dāng)我們從記憶中提取信息的時(shí)候,我們做的不只是說它在那里就行了。記憶不僅僅是回放。我們這次取出來了的東西,下次要取的話,取起來就會(huì)變得更容易。我們每次取的過程越難、涉及的東西越多,整個(gè)記憶就越有效。”
注意這里所說的是 “我們這次取出來了的東西”(沒取出來是沒有用的)。所以, 從學(xué)完到你開始復(fù)習(xí)的時(shí)間,應(yīng)該是你剛剛好要開始忘記的時(shí)候。這樣,你越是拼命地回憶之前學(xué)過的東西,你復(fù)習(xí)的效果就會(huì)越好。如果你學(xué)完之后馬上復(fù)習(xí),就沒有這個(gè)效果了。
同理,比約克還建議說,筆記最好下課之后才開始記,以強(qiáng)迫自己回憶課上講過的東西;而不是在課堂上記,黑板上有啥抄啥。你必須下苦功才行。你花的工夫越多,你學(xué)到的就越多,你當(dāng)然也就越牛。
遺忘對(duì)記憶有幫助
“趕緊忘掉你知道的‘遺忘’的定義吧,”比約克說,“人們通常認(rèn)為,學(xué)習(xí)就是在記憶里面修東西,而遺忘呢,則是把你修起來的東西給拆了。但在某些方面,反過來說才是對(duì)的。”
這么說吧,只要是你學(xué)過的東西,其實(shí)是一直待在你記憶里不會(huì)忘的。你還記得你兒時(shí)好友的電話號(hào)碼嗎?記不得了?那好,比約克說了,如果這時(shí)候提醒你一下,那么你回憶起這個(gè)電話號(hào)碼的速度和印象,會(huì)比讓你重新記一個(gè)新的號(hào)碼要迅速和清晰得多。所以這個(gè)舊的電話號(hào)碼不是被你忘記了——它一直待在你腦海里的某個(gè)地方——只是把它取出來有點(diǎn)兒麻煩就是了。我們一直把遺忘當(dāng)成是學(xué)習(xí)的死對(duì)頭,這也算是冤案一樁。學(xué)習(xí)和遺忘的關(guān)系有點(diǎn)兒像是共生,實(shí)際上遺忘對(duì)記憶還有幫助作用。
“人腦有無限的存儲(chǔ)量,要是什么都回憶得起那就糟了,” 比約克說, “試想一下,你記得你住過的所有地方的所有電話號(hào)碼,每當(dāng)有人問你電話號(hào)碼的時(shí)候,你必須把這一長(zhǎng)串電話號(hào)碼都給理一遍才行。”我們忘記舊的電話號(hào)碼,或者把它們埋于記憶深處,回憶夠不到的地方,方便我們迅速提取出現(xiàn)在使用的那個(gè)電話號(hào)碼。被你狠得牙癢癢的敵人,其實(shí)更像是默默守在一旁的伙伴(吐槽:防止你因?yàn)橐恢蓖坏粢郧暗聂芏越^于寰呀!)。
猜你喜歡: