思維導圖學《On Java》基礎卷

2022-07-23 06:01:32

說明

原來讀過 《Java 程式設計思想(第 4 版)》,但是這個版本還是基於 Java 5 講解。由於 Java 8 做出了非常大的改進(是 Java 變化最大的版本),且截止到 2022-07-22,Java 版本都更新到 18 了……原來那本書確實需要更新了。

原作者 Bruce Eckel 又重新出版了新書:《On Java 中文版 基礎卷》《On Java 中文版 進階卷》。本位是對基礎卷的思維導圖筆記總結,略過了部分較為基礎的章節,並未完全詳盡書中所有知識點。

本文地址釋出在 https://github.com/LjyYano/Thinking_in_Java_MindMapping 上,GitHub 地址:連結,請在轉載時標明原文連結~

目錄

有幾個章節過於基礎,沒有放在思維導圖上:

  • 02 安裝 Java 和本書範例
  • 04 操作符
  • 05 控制流
  • 12 集合
  • 16 程式碼校驗
  • 21 陣列

思維導圖

導讀

我的語言之侷限,即我的世界之侷限。這句話不僅適用於我們日常讀寫的語言,也適用於程式語言。很微妙的一件事是,一門語言會悄然無息地引導你進入某種思維模式,同時遠離其他思維模式。Java 尤其如此。

如果你瞭解一門語言的不足之處和侷限性,當你遇到某個語言特性不可用時,就不會被卡住,以致無法繼續。同時,因為你已經知曉其侷限性,所以就可以更好地進行程式設計。

Java 8 包含了許多基礎和重要的改進,而由於 Java 一直嚴格遵守自己的向後相容性承諾,做出這些改進無疑需要花費相當多的精力。

如果一開始就將你的專案「發展」成一個有機的、進化的生命體,而不是像建造玻璃牆的摩天大樓一樣進行一次性施工,你將獲得更大的成功和更直接的反饋。

相關連結:

第 1 章 什麼是物件

工具已經越來越不像機器,而是越來越像思維的一部分。

所有程式語言都是一種抽象

如果我可以將問題從表象中抽取出來,那麼什麼樣的物件可以馬上解決我的問題呢?

第 3 章 一切都是物件

第 6 章 初始化和清理

第 7 章 實現隱藏

第 8 章 複用

第 9 章 多型

相關連結:

第 10 章 介面

任何抽象都應該由真正的需求來驅動。介面應該是在必要時用來重構的東西,而不是在任何地方都多加一個間接層級,進而帶來額外的複雜性。這種額外的複雜性影響很大,如果你讓某人在克服這種複雜性上花費時間,而他最終卻發現你新增介面只不過是為了「以防萬一」,而非出於什麼令人信服的其他理由,他就會質疑你做過的其他所有設計。

相關連結:

第 11 章 內部類

第 13 章 函數語言程式設計

lambda 表示式和方法參照遠非完美,我們要永遠承受 Java 設計者在語言誕生初期的草率決定所導致的代價。lambda 在 Java 並非一等公民。這並不意味著 Java 8 沒有大的改進,但確實意味著,像許多 Java 語法一樣,最終會有一個讓你感到不爽的臨界點。

相關連結:

第 14 章 流

相關連結:

第 15 章 異常

例外處理的優點之一,就是它使得你可以在某處集中精力處理你要解決的問題,而在另一處處理你編寫程式碼產生的錯誤。

Java 堅定地強調將所有的錯誤都以異常形式報告的這一事實,正是它遠超過諸如 C++ 這類語言的長處之一。

相關連結:

第 17 章 檔案

在非常難用的檔案 I/O 程式設計存在多年之後,Java 終於簡化了讀寫檔案的基本操作。

第 18 章 字串

相關連結:

第 19 章 反射

相關連結:

第 20 章 泛型

在 Java 中,泛型是在這門語言釋出了幾乎 10 年後才引入的,所以向泛型的遷移問題是必須要考慮的,也對泛型的設計產生了很大沖擊。結果就是,作為程式設計師的你,將因為 Java 設計者在建立 1.0 版本時缺乏遠見而承受痛苦。

有些語言對引數化型別採用了更簡潔、影響更小的實現方法。不難想象,這樣一種語言有可能成為 Java 的接班人,因為它完全採用了 C++ 對待 C 的方式:站在巨人的肩膀上,並看得更遠。

結語

在不少討論中能聽到這樣的聲音:「C++ 是一門設計拙劣的語言。」我則認為理解 C++ 和 Java 做出的各種決策有助於站在更高的位置看待問題。

如同任何人類語言一樣,Java 提供了一種表達概念的方式。如果使用得當,隨著問題變得更龐大更復雜,這種表達工具將會比別的可供選擇的語言更為簡單、靈活。

曾幾何時,C++ 是程式語言界的「皇冠」,人們認為會永遠如此。很多人也這麼看 Java,但由於 JVM 的緣故,Java 已經使自己可以被輕而易舉地替換掉了。現在,任何人都可以建立一門新的語言,並在短時間內使其像 Java 一樣高效執行。但在以前,對於一門新的語言來說,大部分開發時間往往花在實現正確、高效的編譯器上。

在我寫作本書時,Java 是世界上首屈一指的程式語言。然而 Java 終將老去,就像 C++ 那樣,衰退到只會在某些特殊場合用到(甚至只用於支援遺留程式碼,因為 Java 不如 C++ 和硬體結合那麼緊密)。但是 Java 無心插柳卻已蔚然成蔭的真正光輝之處是,它為自己的替代品創造了一條非常平坦的道路,即使 Java 本身已經到了無法再進化的地步。未來的所有語言都應該從中學習:要麼創造一種可以不斷重構的文化(如 Python 和 Ruby 做到的那樣),要麼讓競爭者可以茁壯成長。

連結

由於思維導圖中的連結沒法截圖,按照先後順序貼在下面:

寫在最後

思維導圖是用億圖腦圖 MindMaster製作的,之前重度使用了 Xmind 和 WPS,感覺還是億圖這個思維導圖軟體比較適合我。

本文 GitHub 地址:連結,後續的《On Java 進階卷》思維導圖也會發布在這裡。如果需要思維導圖原件,請在 GitHub 私信獲取~