1. 程式人生 > >論Java如何入門

論Java如何入門

前言:

我學習Java也有一年多了,雖然現在還是個菜鳥,但是對於Java的基本程式設計還是學會了些。這篇文章就是我這大半年學(踩)習(過)經(的)驗(坑)的一個總結,希望對於入門者有一些幫助吧。

學習程式語言的方法無不外乎三種:讀書,程式設計,思考。



關於讀書:

Java領域有很多很多的大部頭經典論著,這些書籍往往令初學者感到既頭疼又迷茫。那麼初學者首先應該讀什麼書呢?我推薦的是《head first Java》,這本書非常之適合初學者。書裡用圖文結合的方法形象地闡述類、方法、繼承、實現等java中的概念。這本書的中文譯本也很棒,能感受到譯者將書裡原來就有的段子用心地改編成了中國版本。我也是受到別人安利才讀的這本書,我所就讀的學院軟體工程相關課程的老師還將此書作為推薦書籍介紹給我們。




關於如何讀這本書,我認為:

不要太急。博主當初覺得這本書挺簡單淺顯的,所以想早點讀完然後去攻讀《think in Java》這樣的大部頭,結果現實給了我響亮的一耳光。這本書語言雖然淺顯,每頁所分佈的知識點也不多,但是其中很多地方都有很多思考空間的。讀的太快的結果就是思考不夠,後來程式設計時遇到問題往往想不到問題該如何解決。博主當年僅用了10天就把600頁的《head first Java》讀完了,並且還像模像樣得做了兩分十幾頁的讀書筆記……然而……並沒有什麼卵用。我的一些同學甚至用一個學期才讀完這本書,但是我們在程式設計上並沒有什麼差距[哭],甚至可能我還更菜些……再哭。

所以我推薦的正確讀書姿勢是

  1) 第一遍主要去熟悉Java中的概念和語法,對於一些讀不懂的細節可以暫時不去管它。

  2) 對於Java中的一些重要概念,如物件、包、類、方法、繼承、封裝、多型、實現等要去了解和思考。

  3) 書裡有很多質量很高的程式碼,建議親自去實現一遍。

  4) Java的API是一種特別棒的東西,Java豐富的API也是Java應用如此廣的原因之一。我建議能夠瀏覽一遍Java的API,以有一個大致瞭解。瞭解Java的API有兩種途徑,一種是通過官方的文件,另一種是通過網上的API總結網站。關於第一種,我曾經上傳過API文件,泥萌可以去下載(包括head first java我也有上傳過)。關於第二種,我推薦一個網址http://www.howsoftworks.net/javaapi/。這個網址總結了Java中的常用API方法,配以簡單的程式碼,理解起來很容易。不過沒有官方文件那麼細緻全面。



如果你確定自己讀透了這本書,就可以嘗試其他書了。

推薦兩本:

《think in Java》,這本書又大又全,適合深入理解Java。

《effective Java》第二版,這本書主要講了一些Java中的程式設計經驗,一共有78條,不過對於初學者用處不大,適合已經從事實際工作的人去閱讀。

(同樣的,這兩本書我也都有上傳,都可以去下的)



關於程式設計

讀書一整天, 不如程式設計一小時。如果光讀書不去實戰的話,一天下來,收穫能有二成就謝天謝地了。關於程式設計,首先是把《head first Java》裡的專案都練一遍。然後呢,我再來推薦幾個OJ網站。ACM的題對於普通程式設計學習者來說相對較難,而且ACM的題主要以演算法為主,並不是很適合普通人學習。我推薦的網站有四個:


1) LeetCode 【http://www.lintcode.com/】。LeetCode是最好的中文刷題網站,支援Python、C++和Java三種語言。涉及演算法、資料結構、字串等多種知識點,建議Java初學者可以配套練習LeetCode網站中的入門/簡單的題,這些題的可以在網上找到詳細的講解,我也寫過幾篇LeetCode解題分析文章(歡迎關注我[恬不知恥的笑臉])

(http://www.jiuzhang.com/solution/ 這個網站上有LeetCode上各題的答案程式碼,可供參考)


2) LintCode 【https://leetcode.com/】Lintcode聽起來和LeetCode很相似,在某種程度上確實挺相似233,LeetCode是英文網站,題目總體難度高於LeetCode,並且測試樣例也比LeetCode上更……更噁心人……,不過我不建議初學者刷LeetCode(畢竟提交錯誤程式碼是會影響accepted rate的,而且有許多公司的面試業會關注你的LeetCode情況,萬一太難看就實在太尷尬了。如果覺得自己能力足夠了就去刷吧少年!


3)牛客網 【https://www.nowcoder.com/】,牛客網貴在全,牛客網總結了各個大公司的面試題、Lintcode上的題,還有《劍指offer》裡的程式設計題乃至ACM比賽題等,並且除了程式設計之外,還有知識點的選擇題,倒是很適合去學習Java中的基礎知識。


4)碼農谷線上程式設計 【http://www.manonggu.com/biancheng/】,這個網站也有刷題乃至於程式設計比賽的渠道,但是我更推薦的是線上程式設計這個功能。你可以在網站上試執行簡單程式碼,不必費力地去載入IDE。



其實關於刷題網站不必太糾結,都刷也不是不可以(比如我就是啦,每個網站都有賬號,想刷哪個刷哪個),真正的難點在於”堅持“,堅持去刷題,遇到問題去思考,去搜索,去理解,不放棄。這才是最難的。我毅力就屬於不上不下的那種,現在網站了還有幾題處於 ”我做了但沒做出來然後就不想做了於是題目就一直耗在那兒“ 的狀態。

另外,刷題之餘,也可以嘗試著去寫部落格,用來理清自己的思路,也可以加深對知識的理解。



關於思考

思考這東西我真不知道怎麼講,所以乾脆就不講了吧23333(逃……



總結

Java這門語言其實學起來不難,至少比C++好多了orz。在讀完入門書、網上刷題之後,還是要練一些較大的專案來提高水平的。可以去GitHub上學習一些優秀程式設計師的優秀程式碼。

嚶嚶嚶,你都看到這裡了,不該給我點個贊關個注啥的麼。


最後講個笑話:Why do Java developers wear glasses? Because they cann't C# (see sharp).