主要內容
● 數據類型、變量、數組和運算符
● 控制語句
● 類、對象和方法
● 方法重載和重寫
● 繼承
● 接口和包
● 異常處理
● 多線程編程
● 枚舉、自動裝箱和注解
● I/O類
● 泛型
● lambda表達式
● 模塊
● 字符串處理
● 集合框架
● 聯網
● 事件處理
● AWT
● Swing和JavaFX
● 并發API
● 流API
● 正則表達式
● Java Bean
● servlet
《Java 9編程參考官方大全(第10版)》針對Java SE 9做了全面更新,介紹了如何開發、編譯、調試和運行Java程序。暢銷書作家Herbert Schildt在本書中詳盡地講解了Java語言,包括Java的語法、關鍵字和基本編程原則,以及Java API庫的主要內容,如I/O、集合框架、流庫或并發實用程序。另外,《Java 9編程參考官方大全(第10版)》還介紹了Swing、JavaFX、Java Bean和servlet,并通過大量真實案例展示了Java語言的應用。本書對Java SE 9的新模塊特性也進行了深入講解,*后還介紹了Java的新交互式編程工具JShell。
前 言
Java是當今世界最重要、也是使用最廣泛的計算機語言之一。而且,在多年之前它就已經擁有這一榮譽。與其他一些計算機語言隨著時間的流逝影響也逐漸減弱不同,Java隨著時間的推移反而變得更加強大。從首次發布開始,Java就躍到了Internet編程的前沿。后續的每一個版本都進一步鞏固了這一地位。如今,Java依然是開發Web應用的最佳選擇。Java是一門功能強大且通用的編程語言,適合于多種目的的開發。簡言之:在現實世界中,很多應用都是使用Java開發的,掌握Java語言非常重要。
Java成功的一個關鍵原因在于它的敏捷性。自從最初的Java 1.0版發布以來,Java不斷地進行完善以適應編程環境和開發人員編程方式的變化。最重要的是,Java不僅僅是在跟隨潮流,更是在幫助創造潮流。Java能夠適應計算機世界快速變化的能力,是它一直并且仍將如此成功的關鍵因素。
《Java編程參考官方大全》自從1996年首次出版以來,已經經歷了數次改版,每次改版都反映了Java的不斷演化進程。《Java 9編程參考官方大全(第10版)》已經針對Java SE 9(JDK 9)進行了升級。因為Java SE 9向Java語言添加了幾個新特性,所以《Java 9編程參考官方大全(第10版)》包含了大量新內容。最重要的一個新增特性是模塊(module),通過該特性可以指定應用程序中代碼間的關系和依賴性。模塊也會影響對元素的訪問。此外,模塊代表對Java語言最具深遠意義的更改之一,其中添加了兩個新的語法元素和10個新關鍵字。模塊還對Java API庫產生了巨大影響,因為現在模塊由API庫中的包構成。另外,為了支持模塊,新增了一些工具,對現有的工具也進行了更新,還定義了新的文件格式。由于模塊是一個非常重要的新特性,因此《Java 9編程參考官方大全(第10版)》的第16章專門對其進行了講解。
除模塊外,JDK 9中還新增了一些其他特性。其中最有趣的是JShell,該工具提供了一個交互式環境,開發人員不需要編寫完整的程序就可以方便地在其中體驗代碼片段。不管是初學者還是有經驗的編程人員都將發現該工具非常有用。《Java 9編程參考官方大全(第10版)》的附錄C對該工具進行了介紹。與前幾版一樣,JDK 9也對Java語言及其API庫進行了一些細小的更新和增強。因此,你在整《Java 9編程參考官方大全(第10版)》中都會看到這些更新內容。最后要提到的一點是:Java SE 9中刪除了applet和applet API。因此,《Java 9編程參考官方大全(第10版)》不再詳細介紹它們,而僅在《Java 9編程參考官方大全(第10版)》的附錄D中對applet做了簡要介紹。
一本適合所有編程人員的書
《Java 9編程參考官方大全(第10版)》面向所有開發人員,不管是初學者還是有經驗的編程人員。初學者將從《Java 9編程參考官方大全(第10版)》中發現每個主題的詳細討論,以及許多特別有幫助的例子。而對Java更高級特性和庫的深入討論,將會吸引有經驗的編程人員。無論是對于初學者還是有經驗的編程人員,《Java 9編程參考官方大全(第10版)》都提供了持久的資源和方便實用的參考。
《Java 9編程參考官方大全(第10版)》內容
《Java 9編程參考官方大全(第10版)》是對Java語言的全面指導,描述了它的語法、關鍵字以及基本的編程原則,另外還介紹了Java API庫的重要部分。《Java 9編程參考官方大全(第10版)》分為5部分,每部分關注Java開發環境的不同方面。
第Ⅰ部分是對Java語言的深入闡述。該部分從基礎知識開始講解,包括數據類型、運算符、控制語句以及類等。然后介紹了繼承、包、接口、異常處理以及多線程,還介紹了注解、枚舉、自動裝箱、泛型、I/O以及lambda表達式等內容。本部分最后一章闡述了模塊。模塊是Java SE 9中最重要的新增特性。
第Ⅱ部分介紹Java的標準API庫的關鍵內容。本部分的主題包括字符串、I/O、網絡、標準實用工具、集合框架、AWT、事件處理、圖像、并發編程(包括Fork/Join框架)、正則表達式和新增的流庫。
第Ⅲ部分用三章內容介紹Swing。
第IV部分用三章內容介紹JavaFX。
第V部分包含兩章,這兩章展示了Java的實際應用。本部分首先介紹Java Bean,然后介紹servlet。
《Java 9編程參考官方大全(第10版)》下載資源包可掃描封底二維碼獲得。
致 謝
在此我要特別感謝Patrick Naughton、Joe ONeil和Danny Coward。
Patrick Naughton是Java語言的創立者之一,他還參與編寫了《Java 9編程參考官方大全(第10版)》的第1版。《Java 9編程參考官方大全(第10版)》第21、23和27章的大部分材料最初都是由Patrick提供的。他的洞察力、專業知識和活力都對《Java 9編程參考官方大全(第10版)》的成功付梓貢獻極大。
在準備《Java 9編程參考官方大全(第10版)》的第2版和第3版的過程中,Joe ONeil提供了原始素材,這些素材呈現在《Java 9編程參考官方大全(第10版)》的第30、32、37和38章中。Joe對我的數《Java 9編程參考官方大全(第10版)》都有幫助,并且他提供的幫助一直都是最高質量的。
Danny Coward是《Java 9編程參考官方大全(第10版)》第10版的技術編輯。Danny對我的數《Java 9編程參考官方大全(第10版)》都有貢獻,他的忠告、洞察力和建議都有巨大價值,對此表示感謝。
如何進一步學習
《Java編程參考官方教程》為讀者開啟了Herb Schildt Java編程圖書系列的大門。下面是其他一些你可能感興趣的圖書:
Herb Schildts Java Programming Cookbook
Java:A Beginners Guide
Introducing JavaFX 8 Programming
Swing:A Beginners Guide
The Art of Java
Herbert Schildt是一位暢銷書作家,在幾乎30年的時間里,他撰寫了大量關于編程的圖書。Herbert是Java語言的權威。他撰寫的編程書籍在世界范圍內銷售了數百萬冊,并且已經被翻譯成所有主要的非英語語言。他撰寫了大量Java方面的書籍,包括Java:A Beginners Guide、Herb Schildts Java Programming Cookbook、Introducing JavaFX 8 Programming和Swing:A Beginners Guide,還撰寫了許多關于C、C 和C#的圖書。盡管對計算機的所有方面都感興趣,但是他主要關注計算機語言。Schildt獲得了美國伊利諾伊大學的本科和研究生學位。他的個人網站是www.HerbSchildt.com。
目 錄
第Ⅰ部分 Java語言
第1章 Java的歷史和演變 3
1.1 Java的家世 3
1.1.1 現代編程語言的誕生:C語言 3
1.1.2 C :下一個階段 4
1.1.3 Java出現的時機已經成熟 4
1.2 Java的誕生 5
1.3 Java改變Internet的方式 6
1.3.1 Java applet 6
1.3.2 安全性 6
1.3.3 可移植性 6
1.4 Java的魔力:字節碼 7
1.5 不再推薦使用applet 7
1.6 servlet:服務器端的Java 8
1.7 Java的關鍵特性 8
1.7.1 簡單性 8
1.7.2 面向對象 8
1.7.3 健壯性 8
1.7.4 多線程 9
1.7.5 體系結構中立 9
1.7.6 解釋執行和高性能 9
1.7.7 分布式 9
1.7.8 動態性 9
1.8 Java的演變歷程 9
1.9 Java SE 9 11
1.10 文化革新 12
第2章 Java綜述 13
2.1 面向對象編程 13
2.1.1 兩種范式 13
2.1.2 抽象 13
2.1.3 OOP三原則 14
2.2 第一個簡單程序 16
2.2.1 輸入程序 17
2.2.2 編譯程序 17
2.2.3 深入分析第一個示例程序 17
2.3 第二個簡短程序 19
2.4 兩種控制語句 20
2.4.1 if語句 20
2.4.2 for循環 21
2.5 使用代碼塊 22
2.6 詞匯問題 23
2.6.1 空白符 23
2.6.2 標識符 23
2.6.3 字面值 23
2.6.4 注釋 23
2.6.5 分隔符 23
2.6.6 Java關鍵字 24
2.7 Java類庫 24
第3章 數據類型、變量和數組 25
3.1 Java是強類型化的語言 25
3.2 基本類型 25
3.3 整型 25
3.3.1 byte 26
3.3.2 short 26
3.3.3 int 26
3.3.4 long 26
3.4 浮點型 27
3.4.1 float 27
3.4.2 double 27
3.5 字符型 27
3.6 布爾型 29
3.7 深入分析字面值 29
3.7.1 整型字面值 29
3.7.2 浮點型字面值 30
3.7.3 布爾型字面值 30
3.7.4 字符型字面值 31
3.7.5 字符串字面值 31
3.8 變量 31
3.8.1 變量的聲明 31
3.8.2 動態初始化 32
3.8.3 變量的作用域和生存期 32
3.9 類型轉換和強制類型轉換 34
3.9.1 Java的自動類型轉換 34
3.9.2 強制轉換不兼容的類型 34
3.10 表達式中的自動類型提升 35
3.11 數組 36
3.11.1 一維數組 36
3.11.2 多維數組 38
3.11.3 另一種數組聲明語法 41
3.12 關于字符串的一些說明 41
第4章 運算符 43
4.1 算術運算符 43
4.1.1 基本算術運算符 43
4.1.2 求模運算符 44
4.1.3 算術與賦值復合運算符 44
4.1.4 自增與自減運算符 45
4.2 位運算符 46
4.2.1 位邏輯運算符 47
4.2.2 左移 49
4.2.3 右移 50
4.2.4 無符號右移 51
4.2.5 位運算符與賦值的組合 52
4.3 關系運算符 52
4.4 布爾邏輯運算符 53
4.5 賦值運算符 54
4.6 ?運算符 55
4.7 運算符的優先級 55
4.8 使用圓括號 56
第5章 控制語句 57
5.1 Java的選擇語句 57
5.1.1 if語句 57
5.1.2 switch語句 59
5.2 迭代語句 62
5.2.1 while語句 63
5.2.2 do-while語句 64
5.2.3 for語句 66
5.2.4 for循環的for-each版本 68
5.2.5 嵌套的循環 72
5.3 跳轉語句 72
5.3.1 使用break語句 72
5.3.2 使用continue語句 75
5.3.3 return語句 76
第6章 類 77
6.1 類的基礎知識 77
6.1.1 類的一般形式 77
6.1.2 一個簡單的類 78
6.2 聲明對象 79
6.3 為對象引用變量賦值 80
6.4 方法 81
6.4.1 為Box類添加方法 81
6.4.2 返回值 83
6.4.3 添加帶參數的方法 84
6.5 構造函數 85
6.6 this關鍵字 87
6.7 垃圾回收 88
6.8 堆棧類 88
第7章 方法和類的深入分析 91
7.1 重載方法 91
7.2 將對象用作參數 94
7.3 實參傳遞的深入分析 96
7.4 返回對象 97
7.5 遞歸 98
7.6 訪問控制 100
7.7 理解static 102
7.8 final介紹 104
7.9 重新審視數組 104
7.10 嵌套類和內部類 105
7.11 String類介紹 107
7.12 使用命令行參數 109
7.13 varargs:可變長度實參 110
7.13.1 重載varargs方法 112
7.13.2 varargs方法與模糊性 113
第8章 繼承 115
8.1 繼承的基礎知識 115
8.1.1 成員訪問與繼承 116
8.1.2 一個更實際的例子 117
8.1.3 超類變量可以引用子類對象 118
8.2 使用super關鍵字 119
8.2.1 使用super調用超類的構造函數 119
8.2.2 super的另一種用法 122
8.3 創建多級繼承層次 123
8.4 構造函數的執行時機 125
8.5 方法重寫 126
8.6 動態方法調度 128
8.6.1 重寫方法的目的 129
8.6.2 應用方法重寫 129
8.7 使用抽象類 130
8.8 在繼承中使用final關鍵字 132
8.8.1 使用final關鍵字阻止重寫 132
8.8.2 使用final關鍵字阻止繼承 133
8.9 Object類 133
第9章 包和接口 135
9.1 包 135
9.1.1 定義包 135
9.1.2 包查找與CLASSPATH 136
9.1.3 一個簡短的包示例 136
9.2 包和成員訪問 137
9.3 導入包 140
9.4 接口 141
9.4.1 定義接口 141
9.4.2 實現接口 142
9.4.3 嵌套接口 144
9.4.4 應用接口 144
9.4.5 接口中的變量 147
9.4.6 接口可以擴展 148
9.5 默認接口方法 149
9.5.1 默認方法的基礎知識 149
9.5.2 一個更加實用的例子 151
9.5.3 多級繼承的問題 151
9.6 在接口中使用靜態方法 152
9.7 私有接口方法 152
9.8 關于包和接口的最后說明 153
第10章 異常處理 155
10.1 異常處理的基礎知識 155
10.2 異常類型 155
10.3 未捕獲的異常 156
10.4 使用try和catch 157
10.5 多條catch子句 158
10.6 嵌套的try語句 159
10.7 throw 161
10.8 throws 162
10.9 finally 162
10.10 Java的內置異常 164
10.11 創建自己的異常子類 165
10.12 鏈式異常 166
10.13 其他三個異常特性 167
10.14 使用異常 168
第11章 多線程編程 169
11.1 Java線程模型 169
11.1.1 線程優先級 170
11.1.2 同步 170
11.1.3 消息傳遞 171
11.1.4 Thread類和Runnable接口 171
11.2 主線程 171
11.3 創建線程 172
11.3.1 實現Runnable接口 172
11.3.2 擴展Thread類 174
11.3.3 選擇一種創建方式 175
11.4 創建多個線程 175
11.5 使用isAlive()和join()方法 176
11.6 線程優先級 178
11.7 同步 179
11.7.1 使用同步方法 179
11.7.2 synchronized語句 180
11.8 線程間通信 182
11.9 掛起、恢復與停止線程 187
11.10 獲取線程的狀態 189
11.11 使用工廠方法創建和啟動線程 189
11.12 使用多線程 190
第12章 枚舉、自動裝箱與注解 191
12.1 枚舉 191
12.1.1 枚舉的基礎知識 191
12.1.2 values()和valueOf()方法 193
12.1.3 Java枚舉是類類型 194
12.1.4 枚舉繼承自Enum類 195
12.1.5 另一個枚舉示例 196
12.2 類型封裝器 198
12.2.1 Character封裝器 198
12.2.2 Boolean封裝器 198
12.2.3 數值類型封裝器 198
12.3 自動裝箱 199
12.3.1 自動裝箱與方法 200
12.3.2 表達式中發生的自動裝箱/拆箱 201
12.3.3 布爾型和字符型數值的自動裝箱/
拆箱 202
12.3.4 自動裝箱/拆箱有助于防止錯誤 202
12.3.5 一些警告 203
12.4 注解 203
12.4.1 注解的基礎知識 203
12.4.2 指定保留策略 204
12.4.3 在運行時使用反射獲取注解 204
12.4.4 AnnotatedElement接口 208
12.4.5 使用默認值 208
12.4.6 標記注解 209
12.4.7 單成員注解 210
12.4.8 內置注解 211
12.5 類型注解 213
12.6 重復注解 216
第13章 I/O、帶資源的try語句以及其他
主題 219
13.1 I/O的基礎知識 219
13.1.1 流 219
13.1.2 字節流和字符流 219
13.1.3 預定義流 221
13.2 讀取控制臺輸入 221
13.2.1 讀取字符 222
13.2.2 讀取字符串 222
13.3 向控制臺寫輸出 223
13.4 PrintWriter類 224
13.5 讀/寫文件 225
13.6 自動關閉文件 229
13.7 transient和volatile修飾符 231
13.8 使用instanceof運算符 232
13.9 strictfp 233
13.10 本地方法 234
13.11 使用assert 234
13.12 靜態導入 236
13.13 通過this()調用重載的構造函數 238
13.14 緊湊API配置文件 239
第14章 泛型 241
14.1 什么是泛型 241
14.2 一個簡單的泛型示例 241
14.2.1 泛型只使用引用類型 244
14.2.2 基于不同類型參數的泛型類型
是不同的 244
14.2.3 泛型提升類型安全性的原理 244
14.3 帶兩個類型參數的泛型類 246
14.4 泛型類的一般形式 247
14.5 有界類型 247
14.6 使用通配符參數 249
14.7 創建泛型方法 255
14.8 泛型接口 257
14.9 原始類型與遺留代碼 259
14.10 泛型類層次 260
14.10.1 使用泛型超類 260
14.10.2 泛型子類 262
14.10.3 泛型層次中的運行時類型比較 263
14.10.4 強制轉換 265
14.10.5 重寫泛型類的方法 265
14.11 泛型的類型推斷 266
14.12 擦除 267
14.13 模糊性錯誤 268
14.14 使用泛型的一些限制 269
14.14.1 不能實例化類型參數 269
14.14.2 對靜態成員的一些限制 269
14.14.3 對泛型數組的一些限制 270
14.14.4 對泛型異常的限制 271
第15章 lambda表達式 273
15.1 lambda表達式簡介 273
15.1.1 lambda表達式的基礎知識 273
15.1.2 函數式接口 274
15.1.3 幾個lambda表達式示例 275
15.2 塊lambda表達式 277
15.3 泛型函數式接口 278
15.4 作為參數傳遞lambda表達式 280
15.5 lambda表達式與異常 282
15.6 lambda表達式和變量捕獲 282
15.7 方法引用 283
15.7.1 靜態方法的方法引用 283
15.7.2 實例方法的方法引用 284
15.7.3 泛型中的方法引用 287
15.8 構造函數引用 289
15.9 預定義的函數式接口 293
第16章 模塊 295
16.1 模塊基礎知識 295
16.1.1 簡單的模塊示例 295
16.1.2 編譯、運行第一個模塊示例 298
16.1.3 requires和exports 299
16.2 java.base和平臺模塊 299
16.3 舊代碼和未命名的模塊 300
16.4 導出到特定的模塊 300
16.5 使用requires transitive 301
16.6 使用服務 304
16.6.1 服務和服務提供程序的基礎知識 304
16.6.2 基于服務的關鍵字 305
16.6.3 基于模塊的服務示例 305
16.7 模塊圖 310
16.8 三個特殊的模塊特性 310
16.8.1 open模塊 310
16.8.2 opens語句 310
16.8.3 requires static 311
16.9 jlink工具和模塊JAR文件介紹 311
16.9.1 鏈接exploded directory中的文件 311
16.9.2 鏈接模塊化的JAR文件 311
16.9.3 JMOD文件 312
16.10 層與自動模塊簡述 312
16.11 小結 312
第Ⅱ部分 Java庫
第17章 字符串處理 315
17.1 String類的構造函數 315
17.2 字符串的長度 317
17.3 特殊的字符串操作 317
17.3.1 字符串字面值 317
17.3.2 字符串連接 317
17.3.3 字符串和其他數據類型的連接 318
17.3.4 字符串轉換和toString()方法 318
17.4 提取字符 319
17.4.1 charAt() 319
17.4.2 getChars() 319
17.4.3 getBytes() 320
17.4.4 toCharArray() 320
17.5 比較字符串 320
17.5.1 equals()和equalsIgnoreCase() 320
17.5.2 regionMatches() 321
17.5.3 startsWith()和endsWith() 321
17.5.4 equals()與== 321
17.5.5 compareTo() 322
17.6 查找字符串 323
17.7 修改字符串 324
17.7.1 substring() 324
17.7.2 concat() 325
17.7.3 replace() 325
17.7.4 trim() 325
17.8 使用valueOf()轉換數據 326
17.9 改變字符串中字符的大小寫 326
17.10 連接字符串 327
17.11 其他String方法 327
17.12 StringBuffer類 328
17.12.1 StringBuffer類的構造函數 328
17.12.2 length()與capacity() 329
17.12.3 ensureCapacity() 329
17.12.4 setLength() 329
17.12.5 charAt()與setCharAt() 329
17.12.6 getChars() 330
17.12.7 append() 330
17.12.8 insert() 330
17.12.9 reverse() 331
17.12.10 delete()與deleteCharAt() 331
17.12.11 replace() 332
17.12.12 substring() 332
17.12.13 其他StringBuffer方法 332
17.13 StringBuilder類 333
第18章 探究java.lang 335
18.1 基本類型封裝器 335
18.1.1 Number 336
18.1.2 Double與Float 336
18.1.3 理解isInfinite()與isNaN() 338
18.1.4 Byte、Short、Integer和Long 339
18.1.5 Character 346
18.1.6 對Unicode代碼點的附加支持 348
18.1.7 Boolean 349
18.2 Void類 349
18.3 Process類 349
18.4 Runtime類 350
18.4.1 內存管理 351
18.4.2 執行其他程序 352
18.5 Runtime.Version 353
18.6 ProcessBuilder類 353
18.7 System類 355
18.7.1 使用currentTimeMillis()計時程序的
執行 356
18.7.2 使用arraycopy()方法 357
18.7.3 環境屬性 357
18.8 System.Logger和System.Logger
Finder 358
18.9 Object類 358
18.10 使用clone()方法和Cloneable
接口 358
18.11 Class類 360
18.12 ClassLoader類 362
18.13 Math類 362
18.13.1 三角函數 362
18.13.2 指數函數 363
18.13.3 舍入函數 363
18.13.4 其他數學方法 364
18.14 StrictMath類 365
18.15 Compiler類 365
18.16 Thread類、ThreadGroup類和
Runnable接口 366
18.16.1 Runnable接口 366
18.16.2 Thread類 366
18.16.3 ThreadGroup類 368
18.17 ThreadLocal和InheritableThread
Local類 371
18.18 Package類 371
18.19 Module類 372
18.20 ModuleLayer類 372
18.21 RuntimePermission類 372
18.22 Throwable類 373
18.23 SecurityManager類 373
18.24 StackTraceElement類 373
18.25 StackWalker類和StackWalker.
StackFrame接口 373
18.26 Enum類 373
18.27 ClassValue類 374
18.28 CharSequence接口 374
18.29 Comparable接口 374
18.30 Appendable接口 375
18.31 Iterable接口 375
18.32 Readable接口 375
18.33 AutoCloseable接口 375
18.34 Thread.UncaughtExceptionHandler
接口 376
18.35 java.lang子包 376
18.35.1 java.lang.annotation 376
18.35.2 java.lang.instrument 376
18.35.3 java.lang.invoke 376
18.35.4 java.lang.module 376
18.35.5 java.lang.management 376
18.35.6 java.lang.ref 376
18.35.7 java.lang.reflect 377
第19章 java.util第1部分:集合框架 379
19.1 集合概述 380
19.2 集合接口 380
19.2.1 Collection接口 381
19.2.2 List接口 382
19.2.3 Set接口 384
19.2.4 SortedSet接口 384
19.2.5 NavigableSet接口 385
19.2.6 Queue接口 385
19.2.7 Deque接口 386
19.3 集合類 387
19.3.1 ArrayList類 388
19.3.2 LinkedList類 390
19.3.3 HashSet類 391
19.3.4 LinkedHashSet類 392
19.3.5 TreeSet類 392
19.3.6 PriorityQueue類 393
19.3.7 ArrayDeque類 394
19.3.8 EnumSet類 395
19.4 通過迭代器訪問集合 395
19.4.1 使用迭代器 396
19.4.2 使用for-each循環替代迭代器 398
19.5 Spliterator 398
19.6 在集合中存儲用戶定義的類 400
19.7 RandomAccess接口 401
19.8 使用映射 401
19.8.1 映射接口 402
19.8.2 映射類 406
19.9 比較器 409
19.10 集合算法 415
19.11 Arrays類 420
19.12 遺留的類和接口 423
19.12.1 Enumeration接口 424
19.12.2 Vector類 424
19.12.3 Stack類 427
19.12.4 Dictionary類 428
19.12.5 Hashtable類 429
19.12.6 Properties類 431
19.12.7 使用store()和load()方法 434
19.13 集合小結 435
第20章 java.util第2部分:更多實用
工具類 437
20.1 StringTokenizer類 437
20.2 BitSet類 438
20.3 Optional、OptionalDouble、
OptionalInt和OptionalLong 440
20.4 Date類 442
20.5 Calendar類 443
20.6 GregorianCalendar類 445
20.7 TimeZone類 446
20.8 SimpleTimeZone類 447
20.9 Locale類 448
20.10 Random類 449
20.11 Timer和TimerTask類 450
20.12 Currency類 452
20.13 Formatter類 453
20.13.1 Formatter類的構造函數 453
20.13.2 Formatter類的方法 453
20.13.3 格式化的基礎知識 454
20.13.4 格式化字符串和字符 455
20.13.5 格式化數字 455
20.13.6 格式化時間和日期 456
20.13.7 %n和%%說明符 458
20.13.8 指定最小字段寬度 458
20.13.9 指定精度 459
20.13.10 使用格式標志 460
20.13.11 對齊輸出 460
20.13.12 空格、 、0以及(
標志 461
20.13.13 逗號標志 462
20.13.14 #標志 462
20.13.15 大寫選項 462
20.13.16 使用參數索引 462
20.13.17 關閉Formatter對象 463
20.13.18 printf()方法 464
20.14 Scanner類 464
20.14.1 Scanner類的構造函數 464
20.14.2 掃描的基礎知識 465
20.14.3 一些Scanner示例 467
20.14.4 設置定界符 470
20.14.5 其他Scanner特性 471
20.15 ResourceBundle、ListResourceBundle
和PropertyResourceBundle類 472
20.16 其他實用工具類和接口 475
20.17 java.util子包 475
20.17.1 java.util.concurrent、java.util.concurrent.
atomic和java.util.concurrent.locks 476
20.17.2 java.util.function 476
20.17.3 java.util.jar 478
20.17.4 java.util.logging 478
20.17.5 java.util.prefs 478
20.17.6 java.util.regex 478
20.17.7 java.util.spi 478
20.17.8 java.util.stream 478
20.17.9 java.util.zip 478
第21章 輸入/輸出:探究java.io 479
21.1 I/O類和接口 479
21.2 File類 480
21.2.1 目錄 482
21.2.2 使用FilenameFilter接口 483
21.2.3 listFiles()方法 483
21.2.4 創建目錄 484
21.3 AutoCloseable、Closeable和
Flushable接口 484
21.4 I/O異常 484
21.5 關閉流的兩種方式 484
21.6 流類 485
21.7 字節流 486
21.7.1 InputStream類 486
21.7.2 OutputStream類 486
21.7.3 FileInputStream類 487
21.7.4 FileOutputStream類 488
21.7.5 ByteArrayInputStream類 490
21.7.6 ByteArrayOutputStream類 491
21.7.7 過濾的字節流 492
21.7.8 緩沖的字節流 492
21.7.9 SequenceInputStream類 495
21.7.10 PrintStream類 496
21.7.11 DataOutputStream和
DataInputStream類 498
21.7.12 RandomAccessFile類 499
21.8 字符流 500
21.8.1 Reader類 500
21.8.2 Writer類 501
21.8.3 FileReader類 501
21.8.4 FileWriter類 502
21.8.5 CharArrayReader類 503
21.8.6 CharArrayWriter類 504
21.8.7 BufferedReader類 505
21.8.8 BufferedWriter類 506
21.8.9 PushbackReader類 506
21.8.10 PrintWriter類 507
21.9 Console類 508
21.10 串行化 509
21.10.1 Serializable接口 509
21.10.2 Externalizable接口 509
21.10.3 ObjectOutput接口 509
21.10.4 ObjectOutputStream類 510
21.10.5 ObjectInput接口 510
21.10.6 ObjectInputStream類 511
21.10.7 串行化示例 512
21.11 流的優點 513
第22章 探究NIO 515
22.1 NIO類 515
22.2 NIO的基礎知識 515
22.2.1 緩沖區 515
22.2.2 通道 517
22.2.3 字符集和選擇器 518
22.3 NIO.2對NIO的增強 518
22.3.1 Path接口 518
22.3.2 Files類 519
22.3.3 Path接口 521
22.3.4 文件屬性接口 521
22.3.5 FileSystem、FileSystems和
FileStore類 522
22.4 使用NIO系統 522
22.4.1 為基于通道的I/O使用NIO 523
22.4.2 為基于流的I/O使用NIO 529
22.4.3 為路徑和文件系統操作使用NIO 531
第23章 聯網 539
23.1 聯網的基礎知識 539
23.2 聯網類和接口 540
23.3 InetAddress類 540
23.3.1 工廠方法 540
23.3.2 實例方法 541
23.4 Inet4Address類和Inet6Address類 541
23.5 TCP/IP客戶端套接字 542
23.6 URL類 544
23.7 URLConnection類 545
23.8 HttpURLConnection類 547
23.9 URI類 549
23.10 cookie 549
23.11 TCP/IP服務器套接字 549
23.12 數據報 549
23.12.1 DatagramSocket類 550
23.12.2 DatagramPacket類 550
23.12.3 數據報示例 551
第24章 事件處理 553
24.1 兩種事件處理機制 553
24.2 委托事件模型 553
24.2.1 事件 554
24.2.2 事件源 554
24.2.3 事件監聽器 554
24.3 事件類 554
24.3.1 ActionEvent類 555
24.3.2 AdjustmentEvent類 556
24.3.3 ComponentEvent類 556
24.3.4 ContainerEvent類 557
24.3.5 FocusEvent類 557
24.3.6 InputEvent類 558
24.3.7 ItemEvent類 558
24.4 KeyEvent類 559
24.4.1 MouseEvent類 559
24.4.2 MouseWheelEvent類 560
24.4.3 TextEvent類 561
24.4.4 WindowEvent類 561
24.5 事件源 562
24.6 事件監聽器接口 562
24.6.1 ActionListener接口 563
24.6.2 AdjustmentListener接口 563
24.6.3 ComponentListener接口 563
24.6.4 ContainerListener接口 563
24.6.5 FocusListener接口 563
24.6.6 ItemListener接口 563
24.6.7 KeyListener接口 564
24.6.8 MouseListener接口 564
24.6.9 MouseMotionListener接口 564
24.6.10 MouseWheelListener接口 564
24.6.11 TextListener接口 564
24.6.12 WindowFocusListener接口 564
24.6.13 WindowListener接口 564
24.7 使用委托事件模型 565
24.7.1 一些重要的GUI概念 565
24.7.2 處理鼠標事件 565
24.7.3 處理鍵盤事件 568
24.8 適配器類 571
24.9 內部類 572
第25章 AWT介紹:使用窗口、圖形和
文本 577
25.1 AWT類 577
25.2 窗口基本元素 579
25.2.1 Component類 579
25.2.2 Container類 579
25.2.3 Panel類 580
25.2.4 Window類 580
25.2.5 Frame類 580
25.2.6 Canvas類 580
25.3 使用框架窗口 580
25.3.1 設置窗口的尺寸 580
25.3.2 隱藏和顯示窗口 580
25.3.3 設置窗口的標題 581
25.3.4 關閉框架窗口 581
25.3.5 paint()方法 581
25.3.6 顯示字符串 581
25.3.7 設置前景色和背景色 581
25.3.8 請求重畫 582
25.3.9 創建基于框架的應用程序 583
25.4 使用圖形 583
25.4.1 繪制直線 583
25.4.2 繪制矩形 583
25.4.3 繪制橢圓和圓 584
25.4.4 繪制弧形 584
25.4.5 繪制多邊形 584
25.4.6 演示繪制方法 584
25.4.7 改變圖形的大小 586
25.5 使用顏色 587
25.5.1 Color類的方法 587
25.5.2 設置當前圖形的顏色 588
25.5.3 一個演示顏色的applet 588
25.6 設置繪圖模式 589
25.7 使用字體 590
25.7.1 確定可用字體 591
25.7.2 創建和選擇字體 592
25.7.3 獲取字體信息 594
25.8 使用FontMetrics管理文本輸出 595
第26章 使用AWT控件、布局管理器和
菜單 599
26.1 AWT控件的基礎知識 599
26.1.1 添加和移除控件 599
26.1.2 響應控件 600
26.1.3 HeadlessException異常 600
26.2 使用標簽 600
26.3 使用命令按鈕 601
26.4 使用復選框 604
26.5 使用復選框組 606
26.6 使用下拉列表 607
26.7 使用列表框 609
26.8 管理滾動條 611
26.9 使用TextField 613
26.10 使用TextArea 615
26.11 理解布局管理器 617
26.11.1 FlowLayout布局管理器 617
26.11.2 BorderLayout布局管理器 618
26.11.3 使用Insets 619
26.11.4 GridLayout布局管理器 620
26.11.5 CardLayout布局管理器 621
26.11.6 GridBagLayout布局管理器 623
26.12 菜單欄和菜單 627
26.13 對話框 630
26.14 關于重寫paint()方法 634