Java核心技術(shù) 卷I:開(kāi)發(fā)基礎(chǔ)(原書(shū)第12版)
定 價(jià):149 元
叢書(shū)名:Java核心技術(shù)系列
- 作者:(美) 凱· S. 霍斯特曼(Cay S. Horstmann)
- 出版時(shí)間:2022/6/1
- ISBN:9787111706410
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:TP312.8
- 頁(yè)碼:688
- 紙張:
- 版次:
- 開(kāi)本:16
《Java核心技術(shù)》第12版卷Ⅰ經(jīng)全面修訂,以涵蓋Java17的新特性。新版延續(xù)之前版本的優(yōu)良傳統(tǒng),利用清晰明了的示例加以解釋,著力讓讀者在充分理解Java語(yǔ)言和Java類庫(kù)的基礎(chǔ)上,能夠靈活應(yīng)用Java提供的高級(jí)特性,具體內(nèi)容包括面向?qū)ο蟪绦蛟O(shè)計(jì)、反射與代理、接口與內(nèi)部類、異常處理、泛型程序設(shè)計(jì)、集合框架、事件監(jiān)聽(tīng)器模型、圖形用戶界面設(shè)計(jì)和并發(fā)。
譯者序
前言
致謝
第1章 Java程序設(shè)計(jì)概述 1
1.1 Java程序設(shè)計(jì)平臺(tái) 1
1.2 Java白皮書(shū)的關(guān)鍵術(shù)語(yǔ) 2
1.2.1 簡(jiǎn)單性 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ā)展簡(jiǎn)史 7
1.5 關(guān)于Java的常見(jiàn)誤解 10
第2章 Java編程環(huán)境 12
2.1 安裝Java開(kāi)發(fā)工具包 12
2.1.1 下載JDK 12
2.1.2 設(shè)置JDK 13
2.1.3 安裝源文件和文檔 15
2.2 使用命令行工具 15
2.3 使用集成開(kāi)發(fā)環(huán)境 19
2.4 JShell 22
第3章 Java的基本程序設(shè)計(jì)結(jié)構(gòu) 25
3.1 一個(gè)簡(jiǎn)單的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)算符級(jí)別 43
3.6 字符串 44
3.6.1 子串 44
3.6.2 拼接 44
3.6.3 字符串不可變 45
3.6.4 檢測(cè)字符串是否相等 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 條件語(yǔ)句 63
3.8.3 循環(huán) 64
3.8.4 確定性循環(huán) 68
3.8.5 多重選擇:switch語(yǔ)句 71
3.8.6 中斷控制流程的語(yǔ)句 75
3.9 大數(shù) 77
3.10 數(shù)組 79
3.10.1 聲明數(shù)組 79
3.10.2 訪問(wèn)數(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章 對(duì)象與類 92
4.1 面向?qū)ο蟪绦蛟O(shè)計(jì)概述 92
4.1.1 類 93
4.1.2 對(duì)象 94
4.1.3 識(shí)別類 94
4.1.4 類之間的關(guān)系 95
4.2 使用預(yù)定義類 96
4.2.1 對(duì)象與對(duì)象變量 96
4.2.2 Java類庫(kù)中的LocalDate類 99
4.2.3 更改器方法與訪問(wèn)器方法 101
4.3 自定義類 104
4.3.1 Employee類 104
4.3.2 使用多個(gè)源文件 106
4.3.3 剖析Employee類 107
4.3.4 從構(gòu)造器開(kāi)始 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 基于類的訪問(wèn)權(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 對(duì)象構(gòu)造 125
4.6.1 重載 126
4.6.2 默認(rèn)字段初始化 126
4.6.3 無(wú)參數(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 對(duì)象析構(gòu)與f?inalize方法 133
4.7 記錄 134
4.7.1 記錄概念 134
4.7.2 構(gòu)造器:標(biāo)準(zhǔn)、自定義和簡(jiǎ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 包訪問(wèn) 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)的說(shuō)明 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ù)訪問(wèn) 173
5.2 Object:所有類的超類 174
5.2.1 Object類型的變量 174
5.2.2 equals方法 175
5.2.3 相等測(cè)試與繼承 176
5.2.4 hashCode方法 179
5.2.5 toString方法 181
5.3 泛型數(shù)組列表 186
5.3.1 聲明數(shù)組列表 187
5.3.2 訪問(wèn)數(shù)組列表元素 189
5.3.3 類型化與原始數(shù)組列表的兼容性 192
5.4 對(duì)象包裝器與自動(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 聲明異常入門(mén) 211
5.9.3 資源 212
5.9.4 利用反射分析類的能力 213
5.9.5 使用反射在運(yùn)行時(shí)分析對(duì)象 220
5.9.6 使用反射編寫(xiě)泛型數(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 對(duì)象克隆 247
6.2 lambda表達(dá)式 252
6.2.1 為什么引入lambda表達(dá)式 253
6.2.2 lambda表達(dá)式的語(yǔ)法 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)部類訪問(wèn)對(duì)象狀態(tài) 267
6.3.2 內(nèi)部類的特殊語(yǔ)法規(guī)則 270
6.3.3 內(nèi)部類是否有用、必要和安全 271
6.3.4 局部?jī)?nèi)部類 273
6.3.5 由外部方法訪問(wèn)變量 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)建代理對(duì)象 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語(yǔ)句 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 高級(jí)日志 316
7.5.3 修改日志管理器配置 318
7.5.4 本地化 320
7.5.5 處理器 321
7.5.6 過(guò)濾器 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 誰(shuí)想成為泛型程序員 338
8.2 定義簡(jiǎn)單泛型類 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)上下文中類型變量無(wú)效 353
8.6.8 不能拋出或捕獲泛型類的實(shí)例 354
8.6.9 可以取消對(duì)檢查型異常的檢查 354
8.6.10 注意擦除后的沖突 356
8.7 泛型類型的繼承規(guī)則 357
8.8 通配符類型 359
8.8.1 通配符概念 359
8.8.2 通配符的超類型限定 360
8.8.3 無(wú)限定通配符 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 樹(shù)集 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)于可選操作的說(shuō)明 420
9.6 算法 423
9.6.1 為什么使用泛型算法 423
9.6.2 排序與混排 424
9.6.3 二分查找 427
9.6.4 簡(jiǎn)單算法 428
9.6.5 批操作 429
9.6.6 集合與數(shù)組的轉(zhuǎn)換 430
9.6.7 編寫(xiě)自己的算法 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用戶界面工具包簡(jiǎn)史 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)潔地指定監(jiān)聽(tīng)器 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 鍵盤(pán)助記符和加速器 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 對(duì)話框 547
11.7.1 選項(xiàng)對(duì)話框 547
11.7.2 創(chuàng)建對(duì)話框 551
11.7.3 數(shù)據(jù)交換 554
11.7.4 文件對(duì)話框 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)先級(jí) 579
12.4 同步 580
12.4.1 競(jìng)態(tài)條件的一個(gè)例子 580
12.4.2 競(jìng)態(tài)條件詳解 582
12.4.3 鎖對(duì)象 584
12.4.4 條件對(duì)象 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 寫(xiě)時(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)中的長(zhǎng)時(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