Java核心技術速學版(第3版) Core Java for the Impatient, 3/e

[美]凱·S.霍斯特曼(Cay S. Horstmann)

  • Java核心技術速學版(第3版)-preview-1
  • Java核心技術速學版(第3版)-preview-2
Java核心技術速學版(第3版)-preview-1

相關主題

商品描述

本書是經典 Java開發基礎書《Java核心技術》的速學版本。本書首先介紹了Java 語言的基礎知識,包含接口、Lambda 表達式、繼承、反射、異常處理、斷言、日誌、泛型編程、容器等關鍵概念;其次介紹了流、輸人和輸出處理、並發、註解、日期和時間 API、國際化、編譯和腳本、Java 平臺模塊系統等高級特性。本書不僅可以讓讀者深入瞭解 Java 編程的基礎知識和核心概念,還可以幫助讀者掌握 Java 應用程序開發所需的基本技能。本書涵蓋了Java17中更新的內容,提供了許多實用的示例代碼,還給出了基於作者實際經驗的提示、註意和警告。

本書可供希望深入掌握Java應用的初學者使用,也適合打算將Java 應用到實際項目中的編程人員使用。

作者簡介

[美]凯·S.霍斯特曼(Cay S.Horstmann)

《Java 核心技术(原书第 12 版)》两卷本(Core Java, Volumes I and II, Twelfth Edition)的主要作者,他还为专业编程人员和计算机科学专业的学生撰写了十多本书。

他是美国圣何塞州立大学计算机专业的科学荣誉退休教授,也是一名Java Champion。

目錄大綱

第 1 章 基本編程結構 1

1.1 我們的第 一個程序 1

1.1.1 剖析“Hello, World”程序 1

1.1.2 編譯和運行 Java 程序 2

1.1.3 方法調用 4

1.1.4 JShell 4

1.2 基本類型 6

1.2.1 有符號整數類型 7

1.2.2 浮點類型 7

1.2.3 char 類型 8

1.2.4 boolean 類型 8

1.3 變量 8

1.3.1 變量聲明 8

1.3.2 標識符 9

1.3.3 初始化 9

1.3.4 常量 9

1.4 算術運算 10

1.4.1 賦值 11

1.4.2 基本算術運算符 11

1.4.3 數學方法 12

1.4.4 數值的類型轉換 12

1.4.5 關系運算符和邏輯運算符 13

1.4.6 大數 14

1.5 字符串 14

1.5.1 拼接 14

1.5.2 子串 15

1.5.3 字符串比較 15

1.5.4 數值和字符串的相互轉換 16

1.5.5 字符串 API 16

1.5.6 碼點和代碼單元 18

1.5.7 文本塊 19

1.6 輸入和輸出 20

1.6.1 讀取輸入 20

1.6.2 格式化輸出 21

1.7 控制流 22

1.7.1 分支 23

1.7.2 switch 語句 23

1.7.3 循環 24

1.7.4 break 和 continue 25

1.7.5 局部變量的作用域 26

1.8 數組和數組列表 27

1.8.1 使用數組 27

1.8.2 數組構造 28

1.8.3 數組列表 28

1.8.4 基本類型的封裝類 29

1.8.5 增強 for 循環 30

1.8.6 復制數組和數組列表 30

1.8.7 數組算法 31

1.8.8 命令行參數 31

1.8.9 多維數組 31

1.9 功能分解 33

1.9.1 聲明和調用靜態方法 33

1.9.2 數組參數和返回值 33

1.9.3 可變參數 34

練習 34

第 2 章 面向對象編程 36

2.1 使用對象 36

2.1.1 訪問器方法和修改器方法 37

2.1.2 對象引用 38

2.2 實現類 39

2.2.1 實例變量 39

2.2.2 方法頭 39

2.2.3 方法體 39

2.2.4 實例方法調用 40

2.2.5 this 引用 40

2.2.6 按值調用 41

2.3 對象構造 42

2.3.1 實現構造器 42

2.3.2 重載 42

2.3.3 從一個構造器調用另一個構造器 43

2.3.4 默認初始化 43

2.3.5 實例變量初始化 43

2.3.6 final 實例變量 44

2.3.7 無參數構造器 44

2.4 記錄 44

2.4.1 記錄的概念 45

