天天看點

【大學四年自學Java的學習路線】寫了一個月,這是一份最适合普通大衆、非科班的路線,祝你零基礎快速找到一份滿意的工作(3)

《Java程式設計思想》無疑一直都會被大力推薦,可是第四版的出版時間竟然早在 2007 年,全書大部分的代碼是基于 JDK 1.5 完成的。如今什麼年代了?

告訴你一個好消息,《Java程式設計思想》的作者 Bruce Eckel 在 2017 年的時候釋出了第五版,沒想到吧?為什麼在網上都看不到這本書的消息呢?因為改名了,而且隻有電子版。

這本書的所有源代碼已經開源在 GitHub,傳送門:

https://github.com/BruceEckel/OnJava8-Examples

如果英語水準像我一樣菜,看英文版比較費勁,可以在 GitHub 上檢視大嬸們的譯本,傳送門:

https://github.com/LingCoder/OnJava8

如果英語水準還不錯,可以自行購買電子版的《On Java 8》,雖然比較貴。

2)《Java 核心技術卷一》

《Java核心技術卷一》是唯一可以和《Java程式設計思》媲美的一本 Java 入門書。單從技術的角度來看,前者更好一些。但上升到思想層面嘛,自然後者更好,兩者的偏重點不同。

思想不會變,是以《Java程式設計思想》還停留在第 4 版(2007 年);而技術是要更新疊代的,是以《Java核心技術卷一》來到了第十版(2016 年)。

我們來看一下《Java核心技術卷一》第十版的大綱。

前九章:包括 “Java 程式設計概述”、“Java 程式設計環境”、“Java 的基本程式設計結構”、“對象與類”、“繼承”、“接口”、“lambda 表達式與内部類”、“異常”、“斷言和日志”、“泛型程式設計”、“集合”。這九章講述的是 Java 基礎知識點,是 Java 程式員必須要掌握的内容,是以必看。

第十到第十二章:講的是 AWT 和 Swing,個人感覺這部分内容屬于不需要再學的 Java 知識點。當然了,視窗程式設計涉及到的“事件驅動-監聽-方法回調”的機制蠻重要的,需要掌握,但和 AWT 和 Swing 的關聯度不大。就好像,我們取錢直接去招商銀行,沒必要把招商銀行的錢轉到工商銀行再取出來。

第十三章:講的是應用部署和 Applet,顯然 Applet 也沒必要學了。出版社沒有把這部分内容删掉,純粹是為了讓這本書變得更笨重(定價就高了)。

第十四章:并發程式設計。這也是 Java 學習過程中最難的一塊之一,另外一難是 Java 虛拟機。但這是初級程式員邁向高手的必經之路。

整體上來講,《Java核心技術卷一》非常值得一讀,廣度和深度都恰到好處。強烈推薦。

我知道,有些同學因為工作時間的原因,一直沒有時間讀書。像《Java核心技術卷一》這樣厚得像特朗普的臉皮一樣的書,更是沒有時間讀了。不過,不要擔心,二哥替大家解決了這個煩惱,我用了一個月的時間把這本書完整地讀了一遍,并寫了 9 篇高品質且通俗易懂的文章,供大家作為參考。

先來通過思維導圖看一下這 9 篇 Java 核心技術博文涉及到的内容。

【大學四年自學Java的學習路線】寫了一個月,這是一份最适合普通大衆、非科班的路線,祝你零基礎快速找到一份滿意的工作(3)

下面是這 9 篇 Java 核心技術博文對應的連結。

Java面試官:兄弟,你确定double精度比float低嗎?

請用面向對象的思想,談一談這次面試的過程

再談 Java 的繼承和超類 Object

Java:接口和抽象類,傻傻分不清楚?

Java生成二維碼分享海報

Java:優雅地處理異常真是一門學問啊!

教妹學 Java:晦澀難懂的泛型

教妹學Java:大有可為的集合

教妹學 Java:難以駕馭的多線程

3)《Head First Java》

