On Java 中文版 基礎卷,是2022年人民郵電出版社出版的圖書,作者是[美] Bruce Eckel,譯者是陳德偉 / 臧秀濤 / 孫卓 / 秦彬。
基本介紹
- 中文名:On Java 中文版 基礎卷
- 作者:Bruce Eckel
- 譯者:陳德偉、臧秀濤、孫卓、秦彬
- 出版時間:2022年3月20日
- 出版社:人民郵電出版社
- 頁數:840 頁
- ISBN:9787115585011
- 類別:編程技術
- 原作品:On Java 8
- 定價:129.8 元
- 開本:16 開
- 裝幀:精裝
內容簡介,圖書目錄,作者簡介,
內容簡介
基於 Java 的 3 個長期支持版(Java 8、11、17),講解 Java 核心語法,並對 Java 的核心變化進行詳述。全書內容通俗易懂,配合示例講解逐步深入,並結合實際開發需要,從語言底層設計出發,有效幫讀者規避一些常見的開發陷阱。
本書主體部分共 22 章,內容包含對象、操作符、控制流、初始化和清理、復用、多態、接口、內部類、集合、函式式編程、流、異常、代碼校驗、檔案、字元串、泛型等。
本書適合各個層次的 Java 開發者閱讀,同時也可作為面向對象程式設計語言以及 Java 語言的參考教材。
圖書目錄
第1章 什麼是對象
1.1 抽象的歷程
1.2 對象具有接口
1.3 對象可以提供服務
1.4 隱藏的實現
1.5 復用實現
1.6 繼承
1.7 多態
1.8 單根層次結構
1.9 集合
1.10 對象的創建和生命周期
1.11 異常處理
1.12 總結
第2章 安裝Java和本書示例
2.1 編輯器
2.2 shell
2.2.1 運行shell
2.2.2 目錄(資料夾)
2.2.3 shell 基礎操作
2.3 安裝Java
2.4 確認安裝成功
2.5 安裝和運行本書示例
第3章 對象無處不在
3.1 通過引用操作對象
3.2 必須創建所有對象
3.2.1 數據保存在哪裡
3.2.2 特殊情況:基本類型
3.2.3 Java 中的數組
3.3 注釋
3.4 無須銷毀對象
3.4.1 作用域
3.4.2 對象的作用域
3.5 使用class 關鍵字創建新類型
3.6 方法、參數以及返回值
3.7 編寫Java 程式
3.7.1 名稱可見性
3.7.2 使用其他組件
3.7.3 static 關鍵字
3.8 你的第一個Java 程式
3.9 編程風格
3.10 總結
第4章 操作符
4.1 使用Java 操作符
4.2 優先權
4.3 賦值
4.4 算術操作符
4.5 自動遞增和自動遞減
4.6 關係操作符
4.7 邏輯操作符
4.8 字面量
4.8.1 字面量里的下劃線
4.8.2 科學記數法(又稱“指數記數法”)
4.9 按位操作符
4.10 移位操作符
4.11 三元操作符
4.12 字元串操作符+ 和+=
4.13 使用操作符時常犯的錯誤
4.14 類型轉換操作符
4.14.1 截尾和捨入
4.14.2 提升
4.15 Java 沒有sizeof()
4.16 操作符小結
4.17 總結
第5章 控制流
5.1 true 和false
5.2 if-else
5.3 疊代語句
5.3.1 do-while
5.3.2 for
5.3.3 逗號操作符
5.4 for-in 語法
5.5 return
5.6 break 和continue
5.7 臭名昭著的goto
5.8 switch
5.9 字元串作為選擇器
5.10 總結
第6章 初始化和清理
6.1 用構造器保證初始化
6.2 方法重載
6.2.1 區分重載的方法
6.2.2 使用基本類型的重載
6.2.3 通過返回值區分重載方法
6.3 無參構造器
6.4 this 關鍵字
6.4.1 在構造器中調用構造器
6.4.2 static 的含義
6.5 清理:終結和垃圾收集
6.5.1 finalize() 的作用
6.5.2 你必須執行清理
6.5.3 終止條件
6.5.4 垃圾收集器的工作原理
6.6 成員初始化
6.7 構造器初始化
6.7.1 初始化順序
6.7.2 靜態數據的初始化
6.7.3 顯式的靜態初始化
6.7.4 非靜態實例初始化
6.8 數組初始化
6.8.1 動態數組創建
6.8.2 可變參數列表
6.9 枚舉類型
6.10 新特性:局部變數類型推斷
6.11 總結
第7章 實現隱藏
7.1 package:庫單元
7.1.1 代碼組織
7.1.2 創建獨一無二的包名
7.1.3 定製工具庫
7.1.4 用import 來改變行為
7.1.5 關於包的忠告
7.2 Java 訪問許可權修飾符
7.2.1 包訪問
7.2.2 public:接口訪問許可權
7.2.3 private:你無法訪問它
7.2.4 protected:繼承訪問許可權
7.2.5 包訪問許可權與公共構造器
7.3 接口和實現
7.4 類的訪問許可權
7.5 新特性:模組
7.6 總結
第8章 復用
8.1 組合語法
8.2 繼承語法
8.3 委託
8.4 組合與繼承相結合
8.4.1 確保正確的清理
8.4.2 名稱隱藏
8.5 選擇組合還是繼承
8.6 protected 關鍵字
8.7 向上轉型
8.8 final 關鍵字
8.8.1 final 數據
8.8.2 final 方法
8.8.3 final 類
8.8.4 關於final 的忠告
8.9 初始化及類的載入
8.10 總結
第9章 多態
9.1 再論向上轉型
9.2 難點
9.2.1 方法調用綁定
9.2.2 產生正確的行為
9.2.3 可擴展性
9.2.4 陷阱:“重寫”private方法
9.2.5 陷阱:欄位與靜態方法
9.3 構造器和多態
9.3.1 構造器的調用順序
9.3.2 繼承與清理
9.3.3 構造器內部的多態方法行為
9.4 協變返回類型
9.5 用繼承進行設計
第10章 接口
10.1 抽象類和抽象方法
10.2 接口定義
10.2.1 默認方法
10.2.2 多重繼承
10.2.3 接口中的靜態方法
10.2.4 作為接口的Instrument
10.3 抽象類與接口
10.4 完全解耦
10.5 組合多個接口
10.6 通過繼承來擴展接口
10.7 適配接口
10.8 接口中的欄位
10.9 嵌套接口
10.10 接口和工廠
10.11 新特性:接口的private方法
10.12 新特性:密封類和密封接口
10.13 總結
第11章 內部類
11.1 創建內部類
11.2 到外部類的連結
11.3 使用.this 和.new
11.4 內部類和向上轉型
11.5 在方法和作用域中的內部類
11.6 匿名內部類
11.7 嵌套類
11.7.1 接口中的類
11.7.2 從多層嵌套的內部類中 訪問外部成員
11.8 為什麼需要內部類
11.8.1 閉包與回調
11.8.2 內部類與控制框架
11.9 繼承內部類
11.10 內部類可以被重寫嗎
11.11 局部內部類
11.12 內部類標識符
11.13 總結
第12章 集合
12.1 泛型和類型安全的集合
12.2 基本概念
12.3 添加一組元素
12.4 列印集合
12.5 List
12.6 Iterator
12.7 LinkedList
12.8 Stack
12.9 Set
12.10 Map
12.11 新特性:記錄(record)類型
12.12 Queue
12.13 Collection 和Iterator 的對比
12.14 for-in 和疊代器
12.15 總結
第13章 函式式編程
13.1 舊方式與新方式
13.2 lambda 表達式
13.3 方法引用
13.3.1 Runnable
13.3.2 未綁定方法引用
13.3.3 構造器方法引用
13.4 函式式接口
13.4.1 帶有更多參數的函式式接口
13.4.2 解決缺乏基本類型函式式接口的問題
13.5 高階函式
13.6 閉包
13.7 函式組合
13.8 柯里化和部分求值
13.9 純函式式編程
13.10 總結
第14章 流
14.1 Java 8 對流的支持
14.2 流的創建
14.2.1 隨機數流
14.2.2 int 類型的區間範圍
14.2.3 generate()
14.2.4 iterate()
14.2.5 流生成器
14.2.6 Arrays
14.2.7 正則表達式
14.3 中間操作
14.3.1 跟蹤與調試
14.3.2 對流元素進行排序
14.3.3 移除元素
14.3.4 將函式套用於每個流元素
14.3.5 在套用map() 期間組合流
14.4 Optional 類型
14.4.1 便捷函式
14.4.2 創建Optional
14.4.3 Optional 對象上的操作
14.4.4 由Optional 組成的流
14.5 終結操作
14.5.1 將流轉換為一個數組
14.5.2 在每個流元素上套用某個 終結操作
14.5.3 收集操作
14.5.4 組合所有的流元素
14.5.5 匹配
14.5.6 選擇一個元素
14.5.7 獲得流相關的信息
14.6 小結
第15章 異常
15.1 概念
15.2 基本的異常
15.3 捕捉異常
15.3.1 try 塊
15.3.2 異常處理程式
15.4 創建自己的異常
15.5 異常說明
15.6 捕捉任何異常
15.6.1 多重捕捉
15.6.2 棧軌跡
15.6.3 重新拋出異常
15.6.4 異常鏈
15.7 標準Java 異常
15.8 新特性:更好的NullPointerException報告機制
15.9 使用finally 執行清理
15.9.1 finally 是乾什麼用的
15.9.2 在return 期間使用finally
15.9.3 缺陷:異常丟失
15.10 異常的約束
15.11 構造器
15.12 try-with-resources 語句
15.12.1 細節揭秘
15.12.2 新特性:try-withresources中的實際上的最終變數
15.13 異常匹配
15.14 其他可選方式
15.14.1 歷史
15.14.2 觀點
15.14.3 把異常傳遞到控制台
15.14.4 將“檢查型異常”轉換為“非檢查型異常”
15.15 異常使用指南
15.16 小結
附記 異常的奇異世界
第16章 代碼校驗
16.1 測試
16.1.1 單元測試
16.1.2 測試覆蓋率的幻覺
16.2 前置條件
16.2.1 斷言
16.2.2 DbC + 單元測試
16.2.3 使用Guava 里的前置 條件
16.3 測試驅動開發
16.4 日誌
16.5 調試
16.5.1 使用JDB 進行調試
16.5.2 圖形調試器
16.6 基準測試
16.6.1 微基準測試
16.6.2 介紹JMH
16.7 分析與最佳化
16.8 樣式檢查
16.9 靜態錯誤分析
16.10 代碼審查
16.11 結對編程
16.12 重構
16.13 持續集成
16.14 總結
第17章 檔案
17.1 檔案和目錄路徑
17.1.1 選擇Path 的片段
17.1.2 分析Path
17.1.3 添加或刪除路徑片段
17.2 目錄
17.3 檔案系統
17.4 監聽Path
17.5 查找檔案
17.6 讀寫檔案
17.7 小結
第18章 字元串
18.1 不可變的字元串
18.2 重載+ 與StringBuilder
18.3 無意識的遞歸
18.4 對字元串的操作
18.5 格式化輸出
18.5.1 printf()
18.5.2 System.out.format()
18.5.3 Formatter 類
18.5.4 格式說明符
18.5.5 Formatter 轉換
18.5.6 String.format()
18.6 新特性:文本塊
18.7 正則表達式
18.7.1 基礎
18.7.2 創建正則表達式
18.7.3 量詞
18.7.4 Pattern 和Matcher
18.7.5 split()
18.7.6 替換操作
18.7.7 reset()
18.7.8 正則表達式和JavaI/O
18.8 掃描輸入
18.8.1 Scanner 分隔設定
18.8.2 使用正則表達式掃描
18.9 StringTokenizer
18.10 總結
第19章 反射
19.1 為什麼需要反射
19.2 Class 對象
19.2.1 類字面量
19.2.2 泛型類的引用
19.2.3 cast() 方法
19.3 轉型前檢查
19.3.1 使用類字面量
19.3.2 動態的instanceof
19.4 註冊工廠
19.5 Instanceof 與Class 的等價性
19.6 運行時的類信息
19.7 動態代理
19.8 使用Optional
19.8.1 標籤接口
19.8.2 模擬對象和樁
19.9 接口和類型信息
19.10 總結
第20章 泛型
20.1 和C++ 的對比
20.2 簡單泛型
20.2.1 元組庫
20.2.2 棧類
20.2.3 RandomList
20.3 泛型接口
20.4 泛型方法
20.4.1 可變參數和泛型方法
20.4.2 通用Supplier
20.4.3 簡化元組的使用
20.4.4 Set 實用工具
20.5 構建複雜模型
20.6 類型擦除的奧秘
20.6.1 C++ 的實現方法
20.6.2 遷移的兼容性
20.6.3 類型擦除存在的問題
20.6.4 邊界的行為
20.7 對類型擦除的補償
20.7.1 創建類型實例
20.7.2 泛型數組
20.8 邊界
20.9 通配符
20.9.1 編譯器有多聰明?
20.9.2 逆變性
20.9.3 無界通配符
20.9.4 捕獲轉換
20.10 問題
20.10.1 基本類型不可作為 類型參數
20.10.2 實現參數化接口
20.10.3 類型轉換和警告
20.10.4 重載
20.10.5 基類會劫持接口
20.11 自限定類型
20.11.1 奇異遞歸泛型
20.11.2 自限定
20.11.3 參數協變性
20.12 動態類型安全
20.13 異常
20.14 混型
20.14.1 C++ 中的混型
20.14.2 與接口混合
20.14.3 使用裝飾器模式
20.14.4 與動態代理混合
20.15 潛在類型機制 20.15.1 Python 中的潛在類型 機制
20.15.2 C++ 中的潛在類型 機制
20.15.3 Go 中的潛在類型 機制
20.15.4 Java 中的直接潛在 類型機制
20.16 對於缺少(直接的)潛在類型 機制的補償
20.16.1 反射
20.16.2 將方法套用於序列
20.17 Java 8 中的輔助潛在類型 機制
20.18 總結:轉型真的這么糟糕嗎?
第21章 數組
21.1 數組為何特殊
21.2 數組是一等對象
21.3 返回數組
21.4 多維數組
21.5 數組和泛型
21.6 Arrays.fill()
21.7 Arrays.setAll()
21.8 增量生成器
21.9 隨機數生成器
21.10 泛型和基本類型數組
21.11 修改已有的數組元素
21.12 關於數組並行
21.12.1 策略
21.12.2 parallelSetAll()
21.13 數組實用工具
21.14 數組複製
21.15 數組比較
21.16 流和數組
21.17 數組排序
21.17.1 使用Arrays.sort()
21.17.2 並行排序
21.18 用Arrays.binarySearch() 進行 二分查找
21.19 用parallelPrefix() 進行累積 計算
21.20 總結 / 806
附錄A 補充內容
附錄B 積極看待C++與Java的遺產
作者簡介
Bruce Eckel ,C++標準委員會的創始成員之一,知名技術顧問 ,專注於程式語言和軟體系統設計方面的研究,常活躍於世界各大頂級技術研討會。他自1986年以來,累計出版Thinking in C++、Thinking in Java、On Java 8等十餘部經典計算機著作,曾多次榮獲Jolt 最佳圖書獎(“被譽為軟體業界的奧斯卡”),其代表作 Thinking in Java被譯為中、日、俄、意、波蘭、韓等十幾種語言,在世界範圍內產生廣泛影響。