2.4.2 構造器:標準的、自定義的和簡潔的 46

2.5 靜態變量和靜態方法 46

2.5.1 靜態變量 46

2.5.2 靜態常量 47

2.5.3 靜態初始化塊 47

2.5.4 靜態方法 47

2.5.5 工廠方法 48

2.6 包 49

2.6.1 包聲明 49

2.6.2 jar 命令 49

2.6.3 類路徑 50

2.6.4 包訪問 51

2.6.5 導入類 51

2.6.6 靜態導入 52

2.7 嵌套類 52

2.7.1 靜態嵌套類 52

2.7.2 內部類 53

2.7.3 內部類的特殊語法規則 54

2.8 文檔註釋 55

2.8.1 註釋插入 55

2.8.2 類註釋 56

2.8.3 方法註釋 56

2.8.4 變量註釋 56

2.8.5 通用註釋 57

2.8.6 鏈接 57

2.8.7 包註釋、模塊註釋和概述註釋 57

2.8.8 註釋提取 58

練習 58

第 3 章 接口和 Lambda 表達式 60

3.1 接口 60

3.1.1 使用接口 60

3.1.2 聲明接口 61

3.1.3 實現接口 61

3.1.4 轉換為接口類型 62

3.1.5 強制轉換和 instanceof運算符 63

3.1.6 instanceof 的“模式匹配”形式 63

3.1.7 擴展接口 64

3.1.8 實現多個接口 64

3.1.9 常量 64

3.2 靜態方法、默認方法和私有方法 64

3.2.1 靜態方法 65

3.2.2 默認方法 65

3.2.3 解決默認方法沖突 65

3.2.4 私有方法 66

3.3 接口示例 66

3.3.1 Comparable 接口 67

3.3.2 Comparator 接口 68

3.3.3 Runnable 接口 68

3.3.4 用戶界面回調 68

3.4 Lambda 表達式 69

3.4.1 Lambda 表達式的語法 69

3.4.2 函數式接口 70

3.5 方法引用和構造器引用 71

3.5.1 方法引用 71

3.5.2 構造器引用 71

3.6 處理 Lambda 表達式 72

3.6.1 實現延遲執行 72

3.6.2 選擇函數式接口 73

3.6.3 實現自己的函數式接口 74

3.7 Lambda 表達式作用域和變量作用域 74

3.7.1 Lambda 表達式作用域 75

3.7.2 封閉作用域內訪問變量 75

3.8 高階函數 76

3.8.1 返回函數的方法 76

3.8.2 修改函數的方法 77

3.8.3 Comparator 方法 77

3.9 局部類和匿名類 78

3.9.1 局部類 78

3.9.2 匿名類 78

練習 79

第 4 章 繼承與反射 81

4.1 擴展類 81

4.1.1 超類和子類 81

4.1.2 定義和繼承子類方法 82

4.1.3 方法覆蓋 82

4.1.4 子類構造 83

4.1.5 超類賦值 83

4.1.6 強制類型轉換 84

4.1.7 匿名子類 84

4.1.8 帶 super 的方法表達式 84

4.2 繼承的層次結構 85

4.2.1 final 方法和 final 類 85

4.2.2 抽象方法和抽象類 85

4.2.3 受保護的訪問 86

4.2.4 密封類 86

4.2.5 繼承和默認方法 88

4.3 Object:宇宙級超類 88

4.3.1 toString 方法 89

4.3.2 equals 方法 90

4.3.3 hashCode 方法 91

4.3.4 克隆對象 92

4.4 枚舉 94

4.4.1 枚舉的方法 94

4.4.2 構造器、方法和字段 94

4.4.3 實例的主體 95

4.4.4 靜態成員 95

4.4.5 switch 中的枚舉 96

4.5 運行時類型信息和資源 96

4.5.1 Class 類 96

4.5.2 加載資源 98

4.5.3 類加載器 98

4.5.4 上下文類加載器 99

4.5.5 服務加載器 100

4.6 反射 101

4.6.1 枚舉類的成員 101

4.6.2 檢查對象 102

4.6.3 調用方法 102

4.6.4 構造對象 103

4.6.5 JavaBeans 103

4.6.6 使用數組 104

4.6.7 代理 105

練習 106

第 5 章 異常、斷言和日誌 108