在我遇到《Head First Java》之前,如果你要我推薦 Java 技術書,我會毫不猶豫地推薦《Java 程式設計思想》和《Java 核心技術卷》,因為大家都說好嘛,我隻能“同流合污”了(強顔歡笑);但換成是現在的話,我會優先推薦《Head First Java》。

盡管《Head First Java》也非常的厚,至少比我的臉皮後,但趣味性就要甩前面兩本好幾條街了。這年頭,大家都沒時間讀枯燥的技術書,尤其是厚的。上一張圖大家感受一下《Head First Java》的調皮吧。

就沖着這張圖,我覺得《Head First Java》的作者就足夠的大膽。作者挑選的圖檔可以說張張經典,真正實作了“圖文并茂”的需求,搞得你感覺有點不好意思,仿佛不是在讀一本 Java 技術書,而是在讀一本《知音》。

不止是圖檔,還有遊戲、拼圖、解謎題以及意想不到的内容。真的是一點都不“正經”,正因為如此,閱讀起來才感覺興趣盎然。

第一章主要介紹了 Java 的工作原理、發展簡史、程式結構。

第二章主要介紹了 Java 的面向對象,包括繼承、覆寫等内容。

什麼是面向對象程式設計(OOP)?

第三章主要介紹了 Java 的變量。關鍵點:引用變量存儲的是對象的位址(儲存方式)、數組也是對象。

為什麼要将局部變量的作用域最小化?

第四章主要介紹了 Java 的方法。關鍵點:實參和形參、值傳遞和引用傳遞、== 和 equals()。

Java到底是值傳遞還是引用傳遞?

如何比較 Java 的字元串?

第五章主要介紹了程式設計與實作的步驟。

第六章主要介紹了 Java 的 API。關鍵點:ArrayList。

第七章主要介紹了繼承和多态。關鍵點:覆寫和重載。

第八章主要介紹了接口和抽象類。關鍵點:超類 Object。

第九章主要介紹了構造器與垃圾收集器。關鍵點:對象存儲在堆中,對象引用在棧中;當對象失去最後一個引用變量時,它會被回收。

第十章主要介紹了靜态類、靜态方法、靜态變量。關鍵點:final、常量、數字格式化、日期表示法。

第十一章主要介紹了異常處理。

第十二章和第十三章,主要介紹了 GUI 和 Swing。關鍵點:事件處理機制。

第十四章主要介紹了序列化和檔案輸入/輸出。關鍵點:Serializable接口。

Java Serializable:明明就一個空的接口嘛

第十五章主要介紹了網絡 Socket 和多線程。

Java Socket:飛鴿傳書的網絡套接字

Java 網絡程式設計:必知必會的 URL 和 URLConnection

第十六章主要介紹了集合和泛型。

第十七章主要介紹了程式的打包和釋出。

第十八章主要介紹了遠端服務調用。

4)《Effective Java》

《Effective Java》除了翻譯讓衆多 Java 程式員诟病之外,再沒有任何缺點了(有讀者戲稱:“這本書為翻譯們作出了傑出的表率”)。其目标是幫助 Java 程式員更加有效地使用 Java 程式設計語言及其基本類庫,主要涉及到 java.lang、java.util、 java.io 包下面的類。

《Effective Java》第三版一共包含了 90 條極具實用價值的經驗規則,每條規則都值得 Java 程式員在實戰中去參照。這本書不需要按部就班地從頭到尾讀,可以随意挑選任意小節進行閱讀,因為每條規則相對都是獨立的,盡管它們之間會交叉引用,但并不妨礙我們随心所欲地閱讀。

作者 Josh Bloch 非常的牛逼,曾是 Google 的首席 Java 架構師,《Java開發者雜志》将他列為世界上最頂尖的四十名軟體人物之一。Java 之父詹姆斯·高斯林對《Effective Java》的評價也非常的高。

這裡有一份第三版的中文線上翻譯文檔,大家可以參照一下。

https://github.com/sjsdfg/effective-java-3rd-chinese/tree/master/docs/notes

我在讀這本書的時候,曾寫過兩篇文章,大家也可以閱讀一下。

