Java核心技術 卷I:開發(fā)基礎(原書第12版)
定 價:149 元
叢書名:Java核心技術系列
- 作者:(美) 凱· S. 霍斯特曼(Cay S. Horstmann)
- 出版時間:2022/6/1
- ISBN:9787111706410
- 出 版 社:機械工業(yè)出版社
- 中圖法分類:TP312.8
- 頁碼:688
- 紙張:
- 版次:
- 開本:16
《Java核心技術》第12版卷Ⅰ經全面修訂,以涵蓋Java17的新特性。新版延續(xù)之前版本的優(yōu)良傳統,利用清晰明了的示例加以解釋,著力讓讀者在充分理解Java語言和Java類庫的基礎上,能夠靈活應用Java提供的高級特性,具體內容包括面向對象程序設計、反射與代理、接口與內部類、異常處理、泛型程序設計、集合框架、事件監(jiān)聽器模型、圖形用戶界面設計和并發(fā)。
譯者序
前言
致謝
第1章 Java程序設計概述 1
1.1 Java程序設計平臺 1
1.2 Java白皮書的關鍵術語 2
1.2.1 簡單性 2
1.2.2 面向對象 3
1.2.3 分布式 3
1.2.4 健壯性 3
1.2.5 安全性 3
1.2.6 體系結構中立 4
1.2.7 可移植性 4
1.2.8 解釋性 5
1.2.9 高性能 5
1.2.10 多線程 5
1.2.11 動態(tài)性 6
1.3 Java applet與Internet 6
1.4 Java發(fā)展簡史 7
1.5 關于Java的常見誤解 10
第2章 Java編程環(huán)境 12
2.1 安裝Java開發(fā)工具包 12
2.1.1 下載JDK 12
2.1.2 設置JDK 13
2.1.3 安裝源文件和文檔 15
2.2 使用命令行工具 15
2.3 使用集成開發(fā)環(huán)境 19
2.4 JShell 22
第3章 Java的基本程序設計結構 25
3.1 一個簡單的Java程序 25
3.2 注釋 28
3.3 數據類型 28
3.3.1 整型 29
3.3.2 浮點類型 30
3.3.3 char類型 31
3.3.4 Unicode和char類型 31
3.3.5 boolean類型 32
3.4 變量與常量 33
3.4.1 聲明變量 33
3.4.2 初始化變量 34
3.4.3 常量 35
3.4.4 枚舉類型 35
3.5 運算符 36
3.5.1 算術運算符 36
3.5.2 數學函數與常量 36
3.5.3 數值類型之間的轉換 38
3.5.4 強制類型轉換 39
3.5.5 賦值 39
3.5.6 自增與自減運算符 40
3.5.7 關系和boolean運算符 40
3.5.8 條件運算符 41
3.5.9 switch表達式 41
3.5.10 位運算符 42
3.5.11 括號與運算符級別 43
3.6 字符串 44
3.6.1 子串 44
3.6.2 拼接 44
3.6.3 字符串不可變 45
3.6.4 檢測字符串是否相等 46
3.6.5 空串與Null串 47
3.6.6 碼點與代碼單元 47
3.6.7 String API 49
3.6.8 閱讀聯機API文檔 51
3.6.9 構建字符串 53
3.6.10 文本塊 54
3.7 輸入與輸出 56
3.7.1 讀取輸入 56
3.7.2 格式化輸出 58
3.7.3 文件輸入與輸出 60
3.8 控制流程 62
3.8.1 塊作用域 62
3.8.2 條件語句 63
3.8.3 循環(huán) 64
3.8.4 確定性循環(huán) 68
3.8.5 多重選擇:switch語句 71
3.8.6 中斷控制流程的語句 75
3.9 大數 77
3.10 數組 79
3.10.1 聲明數組 79
3.10.2 訪問數組元素 81
3.10.3 for each循環(huán) 81
3.10.4 數組拷貝 82
3.10.5 命令行參數 83
3.10.6 數組排序 84
3.10.7 多維數組 86
3.10.8 不規(guī)則數組 89
第4章 對象與類 92
4.1 面向對象程序設計概述 92
4.1.1 類 93
4.1.2 對象 94
4.1.3 識別類 94
4.1.4 類之間的關系 95
4.2 使用預定義類 96
4.2.1 對象與對象變量 96
4.2.2 Java類庫中的LocalDate類 99
4.2.3 更改器方法與訪問器方法 101
4.3 自定義類 104
4.3.1 Employee類 104
4.3.2 使用多個源文件 106
4.3.3 剖析Employee類 107
4.3.4 從構造器開始 108
4.3.5 用var聲明局部變量 109
4.3.6 使用null引用 109
4.3.7 隱式參數與顯式參數 110
4.3.8 封裝的優(yōu)點 111
4.3.9 基于類的訪問權限 113
4.3.10 私有方法 114
4.3.11 f?inal實例字段 114
4.4 靜態(tài)字段與靜態(tài)方法 115
4.4.1 靜態(tài)字段 115
4.4.2 靜態(tài)常量 116
4.4.3 靜態(tài)方法 116
4.4.4 工廠方法 117
4.4.5 main方法 118
4.5 方法參數 120
4.6 對象構造 125
4.6.1 重載 126
4.6.2 默認字段初始化 126
4.6.3 無參數的構造器 126
4.6.4 顯式字段初始化 127
4.6.5 參數名 128
4.6.6 調用另一個構造器 129
4.6.7 初始化塊 129
4.6.8 對象析構與f?inalize方法 133
4.7 記錄 134
4.7.1 記錄概念 134
4.7.2 構造器:標準、自定義和簡潔 136
4.8 包 138
4.8.1 包名 138
4.8.2 類的導入 138
4.8.3 靜態(tài)導入 140
4.8.4 在包中增加類 140
4.8.5 包訪問 143
4.8.6 類路徑 144
4.8.7 設置類路徑 146
4.9 JAR文件 146
4.9.1 創(chuàng)建JAR文件 146
4.9.2 清單文件 147
4.9.3 可執(zhí)行JAR文件 148
4.9.4 多版本JAR文件 149
4.9.5 關于命令行選項的說明 150
4.10 文檔注釋 151
4.10.1 注釋的插入 151
4.10.2 類注釋 152
4.10.3 方法注釋 152
4.10.4 字段注釋 153
4.10.5 通用注釋 153
4.10.6 包注釋 154
4.10.7 注釋提取 154
4.11 類設計技巧 155
第5章 繼承 158
5.1 類、超類和子類 158
5.1.1 定義子類 158
5.1.2 覆蓋方法 160
5.1.3 子類構造器 161
5.1.4 繼承層次結構 165
5.1.5 多態(tài) 165
5.1.6 理解方法調用 166
5.1.7 阻止繼承:f?inal類和方法 169
5.1.8 強制類型轉換 170
5.1.9 instanceof模式匹配 172
5.1.10 受保護訪問 173
5.2 Object:所有類的超類 174
5.2.1 Object類型的變量 174
5.2.2 equals方法 175
5.2.3 相等測試與繼承 176
5.2.4 hashCode方法 179
5.2.5 toString方法 181
5.3 泛型數組列表 186
5.3.1 聲明數組列表 187
5.3.2 訪問數組列表元素 189
5.3.3 類型化與原始數組列表的兼容性 192
5.4 對象包裝器與自動裝箱 193
5.5 參數個數可變的方法 196
5.6 抽象類 197
5.7 枚舉類 201
5.8 密封類 203
5.9 反射 208
5.9.1 Class類 209
5.9.2 聲明異常入門 211
5.9.3 資源 212
5.9.4 利用反射分析類的能力 213
5.9.5 使用反射在運行時分析對象 220
5.9.6 使用反射編寫泛型數組代碼 224
5.9.7 調用任意方法和構造器 227
5.10 繼承的設計技巧 231
第6章 接口、lambda表達式與內部類 233
6.1 接口 233
6.1.1 接口的概念 233
6.1.2 接口的屬性 239
6.1.3 接口與抽象類 240
6.1.4 靜態(tài)和私有方法 241
6.1.5 默認方法 241
6.1.6 解決默認方法沖突 242
6.1.7 接口與回調 244
6.1.8 Comparator接口 246
6.1.9 對象克隆 247
6.2 lambda表達式 252
6.2.1 為什么引入lambda表達式 253
6.2.2 lambda表達式的語法 254
6.2.3 函數式接口 256
6.2.4 方法引用 258
6.2.5 構造器引用 260
6.2.6 變量作用域 261
6.2.7 處理lambda表達式 263
6.2.8 再談Comparator 266
6.3 內部類 267
6.3.1 使用內部類訪問對象狀態(tài) 267
6.3.2 內部類的特殊語法規(guī)則 270
6.3.3 內部類是否有用、必要和安全 271
6.3.4 局部內部類 273
6.3.5 由外部方法訪問變量 274
6.3.6 匿名內部類 275
6.3.7 靜態(tài)內部類 278
6.4 服務加載器 281
6.5 代理 283
6.5.1 何時使用代理 284
6.5.2 創(chuàng)建代理對象 284
6.5.3 代理類的特性 288
第7章 異常、斷言和日志 290
7.1 處理錯誤 290
7.1.1 異常分類 291
7.1.2 聲明檢查型異常 293
7.1.3 如何拋出異常 295
7.1.4 創(chuàng)建異常類 296
7.2 捕獲異常 297
7.2.1 捕獲異常概述 297
7.2.2 捕獲多個異常 299
7.2.3 再次拋出異常與異常鏈 300
7.2.4 f?inally子句 301
7.2.5 try-with-Resources語句 303
7.2.6 分析棧軌跡元素 305
7.3 使用異常的技巧 308
7.4 使用斷言 311
7.4.1 斷言的概念 312
7.4.2 啟用和禁用斷言 313
7.4.3 使用斷言完成參數檢查 313
7.4.4 使用斷言提供假設文檔 314
7.5 日志 315
7.5.1 基本日志 316
7.5.2 高級日志 316
7.5.3 修改日志管理器配置 318
7.5.4 本地化 320
7.5.5 處理器 321
7.5.6 過濾器 324
7.5.7 格式化器 324
7.5.8 日志技巧 324
7.6 調試技巧 332
第8章 泛型程序設計 337
8.1 為什么要使用泛型程序設計 337
8.1.1 類型參數的好處 337
8.1.2 誰想成為泛型程序員 338
8.2 定義簡單泛型類 339
8.3 泛型方法 341
8.4 類型變量的限定 342
8.5 泛型代碼和虛擬機 344
8.5.1 類型擦除 344
8.5.2 轉換泛型表達式 346
8.5.3 轉換泛型方法 346
8.5.4 調用遺留代碼 348
8.6 限制與局限性 349
8.6.1 不能用基本類型實例化類型參數 349
8.6.2 運行時類型查詢只適用于原始類型 349
8.6.3 不能創(chuàng)建參數化類型的數組 349
8.6.4 Varargs警告 350
8.6.5 不能實例化類型變量 351
8.6.6 不能構造泛型數組 352
8.6.7 泛型類的靜態(tài)上下文中類型變量無效 353
8.6.8 不能拋出或捕獲泛型類的實例 354
8.6.9 可以取消對檢查型異常的檢查 354
8.6.10 注意擦除后的沖突 356
8.7 泛型類型的繼承規(guī)則 357
8.8 通配符類型 359
8.8.1 通配符概念 359
8.8.2 通配符的超類型限定 360
8.8.3 無限定通配符 363
8.8.4 通配符捕獲 363
8.9 反射和泛型 365
8.9.1 泛型Class類 365
8.9.2 使用Class參數進行類型匹配 366
8.9.3 虛擬機中的泛型類型信息 367
8.9.4 類型字面量 370
第9章 集合 376
9.1 Java集合框架 376
9.1.1 集合接口與實現分離 376
9.1.2 Collection接口 379
9.1.3 迭代器 379
9.1.4 泛型實用方法 382
9.2 集合框架中的接口 384
9.3 具體集合 386
9.3.1 鏈表 387
9.3.2 數組列表 395
9.3.3 散列集 396
9.3.4 樹集 399
9.3.5 隊列與雙端隊列 403
9.3.6 優(yōu)先隊列 404
9.4 映射 405
9.4.1 基本映射操作 405
9.4.2 更新映射條目 408
9.4.3 映射視圖 409
9.4.4 弱散列映射 411
9.4.5 鏈接散列集與映射 412
9.4.6 枚舉集與映射 413
9.4.7 標識散列映射 413
9.5 副本與視圖 415
9.5.1 小集合 415
9.5.2 不可修改的副本和視圖 417
9.5.3 子范圍 418
9.5.4 檢查型視圖 419
9.5.5 同步視圖 419
9.5.6 關于可選操作的說明 420
9.6 算法 423
9.6.1 為什么使用泛型算法 423
9.6.2 排序與混排 424
9.6.3 二分查找 427
9.6.4 簡單算法 428
9.6.5 批操作 429
9.6.6 集合與數組的轉換 430
9.6.7 編寫自己的算法 431
9.7 遺留的集合 432
9.7.1 Hashtable類 432
9.7.2 枚舉 432
9.7.3 屬性映射 433
9.7.4 棧 436
9.7.5 位集 437
第10章 圖形用戶界面程序設計 441
10.1 Java用戶界面工具包簡史 441
10.2 顯示窗體 442
10.2.1 創(chuàng)建窗體 442
10.2.2 窗體屬性 444
10.3 在組件中顯示信息 448
10.3.1 處理2D圖形 452
10.3.2 使用顏色 458
10.3.3 使用字體 459
10.3.4 顯示圖像 465
10.4 事件處理 466
10.4.1 基本事件處理概念 466
10.4.2 實例:處理按鈕點擊事件 467
10.4.3 簡潔地指定監(jiān)聽器 471
10.4.4 適配器類 472
10.4.5 動作 473
10.4.6 鼠標事件 478
10.4.7 AWT事件繼承層次結構 482
10.5 首選項API 485
第11章 Swing用戶界面組件 491
11.1 Swing和模型-視圖-控制器設計模式 491
11.2 布局管理概述 495
11.2.1 布局管理器 495
11.2.2 邊框布局 497
11.2.3 網格布局 498
11.3 文本輸入 499
11.3.1 文本域 499
11.3.2 標簽和標簽組件 501
11.3.3 密碼域 502
11.3.4 文本區(qū) 502
11.3.5 滾動窗格 503
11.4 選擇組件 505
11.4.1 復選框 506
11.4.2 單選按鈕 508
11.4.3 邊框 511
11.4.4 組合框 513
11.4.5 滑動條 516
11.5 菜單 522
11.5.1 菜單構建 522
11.5.2 菜單項中的圖標 524
11.5.3 復選框和單選按鈕菜單項 525
11.5.4 彈出菜單 526
11.5.5 鍵盤助記符和加速器 527
11.5.6 啟用和禁用菜單項 528
11.5.7 工具欄 532
11.5.8 工具提示 534
11.6 復雜的布局管理 534
11.6.1 網格包布局 535
11.6.2 定制布局管理器 543
11.7 對話框 547
11.7.1 選項對話框 547
11.7.2 創(chuàng)建對話框 551
11.7.3 數據交換 554
11.7.4 文件對話框 560
第12章 并發(fā) 567
12.1 什么是線程 567
12.2 線程狀態(tài) 572
12.2.1 新建線程 572
12.2.2 可運行線程 572
12.2.3 阻塞和等待線程 573
12.2.4 終止線程 573
12.3 線程屬性 575
12.3.1 中斷線程 575
12.3.2 守護線程 578
12.3.3 線程名 578
12.3.4 未捕獲異常的處理器 578
12.3.5 線程優(yōu)先級 579
12.4 同步 580
12.4.1 競態(tài)條件的一個例子 580
12.4.2 競態(tài)條件詳解 582
12.4.3 鎖對象 584
12.4.4 條件對象 587
12.4.5 synchronized關鍵字 591
12.4.6 同步塊 595
12.4.7 監(jiān)視器概念 597
12.4.8 volatile字段 597
12.4.9 f?inal變量 598
12.4.10 原子性 599
12.4.11 死鎖 600
12.4.12 為什么廢棄stop和suspend方法 603
12.4.13 按需初始化 604
12.4.14 線程局部變量 605
12.5 線程安全的集合 606
12.5.1 阻塞隊列 607
12.5.2 高效的映射、集和隊列 612
12.5.3 映射條目的原子更新 614
12.5.4 并發(fā)散列映射的批操作 617
12.5.5 并發(fā)集視圖 618
12.5.6 寫時拷貝數組 619
12.5.7 并行數組算法 619
12.5.8 較早的線程安全集合 620
12.6 任務和線程池 621
12.6.1 Callable與Future 621
12.6.2 執(zhí)行器 622
12.6.3 控制任務組 625
12.6.4 fork-join框架 630
12.7 異步計算 632
12.7.1 可完成Future 632
12.7.2 組合可完成Future 634
12.7.3 用戶界面回調中的長時間運行任務 639
12.8 進程 646
12.8.1 建立進程 646
12.8.2 運行進程 647
12.8.3 進程句柄 648
附錄 Java關鍵字 652