15年8月份買了一本Java編程思想第四版中文版。之所以買中文版是因為我試讀了同事的英文版發現自己英語水平還是有限,單詞雖然認識,但對很多句子把握不準,這樣看書太慢了,要理解英文還要理解技術有些hold不住。買了之后斷斷續續的看到現在,看了400多頁了,看到了泛型一章。從15年8月份到元旦,中間還看了本周志明著的《深入理解java虛擬機-JVM高級特性與最佳實踐》對JVM有了初步的了解。對于內存布局、垃圾回收、類加載、字節碼等概念不再那么模糊。
Java編程思想一書已經讀了正好一半了,很有感觸。想在這里寫下來分享給那些像我這樣想看這本書卻遲遲不敢開始的人們。
1)Java編程思想這本書給我的最大印象是介紹技術比較詳細而深入,不僅告訴你怎么做,而且會說為什么Java是這樣做的。作者Bruce Eckel也是C++編程思想的作者,對C++和Java的認識都是大師級的,所以他經常會對比Java和C++,告訴你Java都替程序員避免了C++的哪些坑,某些實現Java比C++好在哪里,又差在什么地方。這樣的講述其實就像在跟大師對話一樣,不但能學到Java的知識,還能學習大師的思維。
2)看這本書時,一定要把書中的例子源碼下載下來,自己真正的跑例子,有什么疑問直接可以通過修改例子驗證自己的想法。這比單純的看書學習效果是要好非常多的。
3)雖然網上很多人說這本書是入門級的,初學者必讀。但我不推薦沒有Java基礎,想學習Java的人通過這本書入門Java。因為這本書講得太詳細,太厚了,很多的內容不只是基礎,拿這本書入門可能會令人感到沮喪。找一本兩三百頁的書,或者從網上看一些Java入門的視頻是比較好的選擇。
4)上面也說到了,這本書里一些內容不是入門知識,需要對Java有一定的認識以及足夠多的研究之后才能弄懂書中的一些內容。對我而言,本書的泛型一章中的一些內容我看得暈暈乎乎的,只能理解泛型的大概,沒能再深入。所以,看這本書時,我的建議是:如果覺得書中一些地方挺難懂,也要硬著頭皮讀下去,書中例子認真研究,至少都看懂,跑一遍。實在不懂的,查資料也搞不懂的,先跳過去,等讀第二遍、第三遍的時候說不定會有恍然大悟的感覺。
5)看這本的中間我還看了一本書《深入理解Java虛擬機-JVM高級特性與最佳實踐》,收獲非常大。而且我通過讀《深入》這本書養成了一個好習慣:有些內容讀一遍很多不大懂;但第二天讀第二遍的時候輕松了不少,理解了不少;過幾天再讀第三遍的時候發現都能懂了!所以在讀《Java編程思想》的時候我也用了這種讀書方法,一遍讀不懂的,讀兩遍,過幾天再讀一遍。這樣讀下來,發現雖然書讀的比較慢,但理解的比較好,收獲很大。
6)還有一點是,讀書的時候要相互對照,比如閱讀《Java編程思想》的持有對象一章的時候,我會對照《深入理解Java虛擬機》一書中的類加載一章以及JVM內存布局與對象創建的章節。這樣理解起來,Java語言層面的東西理解了,JVM層面的知識也知道了。效果非常好。
另外,很多人說技術更新太快,讀書都是比較過時的東西,最好是去官網看文檔。我同意這個觀點,我也會去看文檔。但是讀書還是很有必要的,為什么呢?在我看來,讀書不僅能學到想要的技術,更重要的是書里的文字都是作者精心完成的,是作者思想的精華,讀好書就像在跟大師交流,你能學習到大師們的思考方式,獲得大師們才有的眼界。這是看文檔得不到的。當然,不能買太過時的書。盡量買大師寫的、最新版的。吐槽一下:坐落于五道口的國內某一流大學里的一個出版社經常出一些技術書,大家要擦亮眼睛,他們很會抄襲,那種書就是為了掙錢。買書盡量買NB的個人的,那是作者的心血,都是精華。一大堆人寫的,算了吧,那是書嗎?知識的堆積而已,根本沒有思想在里面。當然,我不否認那里有NB的人寫了NB的書,我只是吐槽一下鳥大了什么林子都有,買書要擦亮雙眼。