個人經(jīng)驗分享:Java Learn Steps
我個人的經(jīng)驗,學(xué)習(xí)java應(yīng)分以下幾個階段:
java的語法學(xué)習(xí)
面向?qū)ο笥^念的建立
java基本類庫的學(xué)習(xí)
學(xué)習(xí)設(shè)計模式
應(yīng)用設(shè)計模式
經(jīng)過大量的實踐,可以設(shè)計模式
以上六個階段,其中前三個階段是針對java的,但java中,在很多設(shè)計模式的應(yīng)用,同時有很多功能都支持設(shè)計模式,所以不懂設(shè)計模式的人是不會很好的應(yīng)用java做開發(fā)的。第4、5個階段的學(xué)習(xí)在前三個階段的基礎(chǔ)上,學(xué)習(xí)、應(yīng)用成功的經(jīng)驗。從而進(jìn)入第六個階段,在軟件設(shè)計這個領(lǐng)域盡情發(fā)揮。本人受能力所限,還處在第4個階段的學(xué)習(xí)過程,所以會對前四個階段說明。第五、六個階段只是我根據(jù)我自己的知識做的推斷,還沒有經(jīng)驗無法說明。
在對這些學(xué)習(xí)階段進(jìn)行闡述之前,我先說一下我的學(xué)習(xí)方法。在學(xué)習(xí)新的知識時我通常是按以下三個階段學(xué)的理論學(xué)習(xí)。通過對理論的學(xué)習(xí),盡量了解新知識的概念;學(xué)習(xí)之后只是粗略的了解概念,不能和實際很好的結(jié)合。
演繹階段。根據(jù)理論學(xué)習(xí)的知識,考慮在什么場合下可以應(yīng)用這個新知識,哪些地方已經(jīng)應(yīng)用了這個概念,建立對新知識的感性認(rèn)識。
歸納階段。從一個更深的層次理解理論。
以下根據(jù)java的六個學(xué)習(xí)階段闡述我的體會,而每個階段將按照理論學(xué)習(xí)、演繹和歸納三個小階段討論。
java語法的學(xué)習(xí)
語法學(xué)習(xí)的理論學(xué)習(xí)階段是最容易的階段,70%以上的java書主要介紹的就是java語法,隨意買來一本,通讀一下就可以,主要理解以下內(nèi)容:(1)數(shù)據(jù)類型,(2)操作符,(3)控制流程,(4)類和類再生,(5)包和接口,(6)異常操作。
在理論學(xué)習(xí)階段,不必過于注重細(xì)節(jié),只要對java的基本語法有一個整體認(rèn)識,能讀懂示例的源代碼就可以了。
下一步就是演繹階段,應(yīng)用所學(xué)的語法知識,編寫簡單的程序。最好憑自己的記憶,將各語法要點都用一遍(編寫代碼最好用notepad),對自己不熟悉的語法要重新閱讀,用編譯器去檢查語法錯誤。這個階段的目標(biāo)是脫離書本以及java
API能編寫簡單的程序,閱讀一個java源代碼能說出執(zhí)行結(jié)果。
完成這個階段的學(xué)習(xí),參加scjp的考試,應(yīng)該獲得較高的成績。
在演繹階段的基礎(chǔ)上,根據(jù)自己犯過的錯誤,總結(jié)一下java的難點。重新閱讀語法書,將一些自己不是很清楚的概念重新整理一下,這時你對java語法的理解比第一次閱讀時更深了。
我在剛開始學(xué)java時,只是粗略的看看語法書,就開始編程序了,遇到不懂的就重新閱讀語法書,這樣,完全可以成為一個合格程序員,但是當(dāng)我成為team
leader時,為了培訓(xùn)組員java編程,卻發(fā)現(xiàn)自己脫離了java語法書和Java
API,竟然會的不多(java集成開發(fā)工具有提示功能),為了培訓(xùn),我又重新學(xué)了一遍java語法,很有收獲。
其實一個優(yōu)秀的程序員,不但要能寫出好的程序,更重要的是,對所寫的程序能說的清楚:
(1)說清楚程序的功能(2)說清楚程序的結(jié)構(gòu)。而說清楚程序的結(jié)構(gòu)的基礎(chǔ)是對java的語法要熟悉。想成為優(yōu)秀的程序員,一定要在學(xué)習(xí)語法的基礎(chǔ)上,不斷實踐,不斷總結(jié),最終能脫離語法書,將java語法系統(tǒng)的講解清楚。
曾經(jīng)面試過一些java程序員,我出的題目是在使用java時,經(jīng)常用到哪些類,在哪個包里。很少有人能答好,甚至有人做了2年java程序都沒有回答出,他們會用java,但必須依賴工具(指java集成開工具),我覺得他們可以編寫出程序,但不能編寫出特別好得程序。
我認(rèn)為作為java程序員必須掌握java類庫的兩個包:java.lang和java.util這兩個包。java.lang包提供的是java編程要用到的基本類包,java程序員天天在用,無非是看別人如何用,自己就如何用,但很少有人去總結(jié)一下,比如String
和StringBuffer這兩個類有什么差別,應(yīng)該有很多java程序員說不出來。另外Vector和HashMap這兩個類大家都在用,有多少人能說清楚Vector和HashMap繼承了哪些類,實現(xiàn)了哪些接口呢。
理論學(xué)習(xí)。認(rèn)真閱讀java
API的以下內(nèi)容:java.lang包中的String ,StringBuffer,Number,Double,F(xiàn)loat,Byte,Short,Integer,Long,Character,Boolean,Process,Runtime,System,Object,Cloneable,Class,ClassLoader,Thread,ThreadGroup,Runnable,Package類或接口。java.util包中的Collection,list,Set,ArrayList,LinkedList,Hashset,TreeSet,Iterator,Map,SortedMap,HashMap,TreeMap,Comparator,Arrays,Enumeration,Vector,Stack,Dictionary,Hashtable,Properties,StringTokenizer,BitSet,Date,Calendar,Locale,Random,Observer,Observable類和接口。主要理清楚這些類或接口的繼承關(guān)系、主要功能。
演繹階段。通過閱讀代碼,練習(xí)編程,學(xué)習(xí)并應(yīng)用這些類和接口。其實這些類的大部分是經(jīng)常用的,無非對這些類和接口說不清楚。在這些類中,對java.lang和java.util包中的類,最好將各個方法練習(xí)使用一次。而對java.util包中Collections
framework中的類,最好理清楚各個類和接口之間的關(guān)系。