寫給大忙人看的Java核心技術

寫給大忙人看的Java核心技術

《寫給大忙人看的Java核心技術》是2016年1月電子工業出版社出版的圖書,作者是【美】Cay S. Horstmann(凱.S.霍斯特曼)。

內容簡介

《寫給大忙人看的Java核心技術》為經典著作Core Java作者Cay S. Horstmann的全新力作,以關鍵的核心技術為著眼點,以全局高度提煉語言精髓,以高濃度、高含金量的方式對Java 8新特性進行細緻講解,將其沉浸於Java多年的真知灼見蘊藏於書中,既紮實覆蓋Java編程的基礎知識,更獨具匠心地從Java 8極其重要的新特性之一lambda表達式發端,帶領讀者一路探索和實踐Java 8的諸多新特性,諸如針對數據處理的Stream、並發編程中的增強部分、全新的時間/日期API,以及腳本語言在Java中的使用。

“For the Impatient”系列風格鮮明,除悉數出自大師之手外,更以文筆輕鬆、易讀易懂、富含生動且可用於實踐的示例程式(下載原始碼後可直接運行)見長。這種親身實踐的講授模式,非常便於各階層讀者加深對技術的理解和掌握,初學者可用來參考入門,有開發經驗者也可用來鞏固編程核心知識,或與時俱進地把握技術發展現狀與未來趨勢。

《寫給大忙人看的Java核心技術》適合有一定Java開發經驗的工程師或者架構師閱讀,也可以作為Java新特性的參考手冊。

目錄

第1章 基本的編程結構............................................................................................. 1

1.1 第一個程式 ............................................................................................... 2

1.1.1 “Hello,World”程式解析 ............................................................................. 2

1.1.2 編譯與運行Java程式 ......................................................................................... 3

1.1.3 方法調用 ............................................................................................................ 5

1.2 基本類型 ................................................................................................. 7

1.2.1 整型 .................................................................................................................... 7

1.2.2 浮點類型 ............................................................................................................ 8

1.2.3 char型 ................................................................................................................. 9

1.2.4 布爾型 .............................................................................................................. 10

1.3 變數 .......................................................................................... 10

1.3.1 變數的聲明 ...................................................................................................... 10

1.3.2 名稱 .................................................................................................................. 10

1.3.3 初始化 ...............................................................................................................11

1.3.4 常量 ...................................................................................................................11

1.4 算術操作 .................................................................................................... 13

1.4.1 賦值 .................................................................................................................. 13

1.4.2 基本運算 .......................................................................................................... 14

1.4.3 數學方法 .......................................................................................................... 15

1.4.4 數字類型轉換 .................................................................................................. 16

1.4.5 關係和邏輯操作符 .......................................................................................... 17

1.4.6 大數 .................................................................................................................. 19

1.5 字元串 ................................................................................................. 19

1.5.1 字元串連線 ...................................................................................................... 20

1.5.2 子字元串 .......................................................................................................... 21

1.5.3 字元串比較 ...................................................................................................... 21

1.5.4 數字與字元串轉換 .......................................................................................... 23

1.5.5 String類API ...................................................................................................... 24

1.5.6 編碼點(code point)和編碼單元(code unit) ........................................... 25

1.6 輸入與輸出 .......................................................................................... 26

1.6.1 讀取輸入 .......................................................................................................... 27

1.6.2 格式化輸出 ...................................................................................................... 28

1.7 控制流 ........................................................................................................... 30

1.7.1 分支 .................................................................................................................. 30

1.7.2 循環 .................................................................................................................. 32

1.7.3 跳出循環與繼續循環 ...................................................................................... 34

1.7.4 局部變數作用域 .............................................................................................. 36

1.8 數組和數組列表 ................................................................................. 38

1.8.1 使用數組 .......................................................................................................... 38

1.8.2 構造數組 .......................................................................................................... 39

1.8.3 數組列表 .......................................................................................................... 39

1.8.4 基本類型包裝類 .............................................................................................. 41

1.8.5 增強的for循環 ................................................................................................. 41

1.8.6 數組與數組列表的複製 .................................................................................. 42

1.8.7 數組算法 .......................................................................................................... 43

