Java 官方編程手冊, 12/e (Java 17)
[美] 赫伯特·希爾特(Herbert Schildt) 著 石磊 衛琳 譯
- 出版商: 清華大學
- 出版日期: 2023-06-01
- 售價: $1,968
- 貴賓價: 9.5 折 $1,870
- 語言: 簡體中文
- 頁數: 1136
- 裝訂: 平裝
- ISBN: 7302630763
- ISBN-13: 9787302630760
-
相關分類:
Java 程式語言
- 此書翻譯自: Java: The Complete Reference, 12/e (Paperback)
立即出貨 (庫存 < 3)
買這商品的人也買了...
-
$360$281 -
$580$452 -
$505Spring 實戰, 5/e (Spring in Action, 5/e)
-
$580$435 -
$352Java Web 應用開發技術 (Java EE 8 +Tomcat 9)
-
$403IntelliJ IDEA 入門與實戰
-
$980$774 -
$254Java Web 應用開發基礎 (微課視頻版)
-
$680$510 -
$630$498 -
$659$626 -
$534$507 -
$1,019$959 -
$980$774 -
$600$450 -
$680$537 -
$714$678 -
$419$398 -
$654$621 -
$450$405 -
$680$537 -
$680$530 -
$860$679 -
$560$442 -
$650$507
相關主題
商品描述
《Java官方編程手冊(第12版·Java 17)》針對Java SE 17全面更新內容,講解瞭如何開發、編譯、調試和運行Java程序。暢銷書作者Herbert Schildt在本書中對整個Java語言進行了講解,包括其語法、關鍵字和基礎編程概念。書中還介紹了Java API庫的關鍵部分,如I/O、集合框架、流庫和並發實用工具,還討論了Swing、Java Bean和servlet,並提供了大量示例來演示Java的實際應用。當然,本書也詳細描述了Java語言的新增特性,如記錄、密封類和switch表達式。Herbert Schildt採用他一貫的清晰、利落、務求準確的風格撰寫本書,正是這種風格讓他撰寫的圖書成為全世界數百萬人的選擇。 本書內容 數據類型、變量、數組和運算符 控制語句 類、對象和方法 方法重載和重寫 繼承 接口和包 異常處理 多線程編程 枚舉、自動裝箱和註解 I/O類 泛型 lambda表達式 模塊 記錄 密封類 文本塊 switch表達式 instanceof的模式匹配 字符串處理 集合框架 網絡 事件處理 AWT Swing 並發API 流API 正則表達式 Java Bean servlet 其他內容
目錄大綱
第 I 部分 Java語言
第 1 章 Java的歷史和演變 3
1.1 Java的家世 3
1.1.1 現代編程語言的誕生:
C語言 3
1.1.2 C++:下一個階段 5
1.1.3 Java出現的時機已經成熟 5
1.2 Java的誕生 6
1.3 Java改變Internet的方式 7
1.3.1 Java applet 7
1.3.2 安全性 8
1.3.3 可移植性 8
1.4 Java的魔力:字節碼 8
1.5 超越applet 9
1.6 更快的發布周期 10
1.7 servlet:服務器端的Java 11
1.8 Java的關鍵特性 11
1.8.1 簡單性 11
1.8.2 面向對象 12
1.8.3 健壯性 12
1.8.4 多線程 12
1.8.5 體系結構中立 12
1.8.6 解釋執行和高性能 13
1.8.7 分佈式 13
1.8.8 動態性 13
1.9 Java的演變歷程 13
1.10 文化革新 17
第2 章 Java綜述 18
2.1 面向對象編程 18
2.1.1 兩種範式 18
2.1.2 抽象 19
2.1.3 OOP三原則 19
2.2 第一個簡單程序 23
2.2.1 輸入程序 23
2.2.2 編譯程序 24
2.2.3 深入分析第一個示例程序 24
2.3 第二個簡單程序 26
2.4 兩種控制語句 28
2.4.1 if語句 28
2.4.2 for循環 29
2.5 使用代碼塊 30
2.6 詞匯問題 32
2.6.1 空白符 32
2.6.2 標識符 32
2.6.3 字面值 32
2.6.4 註釋 33
2.6.5 分隔符 33
2.6.6 Java關鍵字 33
2.7 Java類庫 34
第3 章 數據類型、變量和數組 35
3.1 Java是強類型化的語言 35
3.2 基本類型 35
3.3 整型 36
3.3.1 byte 36
3.3.2 short 36
3.3.3 int 37
3.3.4 long 37
3.4 浮點型 38
3.4.1 float 38
3.4.2 double 38
3.5 字符型 39
3.6 布爾型 40
3.7 深入分析字面值 41
3.7.1 整型字面值 41
3.7.2 浮點型字面值 42
3.7.3 布爾型字面值 42
3.7.4 字符型字面值 43
3.7.5 字符串字面值 43
3.8 變量 44
3.8.1 變量的聲明 44
3.8.2 動態初始化 44
3.8.3 變量的作用域和生存期 45
3.9 類型轉換和強制類型轉換 47
3.9.1 Java的自動類型轉換 47
3.9.2 強制轉換不兼容的類型 47
3.10 表達式中的自動類型提升 49
3.11 數組 50
3.11.1 一維數組 50
3.11.2 多維數組 52
3.11.3 另一種數組聲明語法 56
3.12 局部變量的類型推斷 57
3.13 關於字符串的一些說明 59
第4章 運算符 60
4.1 算術運算符 60
4.1.1 基本算術運算符 61
4.1.2 求模運算符 62
4.1.3 算術與賦值復合運算符 62
4.1.4 自增與自減運算符 63
4.2 位運算符 64
4.2.1 位邏輯運算符 66
4.2.2 左移 68
4.2.3 右移 69
4.2.4 無符號右移 70
4.2.5 位運算符與賦值的組合 71
4.3 關系運算符 72
4.4 布爾邏輯運算符 73
4.5 賦值運算符 75
4.6 “?”運算符 75
4.7 運算符的優先級 76
4.8 使用圓括號 77
第 5 章 控制語句 78
5.1 Java的選擇語句 78
5.1.1 if語句 78
5.1.2 switch語句 81
5.2 迭代語句 86
5.2.1 while語句 86
5.2.2 do-while語句 87
5.2.3 for語句 90
5.2.4 for循環的for-each版本 93
5.2.5 for循環中的局部變量
類型推斷 98
5.2.6 嵌套的循環 99
5.3 跳轉語句 99
5.3.1 使用break語句 99
5.3.2 使用continue語句 103
5.3.3 使用return語句 104
第 6 章 類 106
6.1 類的基礎知識 106
6.1.1 類的一般形式 106
6.1.2 一個簡單的類 107
6.2 聲明對象 109
6.3 為對象引用變量賦值 111
6.4 方法 112
6.4.1 為Box類添加方法 112
6.4.2 返回值 114
6.4.3 添加帶參數的方法 115
6.5 構造函數 117
6.6 this關鍵字 120
6.7 垃圾回收 121
6.8 堆棧類 121
第 7 章 方法和類的深入分析 124
7.1 重載方法 124
7.2 將對象用作形參 129
7.3 實參傳遞的深入分析 131
7.4 返回對象 133
7.5 遞歸 134
7.6 訪問控制 136
7.7 理解static 139
7.8 final介紹 141
7.9 重新審視數組 141
7.10 嵌套類和內部類 143
7.11 String類 145
7.12 使用命令行參數 148
7.13 varargs:可變長度實參 148
7.13.1 重載varargs方法 151
7.13.2 varargs方法與模糊性 152
第 8 章 繼承 156
8.1 繼承的基礎知識 156
8.1.1 成員訪問與繼承 158
8.1.2 一個更實際的例子 159
8.1.3 超類變量可以引用子類
對象 161
8.2 使用super關鍵字 161
8.2.1 使用super調用超類的
構造函數 162
8.2.2 super的另一種用法 165
8.3 創建多級繼承層次 166
8.4 構造函數的執行時機 169
8.5 方法重寫 170
8.6 動態方法調度 172
8.6.1 重寫方法的原因 174
8.6.2 應用方法重寫 174
8.7 使用抽象類 176
8.8 在繼承中使用final關鍵字 178
8.8.1 使用final關鍵字阻止
重寫 178
8.8.2 使用final關鍵字阻止
繼承 179
8.9 局部變量類型推斷和繼承 179
8.10 Object類 181
第9章 包和接口 182
9.1 包 182
9.1.1 定義包 182
9.1.2 包查找與CLASSPATH 183
9.1.3 一個簡短的包示例 184
9.2 包和成員訪問 185
9.3 導入包 188
9.4 接口 190
9.4.1 定義接口 191
9.4.2 實現接口 192
9.4.3 嵌套接口 194
9.4.4 應用接口 195
9.4.5 接口中的變量 198
9.4.6 接口可以擴展 200
9.5 默認接口方法 201
9.5.1 默認方法的基礎知識 201
9.5.2 一個更實用的例子 203
9.5.3 多級繼承的問題 203
9.6 在接口中使用靜態方法 204
9.7 私有接口方法 205
9.8 關於包和接口的最後說明 206
第 10 章 異常處理 207
10.1 異常處理的基礎知識 207
10.2 異常類型 208
10.3 未捕獲的異常 209
10.4 使用try和catch 210
10.5 多條catch子句 211
10.6 嵌套的try語句 213
10.7 throw 215
10.8 throws 216
10.9 finally 217
10.10 Java的內置異常 219
10.11 創建自己的異常子類 220
10.12 鏈式異常 222
10.13 其他三個異常特性 224
10.14 使用異常 225
第11章 多線程編程 226
11.1 Java線程模型 227
11.1.1 線程優先級 228
11.1.2 同步 228
11.1.3 消息傳遞 228
11.1.4 Thread類和Runnable
接口 229
11.2 主線程 229
11.3 創建線程 231
11.3.1 實現Runnable接口 231
11.3.2 擴展Thread類 233
11.3.3 選擇一種創建方式 234
11.4 創建多個線程 234
11.5 使用isAlive()和join()方法 236
11.6 線程優先級 238
11.7 同步 239
11.7.1 使用同步方法 239
11.7.2 synchronized語句 241
11.8 線程間通信 243
11.9 掛起、恢復與停止線程 249
11.10 獲取線程的狀態 252
11.11 使用工廠方法創建和啟動
線程 253
11.12 使用多線程 254
第 12 章 枚舉、自動裝箱與註解 255
12.1 枚舉 255
12.1.1 枚舉的基礎知識 255
12.1.2 values()和valueOf()
方法 257
12.1.3 Java枚舉是類類型 259
12.1.4 枚舉繼承自Enum類 260
12.1.5 另一個枚舉示例 262
12.2 類型封裝器 264
12.2.1 Character封裝器 264
12.2.2 Boolean封裝器 264
12.2.3 數值類型封裝器 265
12.3 自動裝箱 266
12.3.1 自動裝箱與方法 267
12.3.2 表達式中發生的自動
裝箱/拆箱 268
12.3.3 布爾型和字符型數值的
自動裝箱/拆箱 269
12.3.4 自動裝箱/拆箱有助於
防止錯誤 270
12.3.5 一些警告 271
12.4 註解 271
12.4.1 註解的基礎知識 271
12.4.2 指定保留策略 272
12.4.3 在運行時使用反射獲取
註解 273
12.4.4 AnnotatedElement接口 278
12.4.5 使用默認值 278
12.4.6 標記註解 279
12.4.7 單成員註解 280
12.4.8 內置註解 282
12.5 類型註解 284
12.6 重復註解 288
12.7 一些限制 289
第 13 章 I/O、帶資源的try語句
以及其他主題 290
13.1 I/O的基礎知識 290
13.1.1 流 290
13.1.2 字節流和字符流 291
13.1.3 預定義流 293
13.2 讀取控制台輸入 293
13.2.1 讀取字符 294
13.2.2 讀取字符串 295
13.3 向控制台寫輸出 297
13.4 PrintWriter類 297
13.5 讀/寫文件 298
13.6 自動關閉文件 304
13.7 transient和volatile修飾符 307
13.8 使用instanceof運算符 308
13.9 strictfp 310
13.10 本地方法 311
13.11 使用assert 311
13.12 靜態導入 314
13.13 通過this()調用重載的構造
函數 316
13.14 基於值的類 318
第14章 泛型 319
14.1 什麽是泛型 319
14.2 一個簡單的泛型示例 320
14.2.1 泛型只使用引用類型 323
14.2.2 基於不同類型參數的
泛型類型是不同的 324
14.2.3 泛型提升類型安全性的
原理 324
14.3 帶兩個類型參數的泛型類 326
14.4 泛型類的一般形式 327
14.5 有界類型 328
14.6 使用通配符參數 330
14.7 創建泛型方法 337
14.8 泛型接口 340
14.9 原始類型與遺留代碼 342
14.10 泛型類層次 344
14.10.1 使用泛型超類 345
14.10.2 泛型子類 346
14.10.3 泛型層次中的運行時
類型比較 348
14.10.4 強制轉換 350
14.10.5 重寫泛型類的方法 350
14.11 泛型的類型推斷 351
14.12 局部變量類型推斷和泛型 352
14.13 擦除 353
14.14 模糊性錯誤 355
14.15 使用泛型的一些限制 356
14.15.1 不能實例化類型參數 356
14.15.2 對靜態成員的一些
限制 356
14.15.3 對泛型數組的一些
限制 357
14.15.4 對泛型異常的限制 358
第15 章 lambda表達式 359
15.1 lambda表達式簡介 359
15.1.1 lambda表達式的基礎
知識 360
15.1.2 函數式接口 360
15.1.3 幾個lambda表達式
示例 361
15.2 塊lambda表達式 365
15.3 泛型函數式接口 366
15.4 作為參數傳遞的lambda
表達式 368
15.5 lambda表達式與異常 370
15.6 lambda表達式和變量捕獲 372
15.7 方法引用 373
15.7.1 靜態方法的方法引用 373
15.7.2 實例方法的方法引用 374
15.7.3 泛型中的方法引用 378
15.8 構造函數引用 380
15.9 預定義的函數式接口 385
第 16 章 模塊 387
16.1 模塊基礎知識 387
16.1.1 簡單的模塊示例 388
16.1.2 編譯並運行第一個模塊
示例 392
16.1.3 詳述requires和exports 393
16.2 java.base和平臺模塊 393
16.3 舊代碼和未命名的模塊 394
16.4 導出到特定的模塊 395
16.5 使用requires transitive 396
16.6 使用服務 400
16.6.1 服務和服務提供程序的
基礎知識 400
16.6.2 基於服務的關鍵字 401
16.6.3 基於模塊的服務示例 401
16.7 模塊圖 407
16.8 三個特殊的模塊特性 408
16.8.1 開放模塊 408
16.8.2 opens語句 408
16.8.3 requires static 408
16.9 jlink工具和模塊JAR文件
介紹 409
16.9.1 鏈接exploded directory中
的文件 409
16.9.2 鏈接模塊化的JAR
文件 409
16.9.3 JMOD文件 410
16.10 層與自動模塊簡述 410
16.11 小結 411
第 17 章 switch表達式、記錄以及其他
新近添加的特性 412
17.1 switch的增強 412
17.1.1 使用case常量列表 414
17.1.2 switch表達式和yield
語句簡介 415
17.1.3 case語句中的箭頭 416
17.1.4 深入介紹箭頭case 418
17.1.5 另外一個switch表達式
示例 420
17.2 文本塊 421
17.2.1 文本塊的基礎知識 421
17.2.2 理解前導空格 422
17.2.3 在文本塊中使用雙引號 424
17.2.4 文本塊中的轉義序列 424
17.3 記錄 425
17.3.1 記錄的基礎知識 425
17.3.2 創建記錄構造函數 427
17.3.3 另外一個記錄構造函數
示例 431
17.3.4 創建記錄的getter方法 432
17.4 instanceof的模式匹配 434
17.4.1 邏輯AND表達式中的
模式變量 435
17.4.2 其他語句中的模式匹配 436
17.5 密封類和密封接口 437
17.5.1 密封類 437
17.5.2 密封接口 438
17.6 未來的方向 440
第 II 部分 Java庫
第18章 字符串處理 443
18.1 String類的構造函數 443
18.2 字符串的長度 445
18.3 特殊的字符串操作 446
18.3.1 字符串字面值 446
18.3.2 字符串連接 446
18.3.3 字符串和其他數據類型的
連接 447
18.3.4 字符串轉換和toString()
方法 447
18.4 提取字符 449
18.4.1 charAt() 449
18.4.2 getChars() 449
18.4.3 getBytes() 450
18.4.4 toCharArray() 450
18.5 比較字符串 450
18.5.1 equals()和
equalsIgnoreCase() 450
18.5.2 regionMatches() 451
18.5.3 startsWith()和
endsWith() 451
18.5.4 equals()與== 452
18.5.5 compareTo() 452
18.6 查找字符串 454
18.7 修改字符串 455
18.7.1 substring() 455
18.7.2 concat() 456
18.7.3 replace() 457
18.7.4 trim()和strip() 457
18.8 使用valueOf()轉換數據 458
18.9 改變字符串中字符的大小寫 459
18.10 連接字符串 459
18.11 其他String方法 460
18.12 StringBuffer類 461
18.12.1 StringBuffer類的構造
函數 462
18.12.2 length()與capacity() 462
18.12.3 ensureCapacity() 463
18.12.4 setLength() 463
18.12.5 charAt()與setCharAt() 463
18.12.6 append() 464
18.12.7 insert() 464
18.12.8 reverse() 465
18.12.9 delete()與
deleteCharAt() 465
18.12.10 replace() 466
18.12.11 substring() 466
18.12.12 其他StringBuffer
方法 467
18.13 StringBuilder類 468
第19章 探究java.lang 469
19.1 基本類型封裝器 470
19.1.1 Number 470
19.1.2 Double與Float 470
19.1.3 理解isInfinite()與
isNaN() 474
19.1.4 Byte、Short、Integer和
Long 474
19.1.5 Character 483
19.1.6 對Unicode代碼點的
附加支持 485
19.1.7 Boolean 487
19.2 Void類 488
19.3 Process類 488
19.4 Runtime類 489
19.5 Runtime.Version 491
19.6 ProcessBuilder類 492
19.7 System類 494
19.7.1 使用currentTimeMillis()
為程序的執行計時 496
19.7.2 使用arraycopy()方法 496
19.7.3 環境屬性 497
19.8 System.Logger和
System.LoggerFinder 498
19.9 Object類 498
19.10 使用clone()方法和
Cloneable接口 498
19.11 Class類 500
19.12 ClassLoader類 504
19.13 Math類 504
19.13.1 三角函數 504
19.13.2 指數函數 505
19.13.3 舍入函數 505
19.13.4 其他數學方法 506
19.14 StrictMath類 508
19.15 Compiler類 508
19.16 Thread類、ThreadGroup類
和Runnable接口 508
19.16.1 Runnable接口 509
19.16.2 Thread類 509
19.16.3 ThreadGroup類 511
19.17 ThreadLocal和
InheritableThreadLocal類 515
19.18 Package類 515
19.19 Module類 516
19.20 ModuleLayer類 517
19.21 RuntimePermission類 517
19.22 Throwable類 517
19.23 SecurityManager類 518
19.24 StackTraceElement類 518
19.25 StackWalker類和
StackWalker.StackFrame
接口 518
19.26 Enum類 519
19.27 Record類 519
19.28 ClassValue類 519
19.29 CharSequence接口 520
19.30 Comparable接口 520
19.31 Appendable接口 520
19.32 Iterable接口 521
19.33 Readable接口 521
19.34 AutoCloseable接口 522
19.35 Thread.UncaughtException
Handler接口 522
19.36 java.lang子包 522
19.36.1 java.lang.annotation 522
19.36.2 java.lang.constant 523
19.36.3 java.lang.instrument 523
19.36.4 java.lang.invoke 523
19.36.5 java.lang.management 523
19.36.6 java.lang.module 523
19.36.7 java.lang.ref 523
19.36.8 java.lang.reflect 523
第20章 java.util第一部分:集合
框架 524
20.1 集合概述 525
20.2 集合接口 526
20.2.1 Collection接口 527
20.2.2 List接口 529
20.2.3 Set接口 531
20.2.4 SortedSet接口 532
20.2.5 NavigableSet接口 532
20.2.6 Queue接口 533
20.2.7 Deque接口 534
20.3 集合類 536
20.3.1 ArrayList類 536
20.3.2 LinkedList類 539
20.3.3 HashSet類 541
20.3.4 LinkedHashSet類 542
20.3.5 TreeSet類 543
20.3.6 PriorityQueue類 544
20.3.7 ArrayDeque類 545
20.3.8 EnumSet類 546
20.4 通過迭代器訪問集合 547
20.4.1 使用迭代器 548
20.4.2 使用for-each循環替代
迭代器 549
20.5 Spliterator 550
20.6 在集合中存儲用戶定義的類 553
20.7 RandomAccess接口 554
20.8 使用映射 554
20.8.1 映射接口 555
20.8.2 映射類 560
20.9 比較器 565
20.10 集合算法 573
20.11 Arrays類 578
20.12 遺留的類和接口 583
20.12.1 Enumeration接口 584
20.12.2 Vector類 584
20.12.3 Stack類 588
20.12.4 Dictionary類 590
20.12.5 Hashtable類 591
20.12.6 Properties類 594
20.12.7 使用store()和load()
方法 597
20.13 集合小結 599
第21章 java.util第二部分:更多
實用工具類 600
21.1 StringTokenizer類 600
21.2 BitSet類 602
21.3 Optional、OptionalDouble、
OptionalInt和OptionalLong 604
21.4 Date類 607
21.5 Calendar類 608
21.6 GregorianCalendar類 611
21.7 TimeZone類 613
21.8 SimpleTimeZone類 614
21.9 Locale類 615
21.10 Random類 616
21.11 Timer和TimerTask類 618
21.12 Currency類 620
21.13 Formatter類 621
21.13.1 Formatter類的構造
函數 622
21.13.2 Formatter類的方法 622
21.13.3 格式化的基礎知識 623
21.13.4 格式化字符串和字符 625
21.13.5 格式化數字 625
21.13.6 格式化時間和日期 626
21.13.7 %n和%%說明符 628
21.13.8 指定最小字段寬度 628
21.13.9 指定精度 629
21.13.10 使用格式標志 630
21.13.11 對齊輸出 631
21.13.12 空格、+、0和(標志 631
21.13.13 逗號標志 633
21.13.14 #標志 633
21.13.15 大寫選項 633
21.13.16 使用參數索引 634
21.13.17 關閉Formatter對象 635
21.13.18 printf()方法 635
21.14 Scanner類 635
21.14.1 Scanner類的構造
函數 636
21.14.2 掃描的基礎知識 637
21.14.3 一些Scanner示例 639
21.14.4 設置定界符 643
21.14.5 其他Scanner特性 644
21.15 ResourceBundle、
ListResourceBundle和
PropertyResourceBundle類 645
21.16 其他實用工具類和接口 649
21.17 java.util子包 650
21.17.1 java.util.concurrent、
java.util.concurrent.atomic
和java.util.concurrent.
locks 651
21.17.2 java.util.function 651
21.17.3 java.util.jar 653
21.17.4 java.util.logging 653
21.17.5 java.util.prefs 654
21.17.6 java.util.random 654
21.17.7 java.util.regex 654
21.17.8 java.util.spi 654
21.17.9 java.util.stream 654
21.17.10 java.util.zip 654
第22章 輸入/輸出:探究java.io 655
22.1 I/O類和接口 655
22.2 File類 656
22.2.1 目錄 659
22.2.2 使用FilenameFilter
接口 660
22.2.3 listFiles()方法 661
22.2.4 創建目錄 662
22.3 AutoCloseable、Closeable和
Flushable接口 662
22.4 I/O異常 662
22.5 關閉流的兩種方式 663
22.6 流類 664
22.7 字節流 664
22.7.1 InputStream類 664
22.7.2 OutputStream類 665
22.7.3 FileInputStream類 666
22.7.4 FileOutputStream類 668
22.7.5 ByteArrayInputStream類 670
22.7.6 ByteArrayOutputStream
類 672
22.7.7 過濾的字節流 673
22.7.8 緩沖的字節流 673
22.7.9 SequenceInputStream類 677
22.7.10 PrintStream類 679
22.7.11 DataOutputStream類
和DataInputStream類 681
22.7.12 RandomAccessFile類 683
22.8 字符流 683
22.8.1 Reader類 684
22.8.2 Writer類 684
22.8.3 FileReader類 685
22.8.4 FileWriter類 686
22.8.5 CharArrayReader類 687
22.8.6 CharArrayWriter類 688
22.8.7 BufferedReader類 689
22.8.8 BufferedWriter類 691
22.8.9 PushbackReader類 691
22.8.10 PrintWriter類 692
22.9 Console類 693
22.10 串行化 695
22.10.1 Serializable接口 695
22.10.2 Externalizable接口 695
22.10.3 ObjectOutput接口 696
22.10.4 ObjectOutputStream類 696
22.10.5 ObjectInput接口 697
22.10.6 ObjectInputStream類 698
22.10.7 串行化示例 699
22.11 流的優點 702
第23章 探究NIO 703
23.1 NIO類 703
23.2 NIO的基礎知識 704
23.2.1 緩沖區 704
23.2.2 通道 706
23.2.3 字符集和選擇器 707
23.3 NIO.2對NIO的增強 708
23.3.1 Path接口 708
23.3.2 Files類 709
23.3.3 Paths類 712
23.3.4 文件屬性接口 712
23.3.5 FileSystem、FileSystems和
FileStore類 714
23.4 使用NIO系統 714
23.4.1 為基於通道的I/O
使用NIO 715
23.4.2 為基於流的I/O
使用NIO 723
23.4.3 為路徑和文件系統操作
使用NIO 725
第24章 聯網 734
24.1 聯網的基礎知識 734
24.2 java.net聯網類和接口 735
24.3 InetAddress類 736
24.3.1 工廠方法 736
24.3.2 實例方法 737
24.4 Inet4Address類和
Inet6Address類 738
24.5 TCP/IP客戶端套接字 738
24.6 URL類 741
24.7 URLConnection類 742
24.8 HttpURLConnection類 745
24.9 URI類 746
24.10 cookie 746
24.11 TCP/IP服務器套接字 747
24.12 數據報 747
24.12.1 DatagramSocket類 748
24.12.2 DatagramPacket類 748
24.12.3 數據報示例 749
24.13 java.net.http包 751
24.13.1 三個關鍵元素 751
24.13.2 一個簡單的HTTP Client
示例 754
24.13.3 有關java.net.http的
進一步探討 755
第25章 事件處理 756
25.1 兩種事件處理機制 756
25.2 委托事件模型 757
25.2.1 事件 757
25.2.2 事件源 757
25.2.3 事件監聽器 758
25.3 事件類 758
25.3.1 ActionEvent類 759
25.3.2 AdjustmentEvent類 760
25.3.3 ComponentEvent類 761
25.3.4 ContainerEvent類 761
25.3.5 FocusEvent類 762
25.3.6 InputEvent類 763
25.3.7 ItemEvent類 764
25.4 KeyEvent類 764
25.4.1 MouseEvent類 765
25.4.2 MouseWheelEvent類 766
25.4.3 TextEvent類 767
25.4.4 WindowEvent類 767
25.5 事件源 768
25.6 事件監聽器接口 769
25.6.1 ActionListener接口 770
25.6.2 AdjustmentListener
接口 770
25.6.3 ComponentListener
接口 770
25.6.4 ContainerListener接口 770
25.6.5 FocusListener接口 770
25.6.6 ItemListener接口 770
25.6.7 KeyListener接口 771
25.6.8 MouseListener接口 771
25.6.9 MouseMotionListener
接口 771
25.6.10 MouseWheelListener
接口 771
25.6.11 TextListener接口 771
25.6.12 WindowFocusListener
接口 772
25.6.13 WindowListener接口 772
25.7 使用委托事件模型 772
25.7.1 一些重要的AWT GUI
概念 772
25.7.2 處理鼠標事件 773
25.7.3 處理鍵盤事件 776
25.8 適配器類 780
25.9 內部類 782
第26章 AWT介紹:使用窗口、
圖形和文本 786
26.1 AWT類 787
26.2 窗口基本元素 788
26.2.1 Component類 789
26.2.2 Container類 789
26.2.3 Panel類 789
26.2.4 Window類 789
26.2.5 Frame類 789
26.2.6 Canvas類 790
26.3 使用框架窗口 790
26.3.1 設置窗口的尺寸 790
26.3.2 隱藏和顯示窗口 790
26.3.3 設置窗口的標題 791
26.3.4 關閉框架窗口 791
26.3.5 paint()方法 791
26.3.6 顯示字符串 791
26.3.7 設置前景色和背景色 792
26.3.8 請求重畫 792
26.3.9 創建基於框架的應用
程序 793
26.4 使用圖形 794
26.4.1 繪制直線 794
26.4.2 繪制矩形 794
26.4.3 繪制橢圓和圓 795
26.4.4 繪制弧形 795
26.4.5 繪制多邊形 795
26.4.6 演示繪制方法 795
26.4.7 改變圖形的大小 797
26.5 使用顏色 798
26.5.1 Color類的方法 799
26.5.2 設置當前圖形的顏色 800
26.5.3 一個演示顏色的程序 800
26.6 設置繪圖模式 801
26.7 使用字體 803
26.7.1 確定可用字體 804
26.7.2 創建和選擇字體 805
26.7.3 獲取字體信息 807
26.8 使用FontMetrics管理文本
輸出 808
第27章 使用AWT控件、佈局
管理器和菜單 812
27.1 AWT控件的基礎知識 812
27.1.1 添加和移除控件 813
27.1.2 響應控件 813
27.1.3 HeadlessException異常 813
27.2 使用標簽 813
27.3 使用命令按鈕 815
27.4 使用復選框 819
27.5 使用復選框組 822
27.6 使用下拉列表 823
27.7 使用列表框 826
27.8 管理滾動條 829
27.9 使用TextField 832
27.10 使用TextArea 834
27.11 理解佈局管理器 836
27.11.1 FlowLayout佈局
管理器 837
27.11.2 BorderLayout佈局
管理器 838
27.11.3 使用Insets 839
27.11.4 GridLayout佈局
管理器 841
27.11.5 CardLayout佈局
管理器 842
27.11.6 GridBagLayout佈局
管理器 845
27.12 菜單欄和菜單 850
27.13 對話框 854
27.14 關於重寫paint()方法 859
第28章 圖像 860
28.1 文件格式 860
28.2 圖像基礎知識:創建、
加載與顯示 861
28.2.1 創建Image對象 861
28.2.2 加載圖像 861
28.2.3 顯示圖像 862
28.3 雙緩沖 863
28.4 ImageProducer接口 866
28.5 ImageConsumer接口 867
28.6 ImageFilter類 870
28.6.1 CropImageFilter類 870
28.6.2 RGBImageFilter類 872
28.7 其他圖像類 883
第29章 並發實用工具 884
29.1 並發API包 885
29.1.1 java.util.concurrent包 885
29.1.2 java.util.concurrent.
atomic包 886
29.1.3 java.util.concurrent.
locks包 886
29.2 使用同步對象 886
29.2.1 Semaphore類 886
29.2.2 CountDownLatch類 892
29.2.3 CyclicBarrier類 893
29.2.4 Exchanger類 896
29.2.5 Phaser類 898
29.3 使用執行器 905
29.3.1 一個簡單的執行器示例 906
29.3.2 使用Callable和Future
接口 908
29.4 TimeUnit枚舉 910
29.5 並發集合 911
29.6 鎖 912
29.7 原子操作 915
29.8 通過Fork/Join框架進行
並行編程 916
29.8.1 主要的Fork/Join類 916
29.8.2 分而治之的策略 919
29.8.3 一個簡單的Fork/Join
示例 920
29.8.4 理解並行級別帶來的
影響 922
29.8.5 一個使用
RecursiveTask<V>的
例子 925
29.8.6 異步執行任務 928
29.8.7 取消任務 928
29.8.8 確定任務的完成狀態 928
29.8.9 重新啟動任務 929
29.8.10 深入研究 929
29.8.11 關於Fork/Join框架的
一些提示 930
29.9 並發實用工具與Java傳統
方式的比較 931
第30章 流API 932
30.1 流的基礎知識 932
30.1.1 流接口 933
30.1.2 如何獲得流 935
30.1.3 一個簡單的流示例 935
30.2 縮減操作 938
30.3 使用並行流 941
30.4 映射 943
30.5 收集 947
30.6 迭代器和流 950
30.6.1 對流使用迭代器 950
30.6.2 使用Spliterator 951
30.7 流API中更多值得探究的
地方 954
第31章 正則表達式和其他包 955
31.1 正則表達式處理 955
31.1.1 Pattern類 955
31.1.2 Matcher類 956
31.1.3 正則表達式的語法 957
31.1.4 演示模式匹配 957
31.1.5 模式匹配的兩個選項 962
31.1.6 探究正則表達式 963
31.2 反射 963
31.3 遠程方法調用 967
31.4 使用java.text格式化日期和
時間 970
31.4.1 DateFormat類 970
31.4.2 SimpleDateFormat類 972
31.5 java.time的時間和日期API 974
31.5.1 時間和日期的基礎知識 974
31.5.2 格式化日期和時間 975
31.5.3 解析日期和時間字符串 978
31.5.4 探究java.time包的其他
方面 979
第 III 部分 使用Swing進行GUI編程
第 32 章 Swing簡介 983
32.1 Swing的起源 983
32.2 Swing的構建以AWT為
基礎 984
32.3 兩個關鍵的Swing特性 984
32.3.1 Swing組件是輕量級的 984
32.3.2 Swing支持可插入外觀 984
32.4 MVC連接 985
32.5 組件與容器 985
32.5.1 組件 986
32.5.2 容器 986
32.5.3 頂級容器窗格 987
32.6 Swing包 987
32.7 一個簡單的Swing應用程序 987
32.8 事件處理 991
32.9 在Swing中繪圖 994
32.9.1 繪圖的基礎知識 994
32.9.2 計算可繪制區域 995
32.9.3 一個繪圖示例 996
第33章 探索Swing 999
33.1 JLabel與ImageIcon 999
33.2 JTextField 1001
33.3 Swing按鈕 1003
33.3.1 JButton 1003
33.3.2 JToggleButton 1005
33.3.3 復選框 1007
33.3.4 單選按鈕 1009
33.4 JTabbedPane 1011
33.5 JScrollPane 1014
33.6 JList 1015
33.7 JComboBox 1018
33.8 樹 1020
33.9 JTable 1024
第34章 Swing菜單簡介 1027
34.1 菜單的基礎知識 1027
34.2 JMenuBar、JMenu和
JMenuItem概述 1028
34.2.1 JMenuBar 1029
34.2.2 JMenu 1029
34.2.3 JMenuItem 1030
34.3 創建主菜單 1031
34.4 向菜單項添加助記符和
加速鍵 1035
34.5 向菜單項添加圖片和
工具提示 1037
34.6 使用JRadioButtonMenuItem和
JCheckBoxMenuItem 1038
34.7 創建彈出菜單 1040
34.8 創建工具欄 1043
34.9 使用動作 1045
34.10 完整演示MenuDemo
程序 1050
34.11 繼續探究Swing 1057
第 IV 部分 應用Java
第35章 Java Bean 1061
35.1 Java Bean是什麽 1061
35.2 Java Bean的優勢 1062
35.3 內省 1062
35.3.1 屬性的設計模式 1062
35.3.2 事件的設計模式 1063
35.3.3 方法與設計模式 1064
35.3.4 使用BeanInfo接口 1064
35.4 綁定屬性與約束屬性 1065
35.5 持久性 1065
35.6 定製器 1065
35.7 Java Bean API 1065
35.7.1 Introspector類 1067
35.7.2 PropertyDescriptor類 1067
35.7.3 EventSetDescriptor類 1067
35.7.4 MethodDescriptor類 1067
35.8 一個Bean示例 1068
第36章 servlet 1071
36.1 背景 1071
36.2 servlet的生命周期 1072
36.3 servlet開發選項 1072
36.4 使用Tomcat 1073
36.5 一個簡單的servlet 1074
36.5.1 創建和編譯servlet
源代碼 1074
36.5.2 啟動Tomcat 1075
36.5.3 啟動Web瀏覽器並
請求servlet 1075
36.6 Servlet API 1075
36.7 jakarta.servlet包 1076
36.7.1 Servlet接口 1076
36.7.2 ServletConfig接口 1077
36.7.3 ServletContext接口 1077
36.7.4 ServletRequest接口 1078
36.7.5 ServletResponse接口 1078
36.7.6 GenericServlet類 1079
36.7.7 ServletInputStream類 1079
36.7.8 ServletOutputStream類 1079
36.7.9 servlet異常類 1079
36.8 讀取servlet參數 1079
36.9 jakarta.servlet.http包 1081
36.9.1 HttpServletRequest
接口 1081
36.9.2 HttpServletResponse
接口 1082
36.9.3 HttpSession接口 1083
36.9.4 Cookie類 1084
36.9.5 HttpServlet類 1085
36.10 處理HTTP請求和響應 1086
36.10.1 處理HTTP GET
請求 1086
36.10.2 處理HTTP POST
請求 1087
36.11 使用cookie 1088
36.12 會話跟蹤 1091
第 V 部分 附錄
附錄A 使用Java的文檔註釋 1095
附錄B JShell簡介 1103
附錄C 在一個步驟中編譯和運行
簡單的單文件程序 1112