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