1.8.8 命令行參數 ...................................................................................................... 44

1.8.9 多維數組 .......................................................................................................... 45

1.9 功能分解 ............................................................................................. 48

1.9.1 靜態方法的聲明與調用 .................................................................................. 48

1.9.2 數組參數與返回值 .......................................................................................... 48

1.9.3 可變參數 .......................................................................................................... 49

練習 ..................................................................................................................... 50

第2章 面向對象編程............................................................................................... 53

2.1 使用對象 .............................................................................................. 54

2.1.1 Accessor(訪問器)和Mutator(更改器)方法 ........................................... 56

2.1.2 對象引用 .......................................................................................................... 56

2.2 實現類 ............................................................................................... 58

2.2.1 實例變數 .......................................................................................................... 58

2.2.2 方法頭 .............................................................................................................. 59

2.2.3 方法體 .............................................................................................................. 59

2.2.4 實例方法調用 .................................................................................................. 60

2.2.5 this引用 ............................................................................................................ 61

2.2.6 值調用 .............................................................................................................. 62

2.3 構造對象 .......................................................................................... 63

2.3.1 實現構造函式 .................................................................................................. 64

2.3.2 重載 .................................................................................................................. 64

2.3.3 調用另一個構造函式 ...................................................................................... 65

2.3.4 默認初始化 ...................................................................................................... 66

2.3.5 實例變數初始化 .............................................................................................. 66

2.3.6 final實例變數 ................................................................................................... 67

2.3.7 無參構造函式 .................................................................................................. 68

2.4 靜態變數和方法 ...................................................................... 69

2.4.1 靜態變數 .......................................................................................................... 69

2.4.2 靜態常量 .......................................................................................................... 70

2.4.3 靜態初始塊 ...................................................................................................... 71

2.4.4 靜態方法 .......................................................................................................... 71

2.4.5 工廠方法 .......................................................................................................... 73

2.5 包 ........................................................................................................ 73

2.5.1 包的聲明 .......................................................................................................... 74

2.5.2 類路徑 .............................................................................................................. 75

2.5.3 包作用域 .......................................................................................................... 77

2.5.4 導入包 .............................................................................................................. 78

2.5.5 靜態導入 .......................................................................................................... 79

2.6 嵌套類 .............................................................................................. 80

2.6.1 靜態嵌套類 ...................................................................................................... 80

2.6.2 內部類 .............................................................................................................. 82

2.6.3 內部類的特殊語法 .......................................................................................... 85

2.7 文檔注釋 ......................................................................................... 86

2.7.1 插入注釋 .......................................................................................................... 86

2.7.2 類注釋 .............................................................................................................. 87

2.7.3 方法注釋 .......................................................................................................... 88

2.7.4 變數注釋 .......................................................................................................... 88

2.7.5 通用注釋 .......................................................................................................... 89

2.7.6 連結 .................................................................................................................. 89

2.7.7 包和概述注釋 .................................................................................................. 90

2.7.8 注釋的提取 ...................................................................................................... 90

練習 ................................................................................................................. 91

第3章 接口和lambda表達式................................................................................... 95

3.1 接口 ....................................................................................................... 96

3.1.1 聲明接口 .......................................................................................................... 96

3.1.2 實現接口 .......................................................................................................... 97

3.1.3 轉換為接口類型 .............................................................................................. 99

3.1.4 強制類型轉換(cast)和instanceof操作符 ................................................... 99

3.1.5 繼承接口 ........................................................................................................ 100

3.1.6 實現多個接口 ................................................................................................ 101

3.1.7 常量 ................................................................................................................ 101

3.2 靜態方法和默認方法 ....................................................................... 101

3.2.1 靜態方法 ........................................................................................................ 102

3.2.2 默認方法 ........................................................................................................ 102

3.2.3 解決默認方法衝突 ........................................................................................ 103

3.3 接口示例 ........................................................................................ 105

3.3.1 Comparable接口 ............................................................................................. 105

3.3.2 Comparator接口 ............................................................................................. 107

3.3.3 Runable接口 ................................................................................................... 108

3.3.4 UI(User Interface)回調 ............................................................................. 109

