Java核心技術(shù) 卷I:開發(fā)基礎(chǔ)(原書第12版)
定 價(jià):149 元
叢書名:Java核心技術(shù)系列
- 作者:(美) 凱· S. 霍斯特曼(Cay S. Horstmann)
- 出版時(shí)間:2022/6/1
- ISBN:9787111706410
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:TP312.8
- 頁碼:688
- 紙張:
- 版次:
- 開本:16
《Java核心技術(shù)》第12版卷Ⅰ經(jīng)全面修訂,以涵蓋Java17的新特性。新版延續(xù)之前版本的優(yōu)良傳統(tǒng),利用清晰明了的示例加以解釋,著力讓讀者在充分理解Java語言和Java類庫的基礎(chǔ)上,能夠靈活應(yīng)用Java提供的高級特性,具體內(nèi)容包括面向?qū)ο蟪绦蛟O(shè)計(jì)、反射與代理、接口與內(nèi)部類、異常處理、泛型程序設(shè)計(jì)、集合框架、事件監(jiān)聽器模型、圖形用戶界面設(shè)計(jì)和并發(fā)。
譯者序
前言
致謝
第1章 Java程序設(shè)計(jì)概述 1
1.1 Java程序設(shè)計(jì)平臺(tái) 1
1.2 Java白皮書的關(guān)鍵術(shù)語 2
1.2.1 簡單性 2
1.2.2 面向?qū)ο? 3
1.2.3 分布式 3
1.2.4 健壯性 3
1.2.5 安全性 3
1.2.6 體系結(jié)構(gòu)中立 4
1.2.7 可移植性 4
1.2.8 解釋性 5
1.2.9 高性能 5
1.2.10 多線程 5
1.2.11 動(dòng)態(tài)性 6
1.3 Java applet與Internet 6
1.4 Java發(fā)展簡史 7
1.5 關(guān)于Java的常見誤解 10
第2章 Java編程環(huán)境 12
2.1 安裝Java開發(fā)工具包 12
2.1.1 下載JDK 12
2.1.2 設(shè)置JDK 13
2.1.3 安裝源文件和文檔 15
2.2 使用命令行工具 15
2.3 使用集成開發(fā)環(huán)境 19
2.4 JShell 22
第3章 Java的基本程序設(shè)計(jì)結(jié)構(gòu) 25
3.1 一個(gè)簡單的Java程序 25
3.2 注釋 28
3.3 數(shù)據(jù)類型 28
3.3.1 整型 29
3.3.2 浮點(diǎn)類型 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 運(yùn)算符 36
3.5.1 算術(shù)運(yùn)算符 36
3.5.2 數(shù)學(xué)函數(shù)與常量 36
3.5.3 數(shù)值類型之間的轉(zhuǎn)換 38
3.5.4 強(qiáng)制類型轉(zhuǎn)換 39
3.5.5 賦值 39
3.5.6 自增與自減運(yùn)算符 40
3.5.7 關(guān)系和boolean運(yùn)算符 40
3.5.8 條件運(yùn)算符 41
3.5.9 switch表達(dá)式 41
3.5.10 位運(yùn)算符 42
3.5.11 括號(hào)與運(yùn)算符級別 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 碼點(diǎn)與代碼單元 47
3.6.7 String API 49
3.6.8 閱讀聯(lián)機(jī)API文檔 51
3.6.9 構(gòu)建字符串 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 大數(shù) 77
3.10 數(shù)組 79
3.10.1 聲明數(shù)組 79
3.10.2 訪問數(shù)組元素 81
3.10.3 for each循環(huán) 81
3.10.4 數(shù)組拷貝 82
3.10.5 命令行參數(shù) 83
3.10.6 數(shù)組排序 84
3.10.7 多維數(shù)組 86
3.10.8 不規(guī)則數(shù)組 89
第4章 對象與類 92
4.1 面向?qū)ο蟪绦蛟O(shè)計(jì)概述 92
4.1.1 類 93
4.1.2 對象 94
4.1.3 識(shí)別類 94
4.1.4 類之間的關(guān)系 95
4.2 使用預(yù)定義類 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 使用多個(gè)源文件 106
4.3.3 剖析Employee類 107
4.3.4 從構(gòu)造器開始 108
4.3.5 用var聲明局部變量 109
4.3.6 使用null引用 109
4.3.7 隱式參數(shù)與顯式參數(shù) 110
4.3.8 封裝的優(yōu)點(diǎn) 111
4.3.9 基于類的訪問權(quán)限 113
4.3.10 私有方法 114
4.3.11 f?inal實(shí)例字段 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 方法參數(shù) 120
4.6 對象構(gòu)造 125
4.6.1 重載 126
4.6.2 默認(rèn)字段初始化 126
4.6.3 無參數(shù)的構(gòu)造器 126
4.6.4 顯式字段初始化 127
4.6.5 參數(shù)名 128
4.6.6 調(diào)用另一個(gè)構(gòu)造器 129
4.6.7 初始化塊 129
4.6.8 對象析構(gòu)與f?inalize方法 133
4.7 記錄 134
4.7.1 記錄概念 134
4.7.2 構(gòu)造器:標(biāo)準(zhǔn)、自定義和簡潔 136
4.8 包 138
4.8.1 包名 138
4.8.2 類的導(dǎo)入 138
4.8.3 靜態(tài)導(dǎo)入 140
4.8.4 在包中增加類 140
4.8.5 包訪問 143
4.8.6 類路徑 144
4.8.7 設(shè)置類路徑 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 關(guān)于命令行選項(xiàng)的說明 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 類設(shè)計(jì)技巧 155
第5章 繼承 158
5.1 類、超類和子類 158
5.1.1 定義子類 158
5.1.2 覆蓋方法 160
5.1.3 子類構(gòu)造器 161
5.1.4 繼承層次結(jié)構(gòu) 165
5.1.5 多態(tài) 165
5.1.6 理解方法調(diào)用 166
5.1.7 阻止繼承:f?inal類和方法 169
5.1.8 強(qiáng)制類型轉(zhuǎn)換 170
5.1.9 instanceof模式匹配 172
5.1.10 受保護(hù)訪問 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 泛型數(shù)組列表 186
5.3.1 聲明數(shù)組列表 187
5.3.2 訪問數(shù)組列表元素 189
5.3.3 類型化與原始數(shù)組列表的兼容性 192
5.4 對象包裝器與自動(dòng)裝箱 193
5.5 參數(shù)個(gè)數(shù)可變的方法 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 使用反射在運(yùn)行時(shí)分析對象 220
5.9.6 使用反射編寫泛型數(shù)組代碼 224
5.9.7 調(diào)用任意方法和構(gòu)造器 227
5.10 繼承的設(shè)計(jì)技巧 231
第6章 接口、lambda表達(dá)式與內(nèi)部類 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 默認(rèn)方法 241
6.1.6 解決默認(rèn)方法沖突 242
6.1.7 接口與回調(diào) 244
6.1.8 Comparator接口 246
6.1.9 對象克隆 247
6.2 lambda表達(dá)式 252
6.2.1 為什么引入lambda表達(dá)式 253
6.2.2 lambda表達(dá)式的語法 254
6.2.3 函數(shù)式接口 256
6.2.4 方法引用 258
6.2.5 構(gòu)造器引用 260
6.2.6 變量作用域 261
6.2.7 處理lambda表達(dá)式 263
6.2.8 再談Comparator 266
6.3 內(nèi)部類 267
6.3.1 使用內(nèi)部類訪問對象狀態(tài) 267
6.3.2 內(nèi)部類的特殊語法規(guī)則 270
6.3.3 內(nèi)部類是否有用、必要和安全 271
6.3.4 局部內(nèi)部類 273
6.3.5 由外部方法訪問變量 274
6.3.6 匿名內(nèi)部類 275
6.3.7 靜態(tài)內(nèi)部類 278
6.4 服務(wù)加載器 281
6.5 代理 283
6.5.1 何時(shí)使用代理 284
6.5.2 創(chuàng)建代理對象 284
6.5.3 代理類的特性 288
第7章 異常、斷言和日志 290
7.1 處理錯(cuò)誤 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 捕獲多個(gè)異常 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 使用斷言完成參數(shù)檢查 313
7.4.4 使用斷言提供假設(shè)文檔 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 調(diào)試技巧 332
第8章 泛型程序設(shè)計(jì) 337
8.1 為什么要使用泛型程序設(shè)計(jì) 337
8.1.1 類型參數(shù)的好處 337
8.1.2 誰想成為泛型程序員 338
8.2 定義簡單泛型類 339
8.3 泛型方法 341
8.4 類型變量的限定 342
8.5 泛型代碼和虛擬機(jī) 344
8.5.1 類型擦除 344
8.5.2 轉(zhuǎn)換泛型表達(dá)式 346
8.5.3 轉(zhuǎn)換泛型方法 346
8.5.4 調(diào)用遺留代碼 348
8.6 限制與局限性 349
8.6.1 不能用基本類型實(shí)例化類型參數(shù) 349
8.6.2 運(yùn)行時(shí)類型查詢只適用于原始類型 349
8.6.3 不能創(chuàng)建參數(shù)化類型的數(shù)組 349
8.6.4 Varargs警告 350
8.6.5 不能實(shí)例化類型變量 351
8.6.6 不能構(gòu)造泛型數(shù)組 352
8.6.7 泛型類的靜態(tài)上下文中類型變量無效 353
8.6.8 不能拋出或捕獲泛型類的實(shí)例 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參數(shù)進(jìn)行類型匹配 366
8.9.3 虛擬機(jī)中的泛型類型信息 367
8.9.4 類型字面量 370
第9章 集合 376
9.1 Java集合框架 376
9.1.1 集合接口與實(shí)現(xiàn)分離 376
9.1.2 Collection接口 379
9.1.3 迭代器 379
9.1.4 泛型實(shí)用方法 382
9.2 集合框架中的接口 384
9.3 具體集合 386
9.3.1 鏈表 387
9.3.2 數(shù)組列表 395
9.3.3 散列集 396
9.3.4 樹集 399
9.3.5 隊(duì)列與雙端隊(duì)列 403
9.3.6 優(yōu)先隊(duì)列 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 標(biāo)識(shí)散列映射 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 關(guān)于可選操作的說明 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 集合與數(shù)組的轉(zhuǎn)換 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章 圖形用戶界面程序設(shè)計(jì) 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 實(shí)例:處理按鈕點(diǎn)擊事件 467
10.4.3 簡潔地指定監(jiān)聽器 471
10.4.4 適配器類 472
10.4.5 動(dòng)作 473
10.4.6 鼠標(biāo)事件 478
10.4.7 AWT事件繼承層次結(jié)構(gòu) 482
10.5 首選項(xiàng)API 485
第11章 Swing用戶界面組件 491
11.1 Swing和模型-視圖-控制器設(shè)計(jì)模式 491
11.2 布局管理概述 495
11.2.1 布局管理器 495
11.2.2 邊框布局 497
11.2.3 網(wǎng)格布局 498
11.3 文本輸入 499
11.3.1 文本域 499
11.3.2 標(biāo)簽和標(biāo)簽組件 501
11.3.3 密碼域 502
11.3.4 文本區(qū) 502
11.3.5 滾動(dòng)窗格 503
11.4 選擇組件 505
11.4.1 復(fù)選框 506
11.4.2 單選按鈕 508
11.4.3 邊框 511
11.4.4 組合框 513
11.4.5 滑動(dòng)條 516
11.5 菜單 522
11.5.1 菜單構(gòu)建 522
11.5.2 菜單項(xiàng)中的圖標(biāo) 524
11.5.3 復(fù)選框和單選按鈕菜單項(xiàng) 525
11.5.4 彈出菜單 526
11.5.5 鍵盤助記符和加速器 527
11.5.6 啟用和禁用菜單項(xiàng) 528
11.5.7 工具欄 532
11.5.8 工具提示 534
11.6 復(fù)雜的布局管理 534
11.6.1 網(wǎng)格包布局 535
11.6.2 定制布局管理器 543
11.7 對話框 547
11.7.1 選項(xiàng)對話框 547
11.7.2 創(chuàng)建對話框 551
11.7.3 數(shù)據(jù)交換 554
11.7.4 文件對話框 560
第12章 并發(fā) 567
12.1 什么是線程 567
12.2 線程狀態(tài) 572
12.2.1 新建線程 572
12.2.2 可運(yùn)行線程 572
12.2.3 阻塞和等待線程 573
12.2.4 終止線程 573
12.3 線程屬性 575
12.3.1 中斷線程 575
12.3.2 守護(hù)線程 578
12.3.3 線程名 578
12.3.4 未捕獲異常的處理器 578
12.3.5 線程優(yōu)先級 579
12.4 同步 580
12.4.1 競態(tài)條件的一個(gè)例子 580
12.4.2 競態(tài)條件詳解 582
12.4.3 鎖對象 584
12.4.4 條件對象 587
12.4.5 synchronized關(guān)鍵字 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 阻塞隊(duì)列 607
12.5.2 高效的映射、集和隊(duì)列 612
12.5.3 映射條目的原子更新 614
12.5.4 并發(fā)散列映射的批操作 617
12.5.5 并發(fā)集視圖 618
12.5.6 寫時(shí)拷貝數(shù)組 619
12.5.7 并行數(shù)組算法 619
12.5.8 較早的線程安全集合 620
12.6 任務(wù)和線程池 621
12.6.1 Callable與Future 621
12.6.2 執(zhí)行器 622
12.6.3 控制任務(wù)組 625
12.6.4 fork-join框架 630
12.7 異步計(jì)算 632
12.7.1 可完成Future 632
12.7.2 組合可完成Future 634
12.7.3 用戶界面回調(diào)中的長時(shí)間運(yùn)行任務(wù) 639
12.8 進(jìn)程 646
12.8.1 建立進(jìn)程 646
12.8.2 運(yùn)行進(jìn)程 647
12.8.3 進(jìn)程句柄 648
附錄 Java關(guān)鍵字 652