爲什麼看這本書?
Java 四大名著之一,看完《Effective Java》自然想看下這本書。
書的整體情況
900 多頁,書中的內容都是 Java 編程語言中的重難點集合。讀完本書,花了兩個星期, 10 幾個小時。
書提到了這些知識模塊:
- 類與對象
- 操作符
- 執行流程的控制
- 初始化與清理
- 訪問權限控制
- 複用類
- 多態
- 接口
- 內部類
- 對象持有與清理
- 異常處理
- 字符串
- Class類與對象的介紹
- 泛型
- 數組
- 容器
- I/O
- 枚舉
- 註解
- 併發
- GUI
適合閱讀人羣
這本書不適合零基礎入門的朋友看。原因很簡單,一上來就看一門編程語言的重難點知識,要麼記不住,要麼理解不了。
有一定開發經驗的 Java coder,看了應該會有所收穫。
最大的感觸
- 好書,還會二刷、三刷、四刷的書。示例代碼豐富,見解深刻。
- 一開始我以爲這本書應該跟《Effective Java》差不多,抱着應該很快能看完的心態就開始了。結果不是那麼回,看着看着發現它裏面都是 Java 的重難點,想看懂一點都不輕鬆。
- 書中提到了很多原理性的問題,並且多處與 C++ 等其他語言實現相同功能的對比,列出了好壞。在 Java 中能看到很多 C++ 的影子。
- 泛型這章,讓我印象深刻,尤其提到了 Java 爲了保證移植性,是基於類型擦除實現的泛型,這種實現方式帶來了很多限制。如在編碼過程中,T 就可以理解爲一個 Object,無法顯式地調用 T 裏面的方法;C++ 可以。
- 寫代碼要有種極客精神,追求那種極致。比如 Java 5 之前是沒有枚舉的,對於 Java 語言本身的發展是沒有什麼阻礙的,但是有了枚舉,就可以更加優雅乾淨地解決問題。還吸收了一些枚舉內置的方法,如何隨機獲取一個枚舉類型。
- 書中講了很多 Java 限制,如註解不支持繼承、枚舉不支持繼承。以及這些限制對比其他編程語言,帶來好處與不足。
- 書中也談到了性能優化,寫了測試代碼,通過結果給出了使用建議:不同容器適合的不同場景、對象創建銷燬帶來的性能影響、類的自動拆裝箱帶來的性能影響等...
- GUI 這塊,提到了 awt 的槽糕設計,也讚了一下 swing,applet 基本也廢棄了。我個人觀點是能用 swing 開發出自己想要的小工具足矣,企業中已基本不用這塊技術。書中提到 Swing 天然支持鍵盤導航,我才知道我喜歡多年這個功能叫鍵盤導航,就是在軟件內不用鼠標可以完成所有操作。
- 看到併發這塊,讓我想到一些問題,如何停掉一個線程?何謂阻塞?如何優雅停?如何強制停?如,如何讓下面線程停下?
new Thread(() -> {
while(true) {
}
}).start();
- 併發這塊,沒啥可說的,書中已做推薦。
- 我最近處理一些複雜的問題,看到書中提到了一個觀點"讓簡單的事情變得容易,讓困難的事情變得可行",很有感觸。思從深而行從簡,真正的高手能雲淡風輕地用最簡單的方法解決最複雜的問題。啥時候能把困難的事情,做到簡單易用,就能找到成就感了。
【Java面試題與答案】整理推薦