3.4 lambda表達式 .........................................................................................110

3.4.1 lambda表達式語法 .........................................................................................110

3.4.2 函式式接口 .....................................................................................................111

3.5 方法引用和構造函式引用 .........................................................112

3.5.1 方法引用 .........................................................................................................113

3.5.2 構造函式引用 ......................................................................114

3.6 使用lambda表達式 ...............................................................................115

3.6.1 實現延遲執行 .................................................................................................115

3.6.2 選擇函式式接口 .............................................................................................116

3.6.3 實現自己的函式式接口 .................................................................................118

3.7 lambda表達式和變數作用域 .....................................................119

3.7.1 lambda表達式的作用域 .................................................................................119

3.7.2 訪問來自閉合作用域的變數 ........................................................................ 120

3.8 高階函式 .......................................................................................... 123

3.8.1 返回函式的方法 ............................................................................................ 123

3.8.2 修改函式的方法 ............................................................................................ 123

3.8.3 Comparator方法 ............................................................................................. 124

3.9 局部內部類 ....................................................................... 125

3.9.1 局部類 ............................................................................................................ 125

3.9.2 匿名類 ............................................................................................................ 126

練習 .................................................................................................................................... 127

第4章 繼承與反射................................................................................................ 131

4.1 繼承一個類 ......................................................................................... 132

4.1.1 父類與子類 .................................................................................................... 132

4.1.2 定義和繼承子類方法 .................................................................................... 132

4.1.3 方法覆蓋 ........................................................................................................ 133

4.1.4 子類的構造 .................................................................................................... 134

4.1.5 父類賦值 ........................................................................................................ 135

4.1.6 轉換 ................................................................................................................ 136

4.1.7 final方法和類 ................................................................................................. 136

4.1.8 抽象方法和類 ................................................................................................ 137

4.1.9 受保護訪問 .................................................................................................... 138

4.1.10 匿名子類 ...................................................................................................... 139

4.1.11 繼承和默認方法 .......................................................................................... 140

4.1.12 帶super的方法表達式 ................................................................................. 141

4.2 Object:終極父類...................................................................................................... 141

4.2.1 toString方法 ................................................................................................... 142

4.2.2 equals方法 ...................................................................................................... 144

4.2.3 hashCode方法 ................................................................................................ 147

4.2.4 克隆對象 ........................................................................................................ 148

4.3 枚舉 ...................................................................................................... 151

4.3.1 枚舉方法 ........................................................................................................ 152

4.3.2 構造函式、方法和域 .................................................................................... 153

4.3.3 實例的實現體 ................................................................................................ 153

4.3.4 靜態成員 ........................................................................................................ 154

4.3.5 switch枚舉對象 .............................................................................................. 155

4.4 運行時類型信息和資源 ........................................................................... 156

4.4.1 Class類 ........................................................................................................... 156

4.4.2 資源載入 ........................................................................................................ 160

4.4.3 類載入器 ........................................................................................................ 160

4.4.4 上下文類載入器 ............................................................................................ 162

4.4.5 服務載入器 .................................................................................................... 164

4.5 反射 .............................................................................................. 165

4.5.1 枚舉類成員 .................................................................................................... 165

4.5.2 對象檢查 ........................................................................................................ 167

4.5.3 方法調用 ........................................................................................................ 167

4.5.4 對象構造 ........................................................................................................ 168

4.5.5 JavaBeans ....................................................................................................... 169

4.5.6 使用數組 ........................................................................................................ 170

4.5.7 代理 ................................................................................................................ 172

練習 .................................................................................................................................... 174

第5章 異常、斷言和日誌處理.............................................................................. 177

5.1 異常處理 ............................................................................................. 178

5.1.1 異常拋出 ........................................................................................................ 178

5.1.2 異常繼承層次 ................................................................................................ 179

5.1.3 已檢查異常的聲明 ........................................................................................ 181

5.1.4 異常捕獲 ........................................................................................................ 182

5.1.5 try-with-resources語句 ................................................................................... 183

5.1.6 finally子句 ...................................................................................................... 185

5.1.7 異常重拋和連結 ............................................................................................ 186

5.1.8 堆疊蹤跡 ........................................................................................................ 188