5.1 異常處理 108

5.1.1 拋出異常 108

5.1.2 異常層次結構 109

5.1.3 聲明檢查型異常 110

5.1.4 捕獲異常 110

5.1.5 帶資源的 try 語句 111

5.1.6 finally 子句 112

5.1.7 重新拋出異常和鏈接異常 113

5.1.8 未捕獲的異常和棧跟蹤 114

5.1.9 拋出異常的 API 方法 114

5.2 斷言 115

5.2.1 使用斷言 115

5.2.2 啟用和禁用斷言 115

5.3 日誌 116

5.3.1 是否應使用 Java 日誌框架 116

5.3.2 日誌記錄基礎 116

5.3.3 平臺日誌 API 117

5.3 4 日誌記錄配置 118

5.3.5 日誌處理程序 118

5.3.6 過濾器和格式化器 120

練習 121

第 6 章 泛型編程 123

6.1 泛型類 123

6.2 泛型方法 124

6.3 類型限定 124

6.4 類型差異和通配符 125

6.4.1 子類型通配符 125

6.4.2 超類型通配符 126

6.4.3 帶類型變量的通配符 127

6.4.4 無限定通配符 127

6.4.5 通配符捕獲 128

6.5 Java 虛擬機中的泛型 128

6.5.1 類型擦除 128

6.5.2 強制類型轉換插入 129

6.5.3 橋接方法 129

6.6 泛型的限制 130

6.6.1 無基本類型參數 130

6.6.2 運行時所有類型都是原始的 130

6.6.3 無法實例化類型變量 131

6.6.4 不能構造參數化類型的數組 132

6.6.5 類類型變量在靜態上下文中無效 132

6.6.6 擦除後方法不能發生沖突 133

6.6.7 異常和泛型 133

6.7 反射和泛型 134

6.7.1 Class類 134

6.7.2 虛擬機中的泛型類型信息 135

練習 136

第 7 章 容器 138

7.1 容器框架概述 138

7.2 迭代器 140

7.3 集合 141

7.4 映射 142

7.5 其他容器 144

7.5.1 屬性 144

7.5.2 位集 145

7.5.3 枚舉集合和枚舉映射 146

7.5.4 棧、隊列、雙向隊列和優先隊列 146

7.5.5 弱哈希映射 147

7.6 視圖 147

7.6.1 小型容器 147

7.6.2 範圍 148

7.6.3 不可修改視圖 148

練習 149

第 8 章 流 151

8.1 從迭代到流操作 151

8.2 流的創建 152

8.3 filter、map 和 flatMap 方法 153

8.4 提取子流和組合流 155

8.5 其他流轉換 155

8.6 簡單約簡 156

8.7 Optional 類型 156

8.7.1 生成替代值 156

8.7.2 值存在就消費值 157

8.7.3 流水線化 Optional 值 157

8.7.4 不使用 Optional 值的方式 157

8.7.5 創建 Optional 值 158

8.7.6 用 flatMap 合成 Optional 值函數 158

8.7.7 將 Optional 轉換為流 159

8.8 收集結果 159

8.9 收集到映射中 160

8.10 分組和分區 161

8.11 下游收集器 161

8.12 約簡操作 163

8.13 基本類型流 164

8.14 並行流 165

練習 166

第 9 章 輸入和輸出處理 168

9.1 輸入/輸出流、讀取器和寫入器 168

9.1.1 獲取流 168

9.1.2 字節的讀取 169

9.1.3 字節的寫入 169

9.1.4 字符編碼 170

9.1.5 文本輸入 171

9.1.6 文本輸出 172

9.1.7 二進制數據的讀寫 173

9.1.8 隨機訪問文件 173

9.1.9 內存映射文件 173

9.1.10 文件鎖定 174

9.2 路徑、文件和目錄 174

9.2.1 路徑 174

9.2.2 創建文件和目錄 175

9.2.3 復制、移動和刪除文件 176

9.2.4 訪問目錄條目 177

9.2.5 ZIP 文件系統 178

9.3 HTTP 連接 179

9.3.1 URLConnection 類和 HttpURLConnection 類 179

9.3.2 HTTP 客戶端 API 180

9.4 正則表達式 181

9.4.1 正則表達式語法 181

9.4.2 檢測匹配 183