面試官:兄弟,說說基本類型和包裝類型的差別吧

5)《Java網絡程式設計》

《Java網絡程式設計》全面介紹了如何使用 Java 開發網絡程式。網絡程式設計是指編寫運作在多個裝置(計算機)上的程式,這些裝置可以通過網絡連接配接起來。這也是 Java 基礎學習完後必須要學習的一大塊内容,包括:Internet 底層協定(TCP/IP 和 UDP/IP)、網絡輸入和輸出、DNS 互動、定位、識别和下載下傳網絡資源、HTTP 協定(REST、HTTP 頭部和 Cookie)、Socket 通信等等。

這本書的整體評價并不算高,吐槽的反而更多。但是,對于學習 Java 網絡程式設計的基礎知識非常的有用。

6)《Java 并發程式設計實戰》

《Java并發程式設計實戰》深入淺出地介紹了 Java 線程和并發程式設計,是一本還算不錯的 Java 并發程式設計參考手冊。本書從并發和線程安全性的基本概念出發,介紹了如何使用類庫來提供基本的并發方案,包括如何利用線程來提高并發應用程式的吞吐量、如何識别可并發執行的任務、如何提高單線程子系統的響應性、如何確定并發程式執行預期的任務,如何提高并發代碼的性能和可伸縮性等等内容。

但我必須要說的是,《Java并發程式設計實戰》這本書并沒有擺脫翻譯枯燥的老毛病,讀起來很需要耐住性子,不然就很難把這本書吃透。當然了,并發程式設計本身就很難,大家要做好心理準備。

7)《深入了解Java虛拟機》

《深入了解 Java 虛拟機:JVM 進階特性與最佳實踐(第 2 版)》是唯一一本我們國内程式員寫的經典書,可以媲美《Java 程式設計思想》。

這本書牛逼到什麼程度,幾乎所有寫 Java 虛拟機方面的文章,沒有一個不在文章最後注明:本文參考字周志明老師的《深入了解 Java 虛拟機》。假如這篇文章最後沒有注明的話,那保不準是不尊重版權。

第 1 版兩年内印刷近 10 次,好評(五星)如潮,是整個 Java 圖書領域公認的經典著作和暢銷書。

第 2 版共分為 5 大部分,圍繞記憶體管理、執行子系統、程式編譯與優化、高效并發等核心主題對 JVM 進行了全面深入的分析,深刻揭示了 JVM 的工作原理。

第一部分主要介紹了 Java 的技術體系、Java 和 JVM 的發展曆程。

第二部分主要介紹了 JVM 的自動記憶體管理,包括虛拟機的記憶體區域劃分原理,記憶體溢出産生的原因、常見的垃圾收集算法、垃圾收集器的工作原理等等。

第三部分主要介紹了類檔案結構、虛拟機類加載機制、虛拟機位元組碼執行引擎。

第四部分主要介紹了程式的編譯和代碼的優化,闡述了泛型、自動裝箱拆箱、條件編譯等文法糖的原理;還有 HotSpot 的即時編譯器。

第五部分主要介紹了 Java 實作高效并發的原理,包括 JVM 記憶體模型等。

作者周志明更成為了廣大 Java 程式員心目中的大神級人物,厲害厲害了!有讀者曾這樣感歎道:“國内程式員很難再寫出這麼經典的書了!”

如果大家想要成為一名優秀的 Java 程式員,本書不得不讀啊!并且是細細品味的那種。

8)《Java性能權威指南》

市面上專注于 Java 性能的書不多,《Java性能權威指南》算是一本很不錯的。通過閱讀本書,我們可以運用 4 個基本原則最大程度地提升性能測試的效果、使用 JDK 自帶的工具收集程式的性能資料、了解 JIT(即時編譯器)編譯器的優缺點、調優 JVM 垃圾收集器、最大程度優化多線程等等。

9)《代碼整潔之道》

我可以這麼肯定地說:《代碼整潔之道》值得所有的程式員讀一讀。軟體的品質,不僅依賴于架構,更與代碼品質息息相關。而代碼的品質與其整潔度成正比關系,越整潔的代碼,其品質毫無疑問的就會越高。由于本書中的例子是由 Java 實作的,是以 Java 程式員在讀這本書的時候有着天然的優勢。