5.1.9 Objects.requireNonNull方法 .......................................................................... 189

5.2 斷言 ........................................................................................................ 189

5.2.1 使用斷言 ........................................................................................................ 190

5.2.2 啟用和禁用斷言 ............................................................................................ 191

5.3 記錄日誌 .................................................................................... 191

5.3.1 採用Logger ..................................................................................................... 192

5.3.2 日誌記錄器 .................................................................................................... 192

5.3.3 日誌級別 ........................................................................................................ 192

5.3.4 其他日誌記錄方法 ........................................................................................ 193

5.3.5 日誌記錄的配置項 ........................................................................................ 195

5.3.6 日誌處理器 .................................................................................................... 196

5.3.7 過濾器和格式化器 ........................................................................................ 199

練習 ......................................................................................................... 199

第6章 泛型編程.................................................................................................... 203

6.1 泛型類 ...................................................................................................... 204

6.2 泛型方法 ................................................................................................. 205

6.3 類型限定 .................................................................................................................. 206

6.4 類型變異和通配符 ................................................................................................. 207

6.4.1 子類型通配符 ................................................................................................ 208

6.4.2 父類型通配符 ................................................................................................ 209

6.4.3 帶類型變數的通配符 .................................................................................... 210

6.4.4 無限定通配符 ................................................................................................ 212

6.4.5 通配符捕獲 .................................................................................................... 212

6.5 Java虛擬機中的泛型 ............................................................................................ 213

6.5.1 類型擦除 ........................................................................................................ 213

6.5.2 轉換插入 ........................................................................................................ 214

6.5.3 橋方法 ............................................................................................................ 215

6.6 泛型約束 .............................................................................................................. 216

6.6.1 無基本類型參數 ............................................................................................ 217

6.6.2 所有類型在運行時都是原始的 .................................................................... 217

6.6.3 不能實例化類型變數 .................................................................................... 218

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

6.6.5 靜態上下文中的類類型變數不是有效的 .................................................... 221

6.6.6 類型擦除後的方法可能不衝突 .................................................................... 222

6.6.7 異常與泛型 .................................................................................................... 223

6.7 反射與泛型 .................................................................................................. 224

6.7.1 Class<T>類 .................................................................................................... 224

6.7.2 虛擬機中的泛型類型信息 ............................................................................ 225

練習 .................................................................................................................................... 227

第7章 集合........................................................................................................... 233

7.1 集合類框架概要 ........................................................................................ 234

7.2 疊代器 ............................................................................................... 238

7.3 set ............................................................................................................................... 240

7.4 map .......................................................................................................................... 241

7.5 其他集合 ......................................................................................................... 245

7.5.1 Properties ........................................................................................................ 245

7.5.2 位組 ................................................................................................................ 247

7.5.3 枚舉set和枚舉map ......................................................................................... 248

7.5.4 棧、佇列、雙端佇列、優先權佇列 ............................................................ 249

7.5.5 弱哈希映射表 ................................................................................................ 250

7.6 視圖 ......................................................................................................................... 251

7.6.1 範圍(range) ............................................................................................... 251

7.6.2 空視圖和單例視圖 ........................................................................................ 252

7.6.3 不可修改的視圖 ............................................................................................ 252

練習 ................................................................................................................................. 253

第8章 Stream....................................................................................................... 257

8.1 從疊代到Stream操作 .............................................................................................. 258

8.2 創建Stream .............................................................................................................. 259

8.3 filter、map和flatMap方法 ...................................................................................... 261

8.4 提取子流和組合流 ......................................................................................... 262

8.5 其他流轉換 ................................................................................................... 263

8.6 簡單歸約 .................................................................................................... 264

8.7 Optional類型 ................................................................................................. 265

8.7.1 如何使用Optional類型值 .............................................................................. 265

8.7.2 如何不使用Optional類型值 .......................................................................... 266

8.7.3 創建Optional類型值 ...................................................................................... 267

8.7.4 使用flatMap來組合可選值函式 .................................................................... 267

8.8 收集結果 ................................................................................................... 268

8.9 將結果收集到map中 ................................................................................... 270

