學(xué)習Java其實(shí)應該上升到如何學(xué)習程序設計這種境界,其實(shí)學(xué)習程序設計又是接受一種編程思想。
每一種語(yǔ)言的程序設計思想大同小異,只是一些由語(yǔ)言特性的而帶來(lái)的細微差別,比如Java中的Interface,你幾乎在以前的學(xué)習中沒(méi)有碰到過(guò)。以下我仔細給你說(shuō)幾點(diǎn): 1。
我們必須明確一個(gè)大方向,也就是說(shuō)現在面向對象的編程范疇。盡管人工智能曾經(jīng)有所浪潮(看看Borland為什么有Turbo Prolog),但未來(lái)5-10年工業(yè)界廣泛承認并接受的將是面向對象式的編程。
2。工業(yè)界目前最流行的面向對象編程語(yǔ)言就是C++和Java。
所以基本上鎖定這兩個(gè)方向就可以了。而且完全可以同時(shí)掌握。
3。掌握Java的精華特性而且一定要知道為什么。
比如,Interface和multi-thread。用interface是更好的多繼承的模型,而多線(xiàn)程則是設計到語(yǔ)言一級的重要特性。
要完全理解interface是為什么,用多線(xiàn)程又有幾種常用的編程模型。 4。
理解了語(yǔ)言的特性是為什么了之后,就可以試著(zhù)上升到設計這個(gè)層次,畢竟學(xué)習語(yǔ)言是要用的。目前比較好的開(kāi)發(fā)模式是采用自定向下的面向對象的設計,加上MVC的模式(你可以看一下我介紹的關(guān)于MVC的內容)。
首先要找出最頂層的對象(這往往是最難的),然后一層一層往下遞歸,記住每次應符合7+/-2的原則,因為我們人的短記憶就是這樣。一般有圖形用戶(hù)界面的應從界面開(kāi)始設計。
5。有了基本設計模型后,可以學(xué)一些設計模式(Design Pattern)。
這是目前證明很有效的。比如體系結構模式(Layering分層,Pipe/Filter管道或過(guò)濾器),設計模式(有很多,比如對象池Object Pool、緩沖池Cache等),編程模式(比如Copy-on-Write)。
懂了這些模式之后,就會(huì )對系統的整體結構有很好的把握,而學(xué)術(shù)上也有傾向一個(gè)系統完全可以由各種模式組合而成。前面提到的MT實(shí)際上就有好幾種模式,掌握后就不用自己花很多時(shí)間去試了。
另外一個(gè)很重要的領(lǐng)域就是并行和分布式計算領(lǐng)域,大概有20種左右。 6。
接下來(lái)就不能紙上談兵了,最好的方法其實(shí)是實(shí)踐。一般教科書(shū)上的例子并不能算是實(shí)踐,只能算是讓你掌握語(yǔ)言特性用的。
而提倡做實(shí)際的Project也不是太好,因為你還沒(méi)有熟練的能力去綜合各種技術(shù),這樣只能是你自己越來(lái)越迷糊。我認為比較好的方法是找一些比較經(jīng)典的例子,每個(gè)例子比較集中一種編程思想而設計的,比如在我的實(shí)踐當中,我曾經(jīng)學(xué)習過(guò)一個(gè)很經(jīng)典的例子就是用Java實(shí)現的HotDraw(源自SmallTalk),你可以用rolemodel或hotdraw在搜索引擎上找一下,我記不大清楚了。
好象rolemodel.com是個(gè)網(wǎng)站,上面有原代碼和一些基本設計的文檔。另一個(gè)來(lái)源可以到 是個(gè)不錯的文檔基地。
從HotDraw上我學(xué)到了什么是Framework,以及如何用rolemodel的方式來(lái)構造,這樣我就可以應用到其他的地方。順便說(shuō)一句,這個(gè)例子你絕對不會(huì )覺(jué)得小,只會(huì )覺(jué)得大,并且他還是真正的商用的Framework。
7。結合前面學(xué)到的設計模式你就可以很好的理解這些經(jīng)典的例子。
并且自己可以用他來(lái)實(shí)現一些簡(jiǎn)單的系統。如果可以對他進(jìn)行進(jìn)一步的修改,找出你覺(jué)得可以提高性能的地方,加上自己的設計,那就更上一個(gè)層次了,也就會(huì )真正地感到有所收獲。
8。好象以上談的跟Java沒(méi)什么關(guān)系,其實(shí)我們早就應該從單純的學(xué)習語(yǔ)言到真正的學(xué)習好編程的領(lǐng)域。
學(xué)習技術(shù)是沒(méi)有止境的,你學(xué)習第一種語(yǔ)言可能要半年時(shí)間,以后每種語(yǔ)言都不應該超過(guò)兩個(gè)月,否則你會(huì )覺(jué)得學(xué)習語(yǔ)言是包袱,是痛苦。 9。
學(xué)習是為了用的,是為了讓你的程序產(chǎn)生價(jià)值,把握住這個(gè)原則會(huì )比較輕松點(diǎn)。 沒(méi)有第10點(diǎn)了,因為沒(méi)有東西是十全十美的,。
我在Java 1.0正式問(wèn)世前就開(kāi)始學(xué)習Java,這么多年過(guò)去了,到現在我的Java學(xué)習歷程還沒(méi)有停過(guò)。
我閱讀原文書(shū),研究原始碼,撰寫(xiě)程序,自認為走得扎實(shí),不奢望一步登天。像我這樣老式的學(xué)習方式,顯然和現在的快餐主義背道而馳。
從許多讀者的來(lái)信和學(xué)生的反應中,我發(fā)現大多數的人對于Java的學(xué)習歷程都差不多是:因為公司需要使用Java來(lái)進(jìn)行服務(wù)器的計畫(huà),所以忙忙地學(xué)習Java語(yǔ)言,然后就開(kāi)始使用J2EE的API,開(kāi)始寫(xiě)起程序來(lái)了。如此急就章的學(xué)習方式,程序員基礎能力根本就不夠,對于對象導向精髓不能掌握,對于Java語(yǔ)言?xún)炔康倪\作機制毫無(wú)所悉,對API的整體連貫性懵懵懂懂。
當然,我們也不好因此責怪程序員,畢竟軟件技術(shù)變動(dòng)得太快。公司不可能給程序員足夠的訓練之后才開(kāi)始做計畫(huà)。
程序員一下子被指派使用A技術(shù),還沒(méi)弄懂A技術(shù)是怎么回事,又被指派使用B技術(shù),而且都是縫縫補補的方式邊學(xué)邊用,每次都像是全新的開(kāi)始,遑論技術(shù)能量的累積。我很慶幸的是,我不太有這樣的困擾。
因為我是資訊工程系出身(而且我大學(xué)時(shí)上課一向很認真),所以理論基礎穩固,學(xué)習新技術(shù)對我來(lái)說(shuō)不是難事。我就讀大學(xué)時(shí),周遭許多同學(xué)都瞧不起數據結構、程序語(yǔ)言、操作系統這些所謂「學(xué)院派」的課程,以為這些課程一點(diǎn)都不實(shí)用。
他們認為到了外面公司,這些信息科系所學(xué)的一切都派不上用場(chǎng),「只要會(huì )Visual Basic和數據庫就夠了」。這種偏差的心態(tài),恐怕會(huì )使得他們在知識經(jīng)濟時(shí)代吃足了苦頭。
另外還有一派同學(xué)很瞧不起程序設計工作,他們告訴我,像我這樣會(huì )寫(xiě)程序的人,未來(lái)進(jìn)了社會(huì )「還不是被他們這些走管理的人踩在腳下」。所以,他們很輕忽理工課程的學(xué)習,甚至還有人相當熱衷「成功學(xué)」,認為這是邁向成功的快捷方式,卻因此把學(xué)校的課業(yè)棄之不顧。
我不敢相信有人竟然如此地本末倒置。前一類(lèi)的人太過(guò)于短視近利,后一類(lèi)的人太過(guò)于好高騖遠。
我一直很不能理解這些人的想法為什么會(huì )這樣,或許是因為社會(huì )環(huán)境的風(fēng)氣使然。我很慶幸我到目前還沒(méi)被社會(huì )的大染缸給玷污了(最好這輩子都不要)。
我不認為我的學(xué)習方式是一種典范,但是一路走來(lái),倒也頗有進(jìn)展。許多讀者來(lái)信問(wèn)我的學(xué)習歷程,雖然我個(gè)人的學(xué)習方式不見(jiàn)得適用于每個(gè)人,但或許還有一些參考價(jià)值(特別是對于那些有志進(jìn)入信息行業(yè)的年輕學(xué)子),我想透過(guò)本文簡(jiǎn)短地敘述一下。
我一向是采用先深后廣(也稱(chēng)為Bottom-Up,Deep-First)的學(xué)習方式。比方說(shuō),當我在學(xué)A技術(shù)的時(shí)候,學(xué)到一半發(fā)現需要B技術(shù)的基礎,我會(huì )到書(shū)局找出一兩本B技術(shù)的書(shū),然后把A先擱著(zhù),開(kāi)始看起B技術(shù)的書(shū)。
甚至,我在技術(shù)書(shū)籍上看到不太熟悉的英文句構時(shí),我會(huì )找出一本英文文法書(shū)詳細讀過(guò)。這種先深后廣的學(xué)習方式,適合學(xué)生時(shí)代全面地自我能力提升,但不適合業(yè)界人士。
試想,老板要你開(kāi)發(fā)的ERP系統已經(jīng)延遲了,你怎有空研究J2EE原文書(shū)中的英文文法。先深后廣的好處是,學(xué)習很扎實(shí);缺點(diǎn)是有時(shí)候會(huì )偏離主題太多。
有一次我發(fā)現我原本是要學(xué)某軟件技術(shù),幾次「先深后廣」下來(lái),我居然看起老子的道德經(jīng)了。在技術(shù)上,我一直都是一個(gè)喜新厭舊的人,很少有軟件技術(shù)能讓我持續研究半年以上,我幾乎每隔幾個(gè)月就要換一次領(lǐng)域。
Java 能讓我持續這么久,也正是因為Java的領(lǐng)域廣。透過(guò)Java,我的技術(shù)視野變開(kāi)闊了。
這些年來(lái),我換過(guò)的 Java 相關(guān)領(lǐng)域包括了:虛擬機器、數據庫、企業(yè)運算、多媒體、2D/3D圖學(xué)、網(wǎng)絡(luò ).…..等。我的學(xué)習完全是興趣導向的,所以壓力并不大。
因為有興趣,所以我會(huì )很想充分理解一切細節。又因為理解,所以許多原本片片斷斷的知識都可以漸漸互相融會(huì )貫通,累積技術(shù)能量,理論和實(shí)務(wù)之間的藩籬被打破了,學(xué)習效率倍增。
我多年來(lái)的學(xué)習觸覺(jué)很敏銳,我常常會(huì )搶先一步學(xué)好有前瞻性的技術(shù)。比方說(shuō),Java還在beta時(shí)、UML還在0.8時(shí)、XML還在draft時(shí),我都已經(jīng)透過(guò)網(wǎng)絡(luò )下載技術(shù)文件回來(lái)每天抱著(zhù)猛讀了。
而在Java、UML、XML當紅之后,我已經(jīng)差不多把這些技術(shù)都摸熟了。至于該學(xué)什么技術(shù),我的判斷方式是以技術(shù)的優(yōu)劣來(lái)決定。
優(yōu)秀而有獨到之處的技術(shù)是我的最?lèi)?ài),雖然這類(lèi)的技術(shù)不見(jiàn)得會(huì )在市場(chǎng)上勝出,但學(xué)習這些技術(shù)所得到的啟發(fā),對于技術(shù)能量的累積與能力的提升會(huì )有相當大的助益。至于技術(shù)差,但市場(chǎng)需求甚殷者,我還是懶得碰。
(好吧!我承認我曾因為市場(chǎng)需求的緣故而學(xué)過(guò)MFC。越清楚MFC的技術(shù)細節,越是討厭它,這真是個(gè)不堪回首的經(jīng)驗。)
我通常只看英文技術(shù)資料,畢竟大部分第一手的技術(shù)信息都是以英文來(lái)傳播。所以我很早就開(kāi)始閱讀英文技術(shù)資料。
讀英文技術(shù)資料的好處是,就算沒(méi)有學(xué)到書(shū)中的專(zhuān)業(yè)知識,至少也累積培養了英文閱讀能力,我一直都是抱著(zhù)這樣的態(tài)度。一開(kāi)始是正襟危坐的看英文技術(shù)書(shū)籍,字典、翻譯機隨侍在側;幾年下來(lái),現在是躺著(zhù)看、趴著(zhù)看、很隨性地看英文技術(shù)書(shū)籍,因為看英文技術(shù)書(shū)籍變成一種習慣了。
現在,我可以用很快的速度吸收英文技術(shù)書(shū)籍的知識(有人叫我「吃書(shū)的機器」,我把這稱(chēng)號當作是一種恭維)。近年來(lái),我花在寫(xiě)程序的時(shí)間不多,因為時(shí)間對。
學(xué)習了一學(xué)期的Java課程,覺(jué)得是該總結自己的心得體會(huì )了。開(kāi)始學(xué)習任何一門(mén)課(包括java),興趣最重要。一直覺(jué)得自己在學(xué)計算機編程語(yǔ)言,學(xué)習了很多,但每門(mén)語(yǔ)言都停留在知識邊緣地帶,都沒(méi)深入到它們的精華部分,對它們的精華部分知之甚少,于是趁學(xué)校開(kāi)設這門(mén)課,并且有自己的老師講解,還有了上機的機會(huì ),比自己自學(xué)省事多了,于是鼓足信心,開(kāi)始了漫長(cháng)的java征途。
還記得我編寫(xiě)的第一個(gè)經(jīng)典程序“hello Word”。從那時(shí)起我已開(kāi)始走進(jìn)Java的世界。當時(shí)自己不是很理解為什么main方法一定要這樣來(lái)定義public static void main(String[] args),能不能不這樣寫(xiě)?問(wèn)了好多同學(xué),他們告訴我的答案是一樣的“java本身要求就是這樣子的”,但我自己不甘心,就進(jìn)行了下面的好多操作:把main改個(gè)名字運行一下,看看報什么錯誤,然后根據出錯信息進(jìn)行分析;把main的public取掉,在試試看,報什么錯誤;static去掉還能不能運行;不知道main方法是否一定要傳一個(gè)String[]數組的,把String[]改掉,改成int[],或者String試試看;不知道是否必須寫(xiě)args參數名稱(chēng)的,也可以把args改成別的名字,看看運行結果如何。 結果把Hello World程序反復改了七八次,不斷運行,分析運行結果,最后就徹底明白為什么了main方法是這樣定義的了。接著(zhù)在以后的學(xué)習中我也采用這樣的方法解決問(wèn)題,卻發(fā)現自己的速度比別人慢了好多,我就把自己的課余時(shí)間也分一部分給了java。
因為基礎是最重要的,只有基礎牢固才有可能對后面的學(xué)習有更加深刻的認識!
學(xué)習一門(mén)新的語(yǔ)言,參考書(shū)是離不開(kāi)的。聽(tīng)老師說(shuō)訂的教材偏難,不適合我們初學(xué)者,于是我在圖書(shū)館借了參考書(shū)(一本篇幅較短的入門(mén)書(shū)來(lái)學(xué)習那些最簡(jiǎn)單、最基本的東西,包括學(xué)習Java語(yǔ)法等)。同時(shí),對一個(gè)最簡(jiǎn)單的程序也應該多去調試,多想想如果改動(dòng)一下會(huì )出現什么結果?為什么必須那樣寫(xiě)?多去想想這些問(wèn)題然后去操作,會(huì )讓你有更多的收獲。這樣反復地思考是很有用的。
在學(xué)習Java的語(yǔ)法時(shí),Java的語(yǔ)法是類(lèi)似c語(yǔ)言的,所以學(xué)習的比較輕松。唯一需要注意的是有幾個(gè)不容易搞清楚的關(guān)鍵字的用法,public,protected,private,static,什么時(shí)候用,為什么要用,怎么用,和同學(xué)一起討論了好久才得以解決。
在學(xué)習Java的面向對象的編程語(yǔ)言的特性。比如繼承,構造器,抽象類(lèi),接口,方法的多態(tài),重載,覆蓋,Java的異常處理機制。對于一個(gè)沒(méi)有面向對象語(yǔ)言背景的人來(lái)說(shuō),我覺(jué)得這個(gè)過(guò)程需要花很長(cháng)很長(cháng)時(shí)間,因為學(xué)習Java之前沒(méi)有C++的經(jīng)驗,只有C語(yǔ)言的經(jīng)驗,花了很長(cháng)時(shí)間,才徹底把這些概念都搞清楚,把書(shū)上面的例子反復的揣摩,修改,嘗試,把那幾章內容反復的看過(guò)來(lái),看過(guò)去,看了很多遍,才徹底領(lǐng)悟了。
開(kāi)始熟悉Java的類(lèi)庫。基礎類(lèi)庫里面的類(lèi)非常非常多。據說(shuō)有3000多個(gè)。但是我真正使用的只有幾個(gè),比如說(shuō) java.io.*; java.util.*; java.sql.*;等。
在學(xué)習Java的過(guò)程中我得出這樣的結論:
1.學(xué)習中,要養成良好的習慣(寫(xiě)括號時(shí)要成對,字母大小寫(xiě)要區分,單詞拼寫(xiě)要準確)。
2.在學(xué)習的過(guò)程中,最好不是僅僅停留在java表層,不是抄書(shū)上的例子運行出結果就可以。要注意,即便對一個(gè)簡(jiǎn)單的例子也要有耐心去琢磨、調試、改動(dòng)。
3.在學(xué)習的過(guò)程中一定要動(dòng)手做、試著(zhù)寫(xiě)代碼,而不是抱一本書(shū)看看就行。很多東西和體會(huì )必須自己動(dòng)手才能真正屬于自己。
4.在 Java 的學(xué)習過(guò)程中,可能會(huì )遇到形形色色的問(wèn)題不容易解決,應多去專(zhuān)業(yè)論壇了解相關(guān)的知識,書(shū)本上的知識有限。要會(huì )從網(wǎng)上搜索有用的信息 加以整理,促進(jìn)學(xué)習的深入和知識水平的提高。
看了好多網(wǎng)上課程,說(shuō)學(xué)到一定程度要嘗試著(zhù)自己做東西,但覺(jué)得自己僅僅經(jīng)過(guò)一學(xué)期的學(xué)習,還遠遠不夠,希望自己在以后學(xué)習中繼續努力,能夠真真正正擁有一門(mén)編程語(yǔ)言,對自己今后的發(fā)展起到作用。在學(xué)習java語(yǔ)言的同時(shí),也讓我學(xué)會(huì )了如何來(lái)發(fā)現問(wèn)題,如何解決問(wèn)題,怎樣有效的學(xué)習等等,相信會(huì )對我一生都有幫助。
網(wǎng)上有很多java的基礎教程,但是這套教程只是基礎。
要學(xué)會(huì )真正到j(luò )ava就要一套完整到j(luò )ava視頻教程。完整的java教程可以看看IT學(xué)習聯(lián)盟的<>。
零基礎Java就業(yè)班包括Java基礎 進(jìn)階 高級 項目。是一套完整的Java視頻教程。
關(guān)于如何學(xué)習java,我剛才看到一篇很不錯的文章,是一個(gè)農民工介紹自己如何自學(xué)java,并找到j(luò )ava的工作,里面介紹了他的學(xué)習方法和學(xué)習過(guò)程,希望對你有幫助。 我是一名地地道道的農民工,生活在經(jīng)濟落后的農村,有一個(gè)哥哥和一個(gè)弟弟,父母都是地道的農民,日出而作,日落而息,我從小到大學(xué)習一直很好,從小學(xué)到高一都,成績(jì)在全級一直名列前茅,這樣我也順利了考上省的重點(diǎn)高中,然而,每個(gè)學(xué)期開(kāi)學(xué)是家里最為難的時(shí)候,每次交學(xué)費都讓父母發(fā)愁許久,家里為了給我籌錢(qián)讀書(shū),都借了不少錢(qián),才讓我讀上高中。
我知道我讀到高中家里已經(jīng)欠了好多債,為了減輕家里的負擔,我選擇了退學(xué)。 2009年我高一退學(xué),為了給家里還債,干過(guò)建筑工地的小工,搞過(guò)塑料制品加工,送水工等等。
很工資都很低,一個(gè)月也就1000多,加上加班費一個(gè)月能拿2000多一點(diǎn),我每個(gè)月都向家里寄回800-1000元,到了2011年末,一次偶然的機會(huì )我接觸了Java,聽(tīng)說(shuō)Java的前景挺不錯,工資相對于我一個(gè)農民工來(lái)說(shuō)簡(jiǎn)直是天文數字,于是我在新華書(shū)店買(mǎi)了幾本Java的書(shū),盡管白天辛苦工作,晚上回來(lái)還是堅持看書(shū),但有于基礎太差很多都很不明白,但還是堅持看,一有看1-2個(gè)小時(shí)Java的書(shū),看著(zhù)看著(zhù)許多基礎都慢慢的學(xué)會(huì )了,但那些比較難的還是看不懂,后來(lái)還買(mǎi)了有些關(guān)于框架的書(shū),還是看不懂,這樣斷斷續續的持續了半年多,覺(jué)得自己Java的基礎都差不多懂了,但框架還是看不懂,還有最缺的項目經(jīng)驗,看了很多招聘Java程序員的簡(jiǎn)介都要項目經(jīng)驗,相對我一個(gè)農民工來(lái)連框架都弄不明白,想找一份Java工作對我來(lái)說(shuō)簡(jiǎn)直是奢侈。我只想學(xué)Java,并不敢想以后能從事Java的工作。
一次,在百度上看到一篇讓我很鼓舞的文章,是一個(gè)Java高手介紹在沒(méi)有基礎的朋友怎么自學(xué)入門(mén)Java,文章寫(xiě)的很好,包含了如何學(xué)習,該怎么學(xué)習,他提到一個(gè)方法就是看視頻,因為看書(shū)實(shí)在太枯燥和費解的,不少是我們也看不懂,這點(diǎn)我真的很認同,我自己看書(shū)都看了很久才學(xué)會(huì )基礎。曾經(jīng)有想過(guò)參加培訓,但是上萬(wàn)元的培訓費讓我望而卻步,我工資這么低,每個(gè)月還有向家里匯錢(qián),加上城市消費比較高,雖然每個(gè)月只有幾百剩下,但是相對于上萬(wàn)萬(wàn)學(xué)費和四個(gè)月的吃住費用逼我連想不敢想。
于是我決定看視頻,我就去搜索Java的視頻,雖然我零星的找到一些Java的視頻,但是都不系統。最重要連項目都沒(méi)有。
后來(lái)我找到一份很好的視頻,是IT學(xué)習聯(lián)盟這個(gè)網(wǎng)站一套視頻叫<>,網(wǎng)址:和css怎么樣 如何可以的話(huà) 上手jsp是很快的
聲明:本網(wǎng)站尊重并保護知識產(chǎn)權,根據《信息網(wǎng)絡(luò )傳播權保護條例》,如果我們轉載的作品侵犯了您的權利,請在一個(gè)月內通知我們,我們會(huì )及時(shí)刪除。
蜀ICP備2020033479號-4 Copyright ? 2016 學(xué)習?shū)B(niǎo). 頁(yè)面生成時(shí)間:3.508秒