如何寫出整潔的代碼呢?Keep It Simple Stupid:代碼簡單直接,不僅能夠提高代碼的效率,還能夠讓閱讀代碼的人賞心悅目。

本書的第一章,對整潔代碼下了一個定義,每個程式員都應該銘記在心。

1、整潔的代碼力求專注,每個方法、每個類都應該全神貫注于一件事;命名更要給人一種“顧名思義”的感覺。

2、整潔的代碼簡單直接,從不隐藏設計者的意圖。

3、整潔的代碼應當有單元測試。

4、整潔的代碼拒絕重複,其表達力直擊人的心靈。

10)《設計模式之禅》

《設計模式之禅(第 2 版)》是設計模式領域公認的 3 本經典著作之一,也是我們國内程式員寫的一本書,趣味化十足,讀起來也非常容易了解。這本書值得所有的程式員讀一讀,但 Java 程式員讀起來更容易上手,因為源碼是 Java 完成的。作者名叫秦小波,和我最喜歡的作家王小波同名。

本書可以分為五個部分:

第一部分(第 1~6 章),包含有單一職責原則、裡氏替換原則、依賴倒置原則、接口隔離原則、迪米特法則、開閉原則等内容,對面向對象程式員設計的 6 大原則進行了深刻解讀。

第二部分(第 7~29 章)通過大量生動的案例講解了 23 種最常用的設計模式。包含單例模式、工廠方法模式、抽象工廠模式、模闆方法模式、建造者模式、代理模式、原型模式、中介者模式、指令模式、責任鍊模式、裝飾模式、政策模式、擴充卡模式、疊代器模式、組合模式、觀察者模式、門面模式、備忘錄模式、通路者模式、狀态模式、解釋器模式、享元模式、橋梁模式。

第三部分(第 30~33 章)對同類型和相關聯的模式進行了比較,旨在說明它們之間的差别。

第四部分(第 34~36 章)探讨了如何在實際開發中将各種設計模式混合起來使用的可能性,以發揮設計模式的最大功效。

第五部分(第 37~38 章)主要講解了 5 種新的設計模式的原理、意圖和最佳實踐。

大家都聽說過,學習設計模式非常的重要,那麼為什麼這麼重要呢,設計模式到底是什麼?打個比喻學程式設計就像學武功一樣。

武功要練得很牛逼,有兩樣東西不能丢。第一,是内功;第二,是武功秘籍。内功對應到程式設計就是我們程式設計基礎能力,那程式設計的設計模式就可以想象成國術中的武功秘籍。

設計模式就是根據不同類型場景,設計優雅的(編碼)解決方案。學好設計模式有很多好處,比如,容易看懂經典代碼中的邏輯(很多優秀的開源架構大量使用了設計模式);應對面試時對答如流(設計模是面試重點);可以編寫出優雅的解決方案(或者代碼)。

11)《Java開發手冊》

《Java開發手冊》是每個 Java 程式員都值得擁有的一本參考指南。該手冊涵蓋了程式設計規約、異常日志、單元測試、安全規約、MySQL 資料庫、工程結構、設計規約燈 7 個部分,參考價值極大。

《Java 開發手冊》作為阿裡官方的 Java 代碼規範标準,是行業内領先的開發規範文檔。如果能夠認真踐行該手冊中提到的規約,絕壁能夠幫助 Java 程式員養成良好的程式設計習慣,并且提高代碼的品質和降低項目維護的難度。

據說,這本手冊在阿裡内部打磨了很久很久才對外開放的,是以傾注了很多大佬們的心血。況且,阿裡作為一個大廠,拿出來一份有瑕疵的手冊,多少會丢臉,是以這本手冊絕對值得讀一讀。

本手冊的作者孤盡曾說:

代碼規範這事情,它是一個吃力不讨好,短期沒結果,費心又費力的事情。唯有自己内心的技術情懷。