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