8.10 分組和分片 ........................................................................................... 271

8.11 下游收集器 .............................................................................................. 272

8.12 歸約操作 ............................................................................................................... 274

8.13 基本類型流 ........................................................................................................... 276

8.14 並行流 ................................................................................................................... 278

練習 .................................................................................................................................. 280

第9章 輸入與輸出處理......................................................................................... 285

9.1 輸入/輸出流:Reader和Writer ................................................................................. 286

9.1.1 獲取流對象 .................................................................................................... 286

9.1.2 讀取位元組 ........................................................................................................ 287

9.1.3 寫位元組 ............................................................................................................ 288

9.1.4 字元集編碼 .................................................................................................... 288

9.1.5 文本輸入 ........................................................................................................ 291

9.1.6 文本輸出 ........................................................................................................ 292

9.1.7 讀寫二進制數據 ............................................................................................ 294

9.1.8 隨機存取檔案 ................................................................................................ 295

9.1.9 記憶體映射檔案 ................................................................................................ 295

9.1.10 檔案鎖 .......................................................................................................... 296

9.2 路徑、檔案和目錄 ............................................................................................... 297

9.2.1 路徑 ................................................................................................................ 297

9.2.2 創建檔案和目錄 ............................................................................................ 299

9.2.3 複製、移動和刪除檔案 ................................................................................ 300

9.2.4 訪問目錄內容 ................................................................................................ 301

9.2.5 ZIP檔案系統 .................................................................................................. 304

9.3 URL連線 ................................................................................................................ 305

9.4 正則表達式 ............................................................................................................ 307

9.4.1 正則表達式語法 ............................................................................................ 307

9.4.2 匹配一個或多個 .............................................................................................311

9.4.3 分組 ................................................................................................................ 312

9.4.4 消除或替換匹配結果 .................................................................................... 313

9.4.5 標記 ................................................................................................................ 314

9.5 序列化 ..................................................................................................... 315

9.5.1 Serializable接口 ............................................................................................. 315

9.5.2 瞬態實例變數 ................................................................................................ 317

9.5.3 readObject和writeObject方法 ........................................................................ 317

9.5.4 readResolve和writeReplace方法 ................................................................... 319

9.5.5 版本化 ............................................................................................................ 320

練習 ..................................................................................................................... 321

第10章 並發編程.................................................................................................. 325

10.1 並發任務 ................................................................................................. 326

10.1.1 運行任務 .................................................................................................... 326

10.1.2 Future和Executor服務 ............................................................................... 328

10.2 執行緒安全 ................................................................................................. 331

10.2.1 可見性 ........................................................................................................ 331

10.2.2 競爭條件 .................................................................................................... 333

10.2.3 安全並發的策略 ........................................................................................ 336

10.2.4 不可變類 .................................................................................................... 336

10.3 並行算法 ............................................................................................ 337

10.3.1 並行流 ........................................................................................................ 338

10.3.2 並行數組操作 ............................................................................................ 338

10.4 執行緒安全的數據結構 .............................................................................. 339

10.4.1 ConcurrentHashMap .................................................................................. 340

10.4.2 阻塞佇列 .................................................................................................... 341

10.4.3 其他執行緒安全的數據結構 ........................................................................ 343

10.5 原子值 ................................................................................................... 344

10.6 鎖 ........................................................................................................ 346

10.6.1 可重入鎖(ReentrantLock) .................................................................... 347

10.6.2 synchronized關鍵字................................................................................... 348

10.6.3 條件等待 .................................................................................................... 350

10.7 執行緒 ...................................................................................................... 352

10.7.1 啟動執行緒 .................................................................................................... 352

10.7.2 執行緒中斷 .................................................................................................... 353

10.7.3 執行緒變數 .................................................................................................... 355

10.7.4 執行緒的其他屬性 ........................................................................................ 356

10.8 異步計算 ....................................................................................................... 356

10.8.1 UI回調中的長期運行任務 ........................................................................ 356

10.8.2 可完成的future .......................................................................................... 358

10.9 進程 .............................................................................................. 361

10.9.1 構建進程 .................................................................................................... 361

10.9.2 運行進程 .................................................................................................... 363

