目 錄
第Ⅰ部分 Java語言
第1章 Java的曆史和演變 .................... 3
1.1 Java的傢世 ................................. 4
1.1.1 現代編程語言的誕生:
C語言 ...................................... 4
1.1.2 C++:下一個階段 ................... 5
1.1.3 Java齣現的時機已經成熟 ..... 6
1.2 Java的誕生 ................................. 6
1.3 Java改變Internet的方式 ........... 8
1.3.1 Java applet ................................ 8
1.3.2 安全性 ...................................... 8
1.3.3 可移植性 .................................. 9
1.4 Java的魔力:字節碼 ................. 9
1.5 servlet:服務器端的Java ......... 10
1.6 Java的關鍵特性 ....................... 10
1.6.1 簡單性 ................................... 10
1.6.2 麵嚮對象 ............................... 11
1.6.3 健壯性 ................................... 11
1.6.4 多綫程 ................................... 11
1.6.5 體係結構中立 ....................... 11
1.6.6 解釋執行和高性能................ 12
1.6.7 分布式 ................................... 12
1.6.8 動態性 ................................... 12
1.7 Java的演變曆程 ....................... 12
1.8 文化革新 ................................... 15
Java 完全參考手冊(第 8 版)
VIII
第2章 Java綜述 ................................ 17
2.1 麵嚮對象編程 ........................... 17
2.1.1 兩種範式 ................................ 18
2.1.2 抽象........................................ 18
2.1.3 OOP三原則 ........................... 19
2.2 第一個簡單程序 ....................... 23
2.2.1 輸入程序 ................................ 23
2.2.2 編譯程序 ................................ 23
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 注釋........................................ 32
2.6.5 分隔符 .................................... 33
2.6.6 Java關鍵字 ............................ 33
2.7 Java類庫 ................................... 34
第3章 數據類型、變量和數組 ............ 35
3.1 Java是強類型化的語言 ........... 35
3.2 基本類型 ................................... 36
3.3 整型 ........................................... 36
3.3.1 byte ......................................... 37
3.3.2 short........................................ 37
3.3.3 int ........................................... 37
3.3.4 long ........................................ 37
3.4 浮點型 ....................................... 38
3.4.1 float ........................................ 38
3.4.2 double ..................................... 39
3.5 字符型 ....................................... 39
3.6 布爾型 ....................................... 41
3.7 深入分析字麵值 ....................... 42
3.7.1 整型字麵值 ............................ 42
3.7.2 浮點型字麵值 ....................... 43
3.7.3 布爾型字麵值 ....................... 44
3.7.4 字符型字麵值 ....................... 44
3.7.5 字符串字麵值 ....................... 44
3.8 變量 ........................................... 45
3.8.1 變量的聲明 ........................... 45
3.8.2 動態初始化 ........................... 45
3.8.3 變量的作用域和生命周期.... 46
3.9 類型轉換和強製類型轉換 ........ 48
3.9.1 Java的自動類型轉換 ........... 49
3.9.2 強製轉換不兼容的類型 ........ 49
3.10 錶達式中的自動類型提升 ...... 50
3.11 數組 .......................................... 52
3.11.1 一維數組 ............................ 52
3.11.2 多維數組 ............................ 54
3.11.3 另一種數組聲明語法 ........ 58
3.12 關於字符串的一些說明 .......... 59 3.13 嚮C/C++程序員提供指針
方麵的注解 ............................. 60
第4章 運算符 ...................................... 61
4.1 算術運算符................................ 61
4.1.1 基本算術運算符 ................... 62
4.1.2 求模運算符 ........................... 63
4.1.3 算術與賦值復閤運算符 ........ 64
4.1.4 自增與自減運算符................ 65
4.2 位運算符 ................................... 66
4.2.1 位邏輯運算符 ....................... 68
4.2.2 左移 ....................................... 70
4.2.3 右移 ....................................... 71
4.2.4 無符號右移 ........................... 73
4.2.5 位運算符與賦值的組閤 ........ 74
4.3 關係運算符................................ 75
4.4 布爾邏輯運算符 ........................ 76
4.5 賦值運算符................................ 78
4.6 “?”運算符 .............................. 78
4.7 運算符的優先級 ........................ 79
4.8 使用圓括號................................ 80
目 錄
IX
第5章 控製語句 .................................. 83
5.1 Java的選擇語句 ....................... 83
5.1.1 if語句 .................................... 84
5.1.2 switch語句 ............................ 87
5.2 迭代語句 ................................... 91
5.2.1 while語句 .............................. 92
5.2.2 do-while語句......................... 93
5.2.3 for語句 .................................. 96
5.2.4 for循環的for-each版本 .... 100
5.2.5 嵌套的循環 ......................... 105
5.3 跳轉語句 ................................. 106
5.3.1 使用break語句 .................. 106
5.3.2 使用continue語句 .............. 110
5.3.3 return語句 ........................... 111
第6章 類........................................... 113
6.1 類的基礎知識 ......................... 114
6.1.1 類的一般形式 ...................... 114
6.1.2 一個簡單的類 ...................... 115
6.2 聲明對象 ................................. 117
6.3 為對象引用變量賦值 ............. 119
6.4 方法 ......................................... 120
6.4.1 為Box類添加方法 ............ 120
6.4.2 返迴值 ................................. 122
6.4.3 添加帶參數的方法 ............. 124
6.5 構造函數 ................................. 126
6.6 this關鍵字 .............................. 129
6.7 垃圾迴收 ................................. 130
6.8 finalize()方法 ........................... 130
6.9 堆棧類 ..................................... 131
第7章 方法和類的深入分析.............. 135
7.1 重載方法 ................................. 135
7.2 將對象用作參數 ..................... 140
7.3 參數傳遞的深入分析 ............. 143
7.4 返迴對象 ................................. 145
7.5 遞歸 ......................................... 146
7.6 訪問控製 ................................. 148
7.7 理解static ................................ 151
7.8 final介紹 ................................. 153
7.9 重新審視數組.......................... 154
7.10 嵌套類和內部類 .................... 156
7.11 String類介紹 ......................... 158
7.12 使用命令行參數 .................... 161
7.13 varargs:可變長度參數 ........ 162
7.13.1 重載varargs方法 ............ 165
7.13.2 varargs方法與模糊性 ..... 166
第8章 繼承 ....................................... 169
8.1 繼承的基礎知識 ...................... 169
8.1.1 成員訪問與繼承 ................. 171
8.1.2 一個更實際的例子.............. 172 8.1.3 超類變量可以引用子類
對象 ..................................... 174
8.2 使用super關鍵字 ................... 175 8.2.1 使用super調用超類的
構造函數 ............................. 176
8.2.2 super的另一種用法 ............ 179
8.3 創建多級繼承層次 .................. 180
8.4 構造函數的調用時機 .............. 183
8.5 方法重寫 ................................. 184
8.6 動態方法調度.......................... 187
8.6.1 重寫方法的目的 ................. 189
8.6.2 應用方法重寫 ..................... 189
8.7 使用抽象類.............................. 191
8.8 在繼承中使用final關鍵字 .... 193 8.8.1 使用final關鍵字阻止
重寫 ..................................... 194 8.8.2 使用final關鍵字阻止
繼承 ..................................... 194
8.9 Object類 .................................. 195
第9章 包和接口 ............................... 197
9.1 包 ............................................. 198
9.1.1 定義包 ................................. 198
9.1.2 包查找與CLASSPATH....... 199
9.1.3 一個簡短的包示例.............. 199
9.2 訪問保護 ................................. 200
Java 完全參考手冊(第 8 版)
X
9.3 導入包 ..................................... 204
9.4 接口 ......................................... 206
9.4.1 定義接口 ............................. 207
9.4.2 實現接口 ............................. 207
9.4.3 嵌套接口 ............................. 210
9.4.4 應用接口 .............................. 211
9.4.5 接口中的變量 ..................... 214
9.4.6 接口可以擴展 ..................... 216
第10章 異常處理 .............................. 219
10.1 異常處理的基礎知識 ........... 219
10.2 異常類型 ............................... 220
10.3 未捕獲的異常 ....................... 221
10.4 使用try和catch ................... 222
10.5 多條catch子句 ..................... 224
10.6 嵌套的try語句 ..................... 226
10.7 throw ...................................... 228
10.8 throws .................................... 229
10.9 finally ..................................... 230
10.10 Java的內置異常 ................. 232
10.11 創建自己的異常子類 ......... 233
10.12 鏈式異常 ............................. 235 10.13 JDK 7中3個新的
異常特性 ............................. 237
10.14 使用異常 ............................. 238
第11章 多綫程編程 .......................... 239
11.1 Java綫程模型 ....................... 240
11.1.1 綫程優先級 ..................... 241
11.1.2 同步 ................................. 242
11.1.3 消息傳遞 ......................... 242 11.1.4 Thread類和Runnable
接口 ................................. 242
11.2 主綫程 ................................... 243
11.3 創建綫程 ............................... 244
11.3.1 實現Runnable接口 ........ 245
11.3.2 擴展Thread類 ............... 247
11.3.3 選擇一種創建方式 ......... 248
11.4 創建多個綫程 ....................... 248
11.5 使用isAlive()和join()方法 .... 250
11.6 綫程優先級 ............................ 252
11.7 同步 ........................................ 253
11.7.1 使用同步方法 ................. 253
11.7.2 synchronized語句 ........... 255
11.8 綫程間通信 ............................ 257
11.9 掛起、恢復與停止綫程 ........ 263 11.9.1 Java 1.1以前使用的掛起、
恢復和停止綫程的方式 .... 264 11.9.2 掛起、恢復與停止綫程的
現代方式.......................... 266
11.10 獲取綫程的狀態 .................. 268
11.11 使用多綫程 .......................... 270 第12章 枚舉、自動裝箱與注解
(元數據) ............................... 271
12.1 枚舉 ....................................... 271
12.1.1 枚舉的基礎知識 ............. 272 12.1.2 values()和valueOf()
方法 ................................. 274
12.1.3 Java枚舉是類類型 ......... 275
12.1.4 枚舉繼承自Enum類 ...... 278
12.1.5 另一個枚舉示例 ............. 279
12.2 類型封裝器............................ 281
12.2.1 Character封裝器 ............. 281
12.2.2 Boolean封裝器 ............... 282
12.2.3 數值類型封裝器 ............. 282
12.3 自動裝箱 ............................... 283
12.3.1 自動裝箱與方法 ............. 284 12.3.2 錶達式中發生的
自動裝箱/拆箱................. 285 12.3.3 布爾型和字符型數值的
自動裝箱/拆箱................. 287 12.3.4 自動裝箱/拆箱有助於
防止錯誤.......................... 287
12.3.5 一些警告 ......................... 288
12.4 注解(元數據) ......................... 289
12.4.1 注解的基礎知識 ............. 289
目 錄
XI
12.4.2 指定保留策略 ................. 289 12.4.3 在運行時使用反射獲取
注解 ................................. 290
12.4.4 AnnotatedElement接口 .... 296
12.4.5 使用默認值 ..................... 296
12.4.6 標記注解......................... 297
12.4.7 單成員注解 ..................... 298
12.4.8 內置注解......................... 300
12.4.9 一些限製......................... 301
第13章 I/O、applet以及其他主題 ...... 303
13.1 I/O的基礎知識 ..................... 304
13.1.1 流 .................................... 304
13.1.2 字節流和字符流 ............. 304
13.1.3 預定義流......................... 306
13.2 讀取控製颱輸入 ................... 307
13.2.1 讀取字符......................... 307
13.2.2 讀取字符串 ..................... 308
13.3 嚮控製颱寫輸齣 ................... 310
13.4 PrintWriter類 ........................ 311
13.5 讀/寫文件 .............................. 312
13.6 自動關閉文件 ....................... 318
13.7 applet的基礎知識................. 321
13.8 transient和volatile修飾符 .... 324
13.9 使用instanceof運算符 ......... 324
13.10 strictfp .................................. 327
13.11 本地方法 ............................. 327
13.12 使用斷言 ............................. 331
13.13 靜態導入 ............................. 334 13.14 通過this()調用重載的
構造函數 ............................. 336
第14章 泛型 ..................................... 339
14.1 什麼是泛型 ........................... 340
14.2 一個簡單的泛型示例 ........... 340
14.2.1 泛型隻使用對象 ............. 344 14.2.2 基於不同類型參數的
泛型類型是不同的 ......... 344 14.2.3 泛型提升類型安全性的
原理 ................................. 344
14.3 帶兩個類型參數的泛型類 .... 347
14.4 泛型類的一般形式 ................ 348
14.5 有界類型 ............................... 349
14.6 使用通配符參數 .................... 351
14.7 創建泛型方法........................ 359
14.8 泛型接口 ............................... 362
14.9 原始類型與遺留代碼 ............ 364
14.10 泛型類層次.......................... 367
14.10.1 使用泛型超類 ............. 367
14.10.2 泛型子類 ..................... 369 14.10.3 泛型層次中的運行時
類型比較 ..................... 370
14.10.4 強製轉換 ..................... 373
14.10.5 重寫泛型類的方法 ..... 373
14.11 泛型的類型推斷 .................. 374
14.12 擦拭 ..................................... 376
14.13 模糊性錯誤.......................... 379
14.14 使用泛型的一些限製 .......... 381
14.14.1 不能實例化類型參數 ... 381 14.14.2 對靜態成員的一些
限製 ............................. 381 14.14.3 對泛型數組的一些
限製 ............................. 382
14.14.4 對泛型異常的限製 ..... 383 第Ⅱ部分 Java庫
第15章 字符串處理 .......................... 387
15.1 String類的構造函數 ............. 388
15.2 字符串的長度........................ 390
15.3 特殊的字符串操作 ................ 391
15.3.1 字符串字麵值 ................. 391
15.3.2 字符串連接 ..................... 391 15.3.3 字符串和其他數據
類型的連接 ..................... 392 15.3.4 字符串轉換和toString()
方法 ................................. 393
Java 完全參考手冊(第 8 版)
XII
15.4 提取字符 ............................... 394
15.4.1 charAt() ........................... 394
15.4.2 getChars() ........................ 394
15.4.3 getBytes() ........................ 395
15.4.4 toCharArray() .................. 395
15.5 比較字符串 ........................... 395 15.5.1 equals()和
equalsIgnoreCase() .......... 395
15.5.2 regionMatches() .............. 396 15.5.3 startsWith()和
endsWith() ....................... 397
15.5.4 equals()與== ................... 397
15.5.5 compareTo() .................... 398
15.6 查找字符串 ........................... 399
15.7 修改字符串 ........................... 401
15.7.1 substring() ....................... 401
15.7.2 concat() ........................... 402
15.7.3 replace() .......................... 402
15.7.4 trim() ............................... 403
15.8 使用valueOf()轉換數據 ....... 404 15.9 改變字符串中字符的
大小寫 ................................... 404
15.10 其他String方法 .................. 405
15.11 StringBuffer類 .................... 406 15.11.1 StringBuffer類的
構造函數 .................... 406
15.11.2 length()與capacity() ... 407
15.11.3 ensureCapacity() ......... 407
15.11.4 setLength() .................. 408 15.11.5 charAt()與
setCharAt() ................. 408
15.11.6 getChars() ................... 409
15.11.7 append() ...................... 409
15.11.8 insert() ......................... 409
15.11.9 reverse() ...................... 410 15.11.10 delete()與
deleteCharAt()............ 411
15.11.11 replace() ..................... 411
15.11.12 substring() .................. 412 15.11.13 其他StringBuffer
方法 ........................... 412
15.12 StringBuilder類 ................... 413
第16章 探究java.lang ..................... 415
16.1 基本類型封裝器 .................... 416
16.1.1 Number ............................ 416
16.1.2 Double與Float ............... 417 16.1.3 理解isInfinite()與
isNaN() ............................ 420 16.1.4 Byte、Short、Integer和
Long ................................. 420
16.1.5 Character .......................... 427 16.1.6 對Unicode代碼點的
附加支持 ......................... 430
16.1.7 Boolean ............................ 431
16.2 Void類 ................................... 432
16.3 Process類 .............................. 432
16.4 Runtime類 ............................. 433
16.4.1 內存管理 ......................... 434
16.4.2 執行其他程序 ................. 435
16.5 ProcessBuilder類 .................. 436
16.6 System類 ............................... 439 16.6.1 使用currentTimeMillis()
計時程序的執行 ............. 440
16.6.2 使用arraycopy() .............. 441
16.6.3 環境屬性 ......................... 442
16.7 Object類 ................................ 442 16.8 使用clone()方法和Cloneable
接口 ....................................... 443
16.9 Class類 .................................. 445
16.10 ClassLoader類 ..................... 448
16.11 Math類 ................................ 448
16.11.1 三角函數 ..................... 448
16.11.2 指數函數 ..................... 449
16.11.3 捨入函數 ..................... 449
16.11.4 其他數學方法 ............. 450
目 錄
XIII
16.12 StrictMath類 ....................... 452
16.13 Compiler類 ......................... 452 16.14 Thread類、ThreadGroup類
和Runnable接口 ................ 452
16.14.1 Runnable接口 ............ 452
16.14.2 Thread類 .................... 452
16.14.3 ThreadGroup類 .......... 454 16.15 ThreadLocal和
InheritableThreadLocal類 .... 459
16.16 Package類 ........................... 459
16.17 RuntimePermission類 ......... 460
16.18 Throwable類 ....................... 460
16.19 SecurityManager類 ............. 460
16.20 StackTraceElement類 ......... 460
16.21 Enum類 ............................... 461
16.22 ClassValue類 ...................... 462
16.23 CharSequence接口 ............. 462
16.24 Comparable接口 ................. 462
16.25 Appendable接口 ................. 463
16.26 Iterable接口 ........................ 463
16.27 Readable接口 ..................... 464
16.28 AutoCloseable接口 ............. 464 16.29 Thread.UncaughtException-
Handler接口 ....................... 464
16.30 java.lang子包 ...................... 464
16.30.1 java.lang.annotation .... 465
16.30.2 java.lang.instrument .... 465
16.30.3 java.lang.invoke .......... 465
16.30.4 java.lang.management ... 465
16.30.5 java.lang.ref ................ 465
16.30.6 java.lang.reflect........... 465 第17章 java.util第1部分:
集閤框架 .............................. 467
17.1 集閤概述 ............................... 468
17.2 JDK 5對集閤框架的修改 .... 469 17.2.1 泛型從根本上改變瞭
集閤框架 ......................... 470 17.2.2 自動裝箱使得使用基本
類型更加容易 ................. 470
17.2.3 for-each風格的循環 ....... 470
17.3 集閤接口 ............................... 470
17.3.1 Collection接口 ................ 471
17.3.2 List接口 .......................... 473
17.3.3 Set接口 ........................... 474
17.3.4 SortedSet接口 ................. 474
17.3.5 NavigableSet接口 ........... 475
17.3.6 Queue接口 ...................... 476
17.3.7 Deque接口 ...................... 477
17.4 集閤類 ................................... 479
17.4.1 ArrayList類 ..................... 480
17.4.2 LinkedList類 ................... 483
17.4.3 HashSet類 ....................... 484
17.4.4 LinkedHashSet類 ............ 486
17.4.5 TreeSet類 ........................ 486
17.4.6 PriorityQueue類 .............. 487
17.4.7 ArrayDeque類 ................. 488
17.4.8 EnumSet類 ...................... 489
17.5 通過迭代器訪問集閤 ............ 490
17.5.1 使用迭代器 ..................... 491 17.5.2 使用for-each循環替代
迭代器 ............................. 493 17.6 在集閤中存儲用戶
定義的類................................ 494
17.7 RandomAccess接口 .............. 495
17.8 使用映射 ............................... 496
17.8.1 映射接口 ......................... 496
17.8.2 映射類 ............................. 500
17.9 比較器 ................................... 505
17.10 集閤算法.............................. 508
17.11 Arrays類 .............................. 513
17.12 需要泛型集閤的原因 .......... 518
17.13 遺留的類和接口 .................. 521
17.13.1 Enumeration接口 ....... 521
17.13.2 Vector類 ..................... 521
17.13.3 Stack類 ....................... 525
Java 完全參考手冊(第 8 版)
XIV
17.13.4 Dictionary類 .............. 527
17.13.5 Hashtable類 ............... 528
17.13.6 Properties類 ............... 532
17.13.7 使用store()和load() .... 535
17.14 集閤小結 ............................. 537 第18章 java.util第2部分:更多實用
工具類 ................................. 539
18.1 StringTokenizer類 ................. 539
18.2 BitSet類 ................................ 541
18.3 Date類 ................................... 544
18.4 Calendar類 ............................ 546
18.5 GregorianCalendar類 ............ 549
18.6 TimeZone類 .......................... 550
18.7 SimpleTimeZone類 .............. 551
18.8 Locale類 ............................... 552
18.9 Random類 ............................. 554
18.10 Observable類 ...................... 555
18.10.1 Observer接口 ............. 556
18.10.2 Observer示例 ............. 556
18.11 Timer和TimerTask類 ........ 559
18.12 Currency類 ......................... 561
18.13 Formatter類 ........................ 562 18.13.1 Formatter類的
構造函數 .................... 563
18.13.2 Formatter類的方法 .... 563
18.13.3 格式化的基礎知識 .... 564
18.13.4 格式化字符串和字符 ... 566
18.13.5 格式化數字 ................ 566
18.13.6 格式化時間和日期 .... 567
18.13.7 %n和%%說明符 ....... 569
18.13.8 指定最小字段寬度 .... 569
18.13.9 指定精度 .................... 571
18.13.10 使用格式標誌 .......... 572
18.13.11 對齊輸齣 .................. 572 18.13.12 空格、“+”、“0”以及
“(”標誌 ................... 573
18.13.13 逗號標誌 .................. 574
18.13.14 “#:”標誌 ............... 574
18.13.15 大寫選項 ................... 574
18.13.16 使用參數索引 ........... 575
18.13.17 關閉Formatter對象 ... 577
18.13.18 printf()方法 ............... 577
18.14 Scanner類 ............................ 577 18.14.1 Scanner類的
構造函數 ..................... 577
18.14.2 掃描的基礎知識 ......... 578
18.14.3 一些Scanner示例 ...... 581
18.14.4 設置定界符 ................. 585
18.14.5 其他Scanner特性 ...... 587 18.15 ResourceBundle、 ListResourceBundle和
PropertyResourceBundle類.... 588
18.16 其他實用工具類和接口 ...... 592
18.17 java.util子包........................ 593 18.17.1 java.util.concurrent、 java.util.concurrent.atomic 和java.util.concurrent.
locks ............................ 593
18.17.2 java.util.jar ................... 593
18.17.3 java.util.logging ........... 593
18.17.4 java.util.prefs ............... 593
18.17.5 java.util.regex .............. 594
18.17.6 java.util.spi .................. 594
18.17.7 java.util.zip .................. 594
第19章 輸入/輸齣:探究Java.io ...... 595
19.1 I/O類和接口 ......................... 596
19.2 File類 .................................... 597
19.2.1 目錄 ................................. 600 19.2.2 使用FilenameFilter
接口 ................................. 601
19.2.3 listFiles()方法 .................. 602
19.2.4 創建目錄 ......................... 602 19.3 AutoCloseable、Closeable和
Flushable接口 ....................... 602
目 錄
XV
19.4 I/O異常 ................................. 603
19.5 關閉流的兩種方式 ............... 604
19.6 流類 ....................................... 605
19.7 字節流 ................................... 605
19.7.1 InputStream類 ................ 605
19.7.2 OutputStream類 ............. 606
19.7.3 FileInputStream類 .......... 606
19.7.4 FileOutputStream類 ....... 609 19.7.5 ByteArrayInputStream
類 ..................................... 611 19.7.6 ByteArrayOutputStream
類 .................................... 613
19.7.7 過濾的字節流 ................. 614
19.7.8 緩存的字節流 ................. 614
19.7.9 SequenceInputStream類 .... 618
19.7.10 PrintStream類 ............... 620 19.7.11 DataOutputStream和
DataInputStream類 ...... 622
19.7.12 RandomAccessFile類 ... 624
19.8 字符流 ................................... 625
19.8.1 Reader類 ........................ 625
19.8.2 Writer類 ......................... 626
19.8.3 FileReader類 .................. 627
19.8.4 FileWriter類 ................... 627
19.8.5 CharArrayReader類 ....... 628
19.8.6 CharArrayWriter類 ........ 630
19.8.7 BufferedReader類 .......... 631
19.8.8 BufferedWriter類 ........... 633
19.8.9 PushbackReader類 ......... 633
19.8.10 PrintWriter類 ................ 634
19.9 Console類 ............................. 635
19.10 串行化 ................................. 637
19.10.1 Serializable接口 ........ 637
19.10.2 Externalizable接口 .... 637
19.10.3 ObjectOutput接口 ...... 638 19.10.4 ObjectOutputStream
類 ................................ 638
19.10.5 ObjectInput接口 ........ 639
19.10.6 ObjectInputStream類 .... 640
19.10.7 串行化示例 ................. 641
19.11 流的優點 .............................. 642
第20章 探究NIO ............................. 643
20.1 NIO類 ................................... 643
20.2 NIO的基礎知識 ................... 644
20.2.1 緩存 ................................. 644
20.2.2 通道 ................................. 646
20.2.3 字符集和選擇器 ............. 647
20.3 JDK 7對NIO的增強 ........... 648
20.3.1 Path接口 ......................... 648
20.3.2 Files類 ............................ 649
20.3.3 Path接口 ......................... 651
20.3.4 文件屬性接口 ................. 652 20.3.5 FileSystem、FileSystems
和FileStore類 ................ 654
20.4 使用NIO係統 ...................... 654 20.4.1 為基於通道的I/O使用
NIO .................................. 654 20.4.2 為基於流的I/O
使用NIO ......................... 663 20.4.3 為路徑和文件係統操作
使用NIO ......................... 666 20.5 JDK 7之前基於通道的
例子 ....................................... 674
20.5.1 讀文件(JDK 7之前) ....... 674
20.5.2 寫文件(JDK 7之前) ....... 677
第21章 聯網 ..................................... 681
21.1 聯網的基礎知識 .................... 682
21.2 聯網類和接口........................ 683
21.3 InetAddress類 ....................... 683
21.3.1 工廠方法 ......................... 684
21.3.2 實例方法 ......................... 685 21.4 Inet4Address類和
Inet6Address類...................... 685
21.5 TCP/IP客戶端套接字 ........... 686
21.6 URL類 .................................. 689
Java 完全參考手冊(第 8 版)
XVI
21.7 URLConnection類 ................ 691
21.8 HttpURLConnection類 ......... 694
21.9 URI類 ................................... 696
21.10 cookie................................... 696
21.11 TCP/IP服務器套接字 ........ 696
21.12 數據報 ................................. 697
21.12.1 DatagramSocket類 ..... 697
21.12.2 DatagramPacket類 ..... 698
21.12.3 數據報示例 ................ 699
第22章 Applet類 ............................. 701
22.1 applet的兩種類型................. 701
22.2 applet的基礎知識................. 702
22.3 applet的架構 ........................ 704
22.4 applet的骨架 ........................ 705
22.4.1 applet的初始化和終止 ... 706
22.4.2 重寫update()方法 .......... 707
22.5 簡單的applet顯示方法 ........ 707
22.6 請求重畫 ............................... 709
22.7 使用狀態欄窗口 ................... 712
22.8 HTML APPLET標簽 ............ 713
22.9 嚮applet傳遞參數................ 714 22.10 getDocumentBase()和
getCodeBase() ...................... 718 22.11 AppletContext接口和
showDocument()方法 .......... 718
22.12 AudioClip接口 ................... 720
22.13 AppletStub接口 .................. 720
22.14 嚮控製颱輸齣 ..................... 720
第23章 事件處理 .............................. 721
23.1 兩種事件處理機製 ............... 722
23.2 委托事件模型 ....................... 722
23.2.1 事件 ................................ 722
23.2.2 事件源 ............................ 723
23.2.3 事件監聽器 ..................... 723
23.3 事件類 ................................... 724
23.3.1 ActionEvent類 ............... 725
23.3.2 AdjustmentEvent類 ........ 726
23.3.3 ComponentEvent類 ........ 726
23.3.4 ContainerEvent類 ........... 727
23.3.5 FocusEvent類 ................. 727
23.3.6 InputEvent類................... 728
23.3.7 ItemEvent類 .................... 729
23.3.8 KeyEvent類 .................... 730
23.3.9 MouseEvent類 ................ 730
23.3.10 MouseWheelEvent類 .... 732
23.3.11 TextEvent類 .................. 733
23.3.12 WindowEvent類 ........... 733
23.4 事件源 ................................... 734
23.5 事件監聽器接口 .................... 735
23.5.1 ActionListener接口 ........ 736 23.5.2 AdjustmentListener
接口 ................................. 736 23.5.3 ComponentListener
接口 ................................. 736
23.5.4 ContainerListener接口 .... 736
23.5.5 FocusListener接口 .......... 736
23.5.6 ItemListener接口 ............ 736
23.5.7 KeyListener接口 ............. 737
23.5.8 MouseListener接口 ........ 737 23.5.9 MouseMotionListener
接口 ................................. 737 23.5.10 MouseWheelListener
接口 ............................... 737
23.5.11 TextListener接口 .......... 738 23.5.12 WindowFocusListener
接口 ............................... 738
23.5.13 WindowListener接口 .... 738
23.6 使用委托事件模型 ................ 738
23.6.1 處理鼠標事件 ................. 739
23.6.2 處理鍵盤事件 ................. 741
23.7 適配器類 ............................... 744
23.8 內部類 ................................... 746 第24章 AWT介紹:使用窗口、
圖形和文本 .......................... 749
24.1 AWT類 .................................. 750
24.2 窗口基本元素........................ 752
24.2.1 Component類 .................. 752
目 錄
XVII
24.2.2 Container類 .................... 753
24.2.3 Panel類 ........................... 753
24.2.4 Window類 ...................... 753
24.2.5 Frame類 ......................... 753
24.2.6 Canvas類 ........................ 753
24.3 使用框架窗口 ....................... 753
24.3.1 設置窗口的尺寸 ............. 754
24.3.2 隱藏和顯示窗口 ............. 754
24.3.3 設置窗口的標題 ............. 754
24.3.4 關閉框架窗口 ................. 754
24.4 在applet中創建框架窗口 .... 755
24.5 創建基於窗口的程序 ........... 761
24.6 在窗口中顯示信息 ............... 763
24.7 使用圖形 ............................... 763
24.7.1 繪製直綫......................... 764
24.7.2 繪製矩形......................... 765
24.7.3 繪製橢圓和圓 ................. 765
24.7.4 繪製弧形......................... 766
24.7.5 繪製多邊形 ..................... 767
24.7.6 改變圖形的大小 ............. 767
24.8 使用顔色 ............................... 768
24.8.1 Color類的方法 ............... 769
24.8.2 設置當前圖形的顔色 ..... 770
24.8.3 一個演示顔色的applet ... 770
24.9 設置繪圖模式 ....................... 771
24.10 使用字體 ............................. 773
24.10.1 確定可用字體 ............ 774
24.10.2 創建和選擇字體 ........ 775
24.10.3 獲取字體信息 ............ 777 24.11 使用FontMetrics管理文本
輸齣 ...................................... 778
24.11.1 顯示多行文本 ............ 779
24.11.2 居中顯示文本 ............ 781
24.11.3 對齊多行文本 ............ 782 第25章 使用AWT控件、布局
管理器和菜單 ...................... 787
25.1 控件的基礎知識 ................... 788
25.1.1 添加和移除控件 ............. 788
25.1.2 響應控件 ......................... 788
25.1.3 HeadlessException異常 ... 788
25.2 使用標簽 ............................... 789
25.3 使用命令按鈕........................ 790
25.4 使用復選框............................ 793
25.5 使用復選框組........................ 795
25.6 使用下拉列錶........................ 796
25.7 使用列錶框............................ 798
25.8 管理滾動條............................ 801
25.9 使用TextField ....................... 804
25.10 使用TextArea ...................... 807
25.11 理解布局管理器 .................. 808 25.11.1 FlowLayout布局
管理器 ......................... 809 25.11.2 BorderLayout布局
管理器 ......................... 811
25.11.3 使用Insets ................... 812 25.11.4 GridLayout布局
管理器 ......................... 814 25.11.5 CardLayout布局
管理器 ......................... 815 25.11.6 GridBagLayout布局
管理器 ......................... 818
25.12 菜單欄和菜單 ...................... 823
25.13 對話框 ................................. 829
25.14 FileDialog類 ....................... 834 25.15 擴展AWT控件以處理
事件 ..................................... 835
25.15.1 擴展按鈕 ..................... 836
25.15.2 擴展復選框 ................. 837
25.15.3 擴展復選框組 ............. 838
25.15.4 擴展下拉列錶 ............. 839
25.15.5 擴展列錶框 ................. 840
25.15.6 擴展滾動條 ................. 841
25.16 關於重載paint()方法 .......... 842
Java 完全參考手冊(第 8 版)
XVIII
第26章 圖像 ..................................... 843
26.1 文件格式 ............................... 844 26.2 圖像基礎:創建、加載與
顯示 ....................................... 844
26.2.1 創建Image對象 ............. 844
26.2.2 加載圖像......................... 845
26.2.3 顯示圖像......................... 845
26.3 ImageObserver接口 .............. 846
26.4 雙緩存 ................................... 848
26.5 MediaTracker類 .................... 850
26.6 ImageProducer接口 .............. 853
26.7 ImageConsumer接口 ............ 855
26.8 ImageFilter類 ........................ 857
26.8.1 CropImageFilter類 ......... 858
26.8.2 RGBImageFilter類 ......... 860
26.9 單元格動畫 ........................... 870
26.10 其他圖像類 ......................... 873
第27章 並發實用工具 ...................... 875
27.1 並發API包 ........................... 876
27.1.1 java.util.concurrent包 ..... 876 27.1.2 java.util.concurrent.atomic
包 .................................... 877 27.1.3 java.util.concurrent.locks
包 .................................... 877
27.2 使用同步對象 ....................... 877
27.2.1 Semaphore類 .................. 878
27.2.2 CountDownLatch類 ....... 884
27.2.3 CyclicBarrier類 .............. 885
27.2.4 Exchanger類................... 888
27.2.5 Phaser類 ......................... 890
27.3 使用執行器 ........................... 898 27.3.1 一個簡單的執行器
示例 ............................ 898 27.3.2 使用Callable和Future
接口 ................................ 900
27.4 TimeUnit枚舉 ....................... 903
27.5 並發集閤 ............................... 904
27.6 鎖 ........................................... 905
27.7 原子操作 ............................... 908 27.8 通過Fork/Join Framework
進行並行編程 ........................ 909
27.8.1 主要的Fork/Join類 ........ 909
27.8.2 分而治之的策略 ............. 912 27.8.3 一個簡單的Fork/Join
示例 ................................. 913 27.8.4 理解並行級彆帶來的
影響 ................................. 915 27.8.5 一個使用RecursiveTask<V>
的例子 ............................. 918
27.8.6 異步執行任務 ................. 921
27.8.7 取消任務 ......................... 921
27.8.8 確定任務的完成狀態 ..... 921
27.8.9 重新啓動任務 ................. 922
27.8.10 深入研究 ....................... 922 27.8.11 關於Fork/Join Framework
的一些提示 ................... 923 27.9 並發實用工具與Java傳統
方式的比較............................ 924
第28章 正則錶達式和其他包 ........... 925
28.1 核心Java API包 ................... 926
28.2 正則錶達式處理 .................... 927
28.2.1 Pattern類 ......................... 928
28.2.2 Matcher類 ....................... 928
28.2.3 正則錶達式的語法 ......... 929
28.2.4 演示模式匹配 ................. 929
28.2.5 模式匹配的兩個選項 ..... 935
28.2.6 探究正則錶達式 ............. 935
28.3 反射 ....................................... 936
28.4 遠程方法調用........................ 939
28.5 文本格式化............................ 943
28.5.1 DateFormat類 ................. 943
28.5.2 SimpleDateFormat類 ...... 945
目 錄
XIX
第Ⅲ部分 使用Java開發軟件
第29章 Java Bean ............................. 951
29.1 Java Bean是什麼 .................. 952
29.2 Java Bean的優勢 .................. 952
29.3 反省 ....................................... 952
29.3.1 屬性的設計模式 ............. 952
29.3.2 事件的設計模式 ............. 954
29.3.3 方法與設計模式 ............. 954
29.3.4 使用BeanInfo接口 ........ 955
29.4 綁定屬性與約束屬性 ........... 955
29.5 持久性 ................................... 955
29.6 定製器 ................................... 956
29.7 Java Bean API ........................ 956
29.7.1 Introspector類 ................ 958
29.7.2 PropertyDescriptor類 ..... 958
29.7.3 EventSetDescriptor類 .... 958
29.7.4 MethodDescriptor類 ...... 958
29.8 一個Bean示例 ..................... 958
第30章 Swing簡介 .......................... 963
30.1 Swing的起源 ........................ 964
30.2 Swing以AWT為基礎 ......... 964
30.3 兩個關鍵的Swing特性 ....... 964
30.3.1 Swing組件是輕量級的 ... 964
30.3.2 Swing支持可插入外觀 ... 965
30.4 MVC連接 ............................. 965
30.5 組件與容器 ........................... 966
30.5.1 組件 ................................ 966
30.5.2 容器 ................................ 967
30.5.3 頂級容器窗格 ................. 967
30.6 Swing包 ................................ 967 30.7 一個簡單的Swing
應用程序 ............................... 968
30.8 事件處理 ............................... 972
30.9 創建Swing applet ................. 975
30.10 在Swing中繪圖 ................. 977
30.10.1 繪圖的基礎知識 ........ 977
30.10.2 計算可繪製區域 ........ 978
30.10.3 一個繪圖示例 ............. 979
第31章 探究Swing .......................... 983
31.1 JLabel與ImageIcon .............. 984
31.2 JTextField ............................... 985
31.3 Swing按鈕 ............................ 987
31.3.1 JButton ............................. 988
31.3.2 JToggleButton .................. 990
31.3.3 復選框 ............................. 992
31.3.4 單選按鈕 ......................... 994
31.4 JTabbedPane .......................... 996
31.5 JScrollPane ............................. 998
31.6 JList ...................................... 1000
31.7 JComboBox.......................... 1003
31.8 樹 ......................................... 1006
31.9 JTable ................................... 1009
31.10 繼續研究Swing ................ 1011
第32章 servlet ............................... 1013
32.1 背景 ..................................... 1013
32.2 sevelet的生命周期 ............. 1014
32.3 Servlet開發選項 ................. 1015
32.4 使用Tomcat ......................... 1015
32.5 一個簡單的servlet .............. 1017 32.5.1 創建和編譯servlet
源代碼 .......................... 1017
32.5.2 啓動Tomcat ................. 1018 32.5.3 啓動Web瀏覽器並
請求servlet ................... 1018
32.6 servlet API ............................ 1018
32.7 javax.servlet包 .................... 1018
32.7.1 Servlet接口 .................. 1019
32.7.2 ServletConfig接口 ....... 1020
32.7.3 ServletContext接口 ..... 1020
32.7.4 ServletRequest接口 ..... 1020
32.7.5 ServletResponse接口 ... 1021
32.7.6 GenericServlet類 ......... 1022
32.7.7 ServletInputStream類 ... 1022
32.7.8 ServletOutputStream類 ... 1022
Java 完全參考手冊(第 8 版)
XX
32.7.9 servlet異常類 ............... 1022
32.8 讀取servlet參數 ................. 1022
32.9 javax.servlet.http包 ............. 1024 32.9.1 HttpServletRequest
接口 .............................. 1025 32.9.2 HttpServletResponse
接口 .............................. 1025
32.9.3 HttpSession接口 .......... 1026 32.9.4 HttpSessionBindingListener
接口 .............................. 1027
32.9.5 Cookie類 ...................... 1027
32.9.6 HttpServlet類 ............... 1028
32.9.7 HttpSessionEvent類 ..... 1029 32.9.8 HttpSessionBindingEvent
類 .................................. 1030
32.10 處理HTTP請求和響應 ... 1030 32.10.1 處理HTTP GET
請求 .......................... 1030 32.10.2 處理HTTP POST
請求 .......................... 1032
32.11 使用cookie ........................ 1033
32.12 會話跟蹤 ........................... 1035 第Ⅳ部分 Java應用
第33章 applet和servlet在金融領域的 應用 ................................... 1039
33.1 計算貸款的還款額 ............. 1040
33.1.1 RegPay中聲明的變量 ... 1044
33.1.2 init()方法....................... 1044
33.1.3 makeGUI()方法 ............ 1044
33.1.4 actionPerformed()方法 .... 1047
33.1.5 compute()方法 .............. 1048
33.2 計算投資的未來收益 ......... 1048 33.3 計算為達到未來收益所需
要的初始投資額 ................. 1052 33.4 計算為拿到期望的養老金
所需要的初始投資額 ......... 1056
33.5 計算給定投資的最大收益 ... 1060
33.6 計算貸款餘額 ..................... 1064 33.7 創建應用於金融領域的
servlet ................................... 1068 33.7.1 將RegPay applet轉換為
servlet............................ 1069
33.7.2 RegPayS servlet ............ 1069
33.8 一些嘗試 ............................. 1072
第34章 使用Java創建下載管理器 ... 1073
34.1 理解Internet下載 ............... 1074
34.2 下載管理器概述 .................. 1074
34.3 DownLoad類....................... 1075
34.3.1 DownLoad類的變量 ... 1079 34.3.2 DownLoad類的
構造函數 ...................... 1079
34.3.3 download()方法 ............ 1079
34.3.4 run()方法 ...................... 1079
34.3.5 stateChanged()方法 ...... 1083
34.3.6 動作和訪問器方法 ...... 1083
34.4 ProgressRenderer類 ............ 1083
34.5 DownloadsTableModel類 ... 1084
34.5.1 addDownload()方法 ..... 1086
34.5.2 clearDownload()方法 ... 1087
34.5.3 getColumnClass()方法 ... 1087
34.5.4 getValueAt()方法 .......... 1087
34.5.5 update()方法 ................. 1088
34.6 DownloadManager類 .......... 1088 34.6.1 DownloadManager類的
變量 .............................. 1094 34.6.2 DownloadManager類的
構造函數 ...................... 1095
34.6.3 verifyUrl()方法 ............. 1095 34.6.4 tableSelectionChanged()
方法 .............................. 1096
34.6.5 updateButtons()方法 ..... 1096
34.6.6 處理動作事件 .............. 1097
34.7 編譯和運行下載管理器 ...... 1098
34.8 進一步完善下載管理器 ...... 1098
附錄 使用Java的文檔注釋 ............. 1099
· · · · · · (
收起)