[入門] 我在2001年之前是C/C++陣營(yíng), 有C和面向?qū)ο蟮幕A(chǔ), 后來轉(zhuǎn)到Java ,發(fā)現(xiàn)沒有指針的Java真是好簡(jiǎn)單, 另外Java 的類庫(kù)好用的讓人哭啊。 后來我就看《Thinking in Java》 ,《 Java 核心技術(shù) 》, 感覺也不吃力。
如果我之前沒學(xué)過別的語(yǔ)言,或者半路出家轉(zhuǎn)到計(jì)算機(jī)行業(yè), 我不會(huì)先看上面那兩本, 相反我會(huì)選《Head First Java》, 這本書非常適合零基礎(chǔ)的小白, 讀起來輕松搞笑, 不信你看看第一頁(yè) 但是光看書也挺無趣的,不妨和視頻結(jié)合著看, 我覺得傳智播客的Java基礎(chǔ)視頻很不錯(cuò) (唉, 給傳智打了個(gè)廣告), 網(wǎng)上一搜就有, 真搜不到找我吧(QQ 14703250) 注意:視頻的好處就是能看到敲代碼的過程, 代碼是活的, 這點(diǎn)很爽。 如果視頻只是按PPT講編程, 果斷扔掉。 書也有書的好處,能寫成書的, 肯定是作者經(jīng)過系統(tǒng)化思考,梳理才能形成的東西, 所以系統(tǒng)性比較強(qiáng)。 書還有其他優(yōu)點(diǎn), 例如可以隨便的翻, 找到重點(diǎn)反復(fù)的看。 所以混合著看經(jīng)典書+優(yōu)秀的視頻 應(yīng)該是最好的入門。 Java 入門, 我不會(huì)去上培訓(xùn)班,白白浪費(fèi)錢 ,自學(xué)就夠了。 自學(xué)過程中如果有實(shí)戰(zhàn)經(jīng)驗(yàn)豐富的高人指導(dǎo)一下, 給我繪出路線圖, 指出攀登的方向,哪些地方有陷阱, 哪些地方不應(yīng)該浪費(fèi)時(shí)間, 我的自學(xué)就可以減少摸索,少走彎路, 很不幸, 我當(dāng)年沒有遇到, 如果時(shí)光倒流, 我會(huì)想辦法找一個(gè)來指導(dǎo)我。 [實(shí)踐] 軟件行業(yè)的一大特點(diǎn)就是光看不做永遠(yuǎn)都學(xué)不會(huì),編碼不到10萬行都不好意思出去打招呼。 所以實(shí)踐,實(shí)踐,實(shí)踐! 在校期間,我還是會(huì)盡可能的去找項(xiàng)目做(參見我的另一篇文章《從現(xiàn)在開始豐富你的簡(jiǎn)歷》, 回復(fù)“簡(jiǎn)歷”查看) , 實(shí)在沒找到,也可以先把基礎(chǔ)打好 我上大學(xué)的時(shí)候用的是嚴(yán)蔚敏的《數(shù)據(jù)結(jié)構(gòu)》, 當(dāng)時(shí)我也把習(xí)題都做了一遍,考高級(jí)程序員的時(shí)候, 成績(jī)非常好。 后來我知道了一本更好的算法入門書《算法》, 如果時(shí)光能夠重來, 我還是會(huì)這本書上提到的所有數(shù)據(jù)結(jié)構(gòu)和算法用Java 都實(shí)現(xiàn)一遍, 課后作業(yè)也爭(zhēng)取都做一遍。 這是個(gè)非常重要的訓(xùn)練,因?yàn)槲抑溃?真的做了, 就會(huì)發(fā)現(xiàn)工作以后只要不是設(shè)計(jì)算法, 基本的數(shù)據(jù)結(jié)構(gòu)沒有能難住我的。 【Java SE】 對(duì)于Java集合框架, 不但要學(xué)會(huì)用, 我還會(huì)嘗試著實(shí)現(xiàn)一遍,List, ArrayList, Set ,HashSet, Map ,HashSet 等等, 要是不知道怎么寫, 看看JDK的源碼就可以了, 那里有最好的老師。 實(shí)現(xiàn)一遍能更好的明白面向?qū)ο蟮脑O(shè)計(jì), 接口,抽象類, 具體類的關(guān)系, 怎么分離職責(zé),會(huì)學(xué)習(xí)到設(shè)計(jì)模式中的模板方法, Iterator 等 。 值得一提的是Iterator, 很有趣, 我還清楚的記得那一年自己實(shí)現(xiàn)集合框架中 Iterator 的時(shí)候的激動(dòng)心情啊 :-) 在實(shí)現(xiàn)Java 集合框架的時(shí)候, 可以順便把泛型也學(xué)了, 不學(xué)不行,要不然實(shí)現(xiàn)不了啊。 Java 世界里,萬事萬物都是對(duì)象, 大家都知道封裝,繼承,多態(tài), 但是僅僅了解這些只是入了門, 不可能做出真正的面向?qū)ο蟮某绦颉?nbsp; 有一本經(jīng)典的書《敏捷軟件開發(fā), 原則,模式,實(shí)踐》,里邊詳細(xì)的講解了一個(gè)薪水支付案例,是迄今為止最好的面向?qū)ο笤O(shè)計(jì)的例子 我會(huì)用Java 把它實(shí)現(xiàn)一遍, 真正的體會(huì)一下OOD, 了解怎么才能把合適的責(zé)任分給合適的類, 什么叫面向接口而不是面向?qū)崿F(xiàn)編程, 什么是優(yōu)先使用組合而不是繼承。 對(duì)于Java線程, 重點(diǎn)還是理解概念, 因?yàn)槲抑涝谝院蟮墓ぷ髦校ǔ菑氖孪到y(tǒng)級(jí)編程) ,自己寫線程/線程池的機(jī)會(huì)是非常罕見的,都被類庫(kù),框架給封裝好了。所以重點(diǎn)是理解, 看書的話就當(dāng)然是《Java并發(fā)編程實(shí)戰(zhàn)》 ,一大群大牛寫的啊。
項(xiàng)目實(shí)戰(zhàn)中呢,也就是讀取個(gè)property 文件, xml 文件。 我還是重點(diǎn)去理解概念和設(shè)計(jì)吧。 不過自己寫個(gè)簡(jiǎn)單的xml 解析器倒是不錯(cuò)。 至于 AWT, Swing , 簡(jiǎn)單看看就行了, 我不會(huì)去深入研究, Java 是典型的服務(wù)器端的語(yǔ)言, 開發(fā)客戶端程序的極少, 你想想, 你用Swing/AWT搞個(gè)桌面程序出來, 還得讓客戶裝個(gè)JRE才能運(yùn)行, 是不是有點(diǎn)過分 ? 據(jù)我所知,也即是銀行的一些應(yīng)用在用Swing ,AWT了。 有人可能說 Applet, 它曾經(jīng)流行過, 現(xiàn)在早都沒人用了。 所以我不會(huì)在Swing和AWT上浪費(fèi)時(shí)間。 |
|