練習 .................................................................................................. 364

第11章 註解......................................................................................................... 371

11.1 使用註解 ......................................................................................... 372

11.1.1 註解元素 .................................................................................................... 372

11.1.2 多註解和重複註解 .................................................................................... 373

11.1.3 註解聲明 .................................................................................................... 374

11.1.4 註解類型用途 ............................................................................................ 375

11.1.5 明確接收者 ................................................................................................ 376

11.2 定義註解 ......................................................................................... 378

11.3 標準註解 ................................................................................................ 380

11.3.1 編譯相關的註解 ........................................................................................ 381

11.3.2 資源管理相關的註解 ................................................................................ 382

11.3.3 元註解 ........................................................................................................ 382

11.4 運行時註解處理 ................................................................................. 384

11.5 源碼級註解處理 .................................................................................. 387

11.5.1 註解處理器 ................................................................................................ 388

11.5.2 語言模型API.............................................................................................. 388

11.5.3 使用註解生成源碼 .................................................................................... 389

練習 ............................................................................................. 392

第12章 日期和時間API......................................................................................... 395

12.1 時間線 ....................................................................................................... 396

12.2 本地日期 ........................................................................................... 398

12.3 日期調整器 ............................................................................................. 401

12.4 本地時間 ................................................................................................. 402

12.5 時區時間 ................................................................................ 403

12.6 格式化和解析 .............................................................................. 406

12.7 應對遺留代碼 ................................................................................. 409

練習 ............................................................................................................411

第13章 國際化...................................................................................................... 413

13.1 本地化 ............................................................................................ 414

13.1.1 指定本地化 ................................................................................................ 414

13.1.2 默認locale .................................................................................................. 417

13.1.3 顯示名稱 .................................................................................................... 418

13.2 數字格式化 ........................................................................................... 418

13.3 貨幣符號 ................................................................................................. 419

13.4 日期和時間格式化 ......................................................................... 420

13.5 排序和規格化 ........................................................................................... 422

13.6 訊息格式化 ........................................................................................ 424

13.7 資源束 ................................................................................................... 426

13.7.1 組織資源束 ................................................................................................ 426

13.7.2 資源束類 .................................................................................................... 428

13.8 字元集編碼 ................................................................................. 429

13.9 首選項 ............................................................................................... 430

練習 ................................................................................................................ 432

第14章 編譯與腳本.............................................................................................. 435

14.1 編譯器API ................................................................................................................ 435

14.1.1 調用編譯器 ................................................................................................ 436

14.1.2 啟動編譯任務 ............................................................................................ 436

14.1.3 從記憶體讀取源檔案 .................................................................................... 437

14.1.4 向記憶體寫入位元組碼 .................................................................................... 438

14.1.5 捕獲診斷信息 ............................................................................................ 440

14.2 腳本API .................................................................................................................... 440

14.2.1 獲取腳本引擎 ............................................................................................ 440

14.2.2 綁定 ............................................................................................................ 441

14.2.3 重定向輸入與輸出 .................................................................................... 442

14.2.4 調用腳本函式和方法 ................................................................................ 443

14.2.5 編譯腳本 .................................................................................................... 444

14.3 Nashorn腳本引擎 .............................................................................. 445

14.3.1 從命令行運行Nashorn .............................................................................. 445

14.3.2 調用get、set和重載方法 .......................................................................... 446

14.3.3 構造Java對象 ............................................................................................. 447

14.3.4 JavaScript和Java中的字元串 .................................................................... 449

14.3.5 數字 ............................................................................................................ 449

14.3.6 使用數組 .................................................................................................... 450

14.3.7 列表與映射 ................................................................................................ 451

14.3.8 lambda表達式 ............................................................................................ 452

14.3.9 繼承Java類與實現Java接口 ...................................................................... 453

14.3.10 異常 .......................................................................................................... 455

14.4 shell腳本與Nashorn .............................................................................. 455

14.4.1 執行shell命令 ............................................................................................ 456

14.4.2 字元串插值 ................................................................................................ 456

14.4.3 腳本輸入 .................................................................................................... 457

練習 .................................................................................................... 458

相關詞條

熱門詞條

聯絡我們