9.4.3 查找所有匹配 184

9.4.4 分組 184

9.4.5 按分隔符拆分 185

9.4.6 替換匹配 185

9.4.7 標志 186

9.5 序列化 186

9.5.1 Serializable 接口 186

9.5.2 瞬態實例變量 187

9.5.3 readObject 和 writeObject方法 188

9.5.4 readExternal 和 writeExternal 方法 189

9.5.5 readResolve 和 writeReplace 方法 189

9.5.6 版本管理 190

9.5.7 反序列化和安全性 191

練習 192

第 10 章 並發編程 194

10.1 並發任務 194

10.1.1 運行任務 194

10.1.2 Future 196

10.2 異步計算 197

10.2.1 可完成 Future 197

10.2.2 組合可完成 Future 198

10.2.3 用戶界面回調中的長時間運行任務 200

10.3 線程安全 201

10.3.1 可見性 201

10.3.2 競爭條件 202

10.3.3 安全並發策略 203

10.3.4 不可變類 204

10.4 並行算法 204

10.4.1 並行流 204

10.4.2 並行數組操作 205

10.5 線程安全數據結構 205

10.5.1 並發哈希映射 206

10.5.2 阻塞隊列 206

10.5.3 其他線程安全數據結構 207

10.6 原子計數器和累加器 208

10.7 鎖和條件 209

10.7.1 鎖 209

10.7.2 synchronized 關鍵字 210

10.7.3 等待條件 211

10.8 線程 212

10.8.1 啟動線程 212

10.8.2 線程中斷 213

10.8.3 線程局部變量 214

10.8.4 其他線程特性 214

10.9 進程 215

10.9.1 創建進程 215

10.9.2 運行進程 216

10.9.3 進程句柄 217

練習 217

第 11 章 註解 221

11.1 使用註解 221

11.1.1 註解元素 221

11.1.2 多重註解和重復註解 222

11.1.3 註解聲明 222

11.1.4 類型使用註解 223

11.1.5 使接收器顯式 224

11.2 定義註解 224

11.3 標準註解 226

11.3.1 編譯用註解 226

11.3.2 元註解 227

11.4 在運行時處理註解 228

11.5 源碼級註解處理 230

11.5.1 註解處理器 230

11.5.2 語言模型 APl 230

11.5.3 使用註解生成源代碼 231

練習 232

第 12 章 日期和時間 API 234

12.1 時間線 234

12.2 本地日期 235

12.3 日期調整器 237

12.4 本地時間 238

12.5 時區時間 238

12.6 格式化和解析 240

12.7 與遺留代碼互操作 242

練習 243

第 13 章 國際化 244

13.1 區域設置 244

13.1.1 指定區域設置 245

13.1.2 默認區域設置 246

13.1.3 顯示名稱 247

13.2 數值格式 247

13.3 貨幣 248

13.4 日期和時間格式化 248

13.5 排序和規範化 249

13.6 消息格式化 250

13.7 資源包 251

13.7.1 組織資源包 252

13.7.2 包類 253

13.8 字符編碼 253

13.9 首選項 254

練習 255

第 14 章 編譯和腳本 256

14.1 編譯器 API 256

14.1.1 調用編譯器 256

14.1.2 啟動編譯任務 256

14.1.3 捕獲診斷信息 257

14.1.4 從內存讀取源文件 257

14.1.5 將字節碼寫入內存 257

14.2 腳本 API 258

14.2.1 獲取腳本引擎 258

14.2.2 腳本求值 259

14.2.3 綁定 259

14.2.4 重定向輸入和輸出 259

14.2.5 調用腳本函數和方法 260

14.2.6 編譯腳本 260

練習 261

第 15 章 Java 平臺模塊系統 262

15.1 模塊的概念 262

15.2 給模塊命名 263

15.3 模塊化“Hello,World!”程序 264

15.4 對模塊的需求 265

15.5 導出包 266

15.6 模塊和反射式訪問 267

15.7 模塊化 JAR 269

15.8 自動模塊 270

15.9 不具名模塊 271

15.10 用於遷移的命令行標志 271

15.11 傳遞性需求和靜態需求 272

15.12 限定導出和開放 273

15.13 服務加載 273

15.14 操作模塊的工具 274

練習 276