主要內(nèi)容
● 數(shù)據(jù)類型、變量、數(shù)組和運(yùn)算符
● 控制語句
● 類、對象和方法
● 方法重載和重寫
● 繼承
● 接口和包
● 異常處理
● 多線程編程
● 枚舉、自動(dòng)裝箱和注解
● I/O類
● 泛型
● lambda表達(dá)式
● 模塊
● 字符串處理
● 集合框架
● 聯(lián)網(wǎng)
● 事件處理
● AWT
● Swing和JavaFX
● 并發(fā)API
● 流API
● 正則表達(dá)式
● Java Bean
● servlet
《Java 9編程參考官方大全(第10版)》針對Java SE 9做了全面更新,介紹了如何開發(fā)、編譯、調(diào)試和運(yùn)行Java程序。暢銷書作家Herbert Schildt在本書中詳盡地講解了Java語言,包括Java的語法、關(guān)鍵字和基本編程原則,以及Java API庫的主要內(nèi)容,如I/O、集合框架、流庫或并發(fā)實(shí)用程序。另外,《Java 9編程參考官方大全(第10版)》還介紹了Swing、JavaFX、Java Bean和servlet,并通過大量真實(shí)案例展示了Java語言的應(yīng)用。本書對Java SE 9的新模塊特性也進(jìn)行了深入講解,*后還介紹了Java的新交互式編程工具JShell。
前 言
Java是當(dāng)今世界最重要、也是使用最廣泛的計(jì)算機(jī)語言之一。而且,在多年之前它就已經(jīng)擁有這一榮譽(yù)。與其他一些計(jì)算機(jī)語言隨著時(shí)間的流逝影響也逐漸減弱不同,Java隨著時(shí)間的推移反而變得更加強(qiáng)大。從首次發(fā)布開始,Java就躍到了Internet編程的前沿。后續(xù)的每一個(gè)版本都進(jìn)一步鞏固了這一地位。如今,Java依然是開發(fā)Web應(yīng)用的最佳選擇。Java是一門功能強(qiáng)大且通用的編程語言,適合于多種目的的開發(fā)。簡言之:在現(xiàn)實(shí)世界中,很多應(yīng)用都是使用Java開發(fā)的,掌握J(rèn)ava語言非常重要。
Java成功的一個(gè)關(guān)鍵原因在于它的敏捷性。自從最初的Java 1.0版發(fā)布以來,Java不斷地進(jìn)行完善以適應(yīng)編程環(huán)境和開發(fā)人員編程方式的變化。最重要的是,Java不僅僅是在跟隨潮流,更是在幫助創(chuàng)造潮流。Java能夠適應(yīng)計(jì)算機(jī)世界快速變化的能力,是它一直并且仍將如此成功的關(guān)鍵因素。
《Java編程參考官方大全》自從1996年首次出版以來,已經(jīng)經(jīng)歷了數(shù)次改版,每次改版都反映了Java的不斷演化進(jìn)程!禞ava 9編程參考官方大全(第10版)》已經(jīng)針對Java SE 9(JDK 9)進(jìn)行了升級。因?yàn)镴ava SE 9向Java語言添加了幾個(gè)新特性,所以《Java 9編程參考官方大全(第10版)》包含了大量新內(nèi)容。最重要的一個(gè)新增特性是模塊(module),通過該特性可以指定應(yīng)用程序中代碼間的關(guān)系和依賴性。模塊也會影響對元素的訪問。此外,模塊代表對Java語言最具深遠(yuǎn)意義的更改之一,其中添加了兩個(gè)新的語法元素和10個(gè)新關(guān)鍵字。模塊還對Java API庫產(chǎn)生了巨大影響,因?yàn)楝F(xiàn)在模塊由API庫中的包構(gòu)成。另外,為了支持模塊,新增了一些工具,對現(xiàn)有的工具也進(jìn)行了更新,還定義了新的文件格式。由于模塊是一個(gè)非常重要的新特性,因此《Java 9編程參考官方大全(第10版)》的第16章專門對其進(jìn)行了講解。
除模塊外,JDK 9中還新增了一些其他特性。其中最有趣的是JShell,該工具提供了一個(gè)交互式環(huán)境,開發(fā)人員不需要編寫完整的程序就可以方便地在其中體驗(yàn)代碼片段。不管是初學(xué)者還是有經(jīng)驗(yàn)的編程人員都將發(fā)現(xiàn)該工具非常有用!禞ava 9編程參考官方大全(第10版)》的附錄C對該工具進(jìn)行了介紹。與前幾版一樣,JDK 9也對Java語言及其API庫進(jìn)行了一些細(xì)小的更新和增強(qiáng)。因此,你在整《Java 9編程參考官方大全(第10版)》中都會看到這些更新內(nèi)容。最后要提到的一點(diǎn)是:Java SE 9中刪除了applet和applet API。因此,《Java 9編程參考官方大全(第10版)》不再詳細(xì)介紹它們,而僅在《Java 9編程參考官方大全(第10版)》的附錄D中對applet做了簡要介紹。
一本適合所有編程人員的書
《Java 9編程參考官方大全(第10版)》面向所有開發(fā)人員,不管是初學(xué)者還是有經(jīng)驗(yàn)的編程人員。初學(xué)者將從《Java 9編程參考官方大全(第10版)》中發(fā)現(xiàn)每個(gè)主題的詳細(xì)討論,以及許多特別有幫助的例子。而對Java更高級特性和庫的深入討論,將會吸引有經(jīng)驗(yàn)的編程人員。無論是對于初學(xué)者還是有經(jīng)驗(yàn)的編程人員,《Java 9編程參考官方大全(第10版)》都提供了持久的資源和方便實(shí)用的參考。
《Java 9編程參考官方大全(第10版)》內(nèi)容
《Java 9編程參考官方大全(第10版)》是對Java語言的全面指導(dǎo),描述了它的語法、關(guān)鍵字以及基本的編程原則,另外還介紹了Java API庫的重要部分!禞ava 9編程參考官方大全(第10版)》分為5部分,每部分關(guān)注Java開發(fā)環(huán)境的不同方面。
第Ⅰ部分是對Java語言的深入闡述。該部分從基礎(chǔ)知識開始講解,包括數(shù)據(jù)類型、運(yùn)算符、控制語句以及類等。然后介紹了繼承、包、接口、異常處理以及多線程,還介紹了注解、枚舉、自動(dòng)裝箱、泛型、I/O以及l(fā)ambda表達(dá)式等內(nèi)容。本部分最后一章闡述了模塊。模塊是Java SE 9中最重要的新增特性。
第Ⅱ部分介紹Java的標(biāo)準(zhǔn)API庫的關(guān)鍵內(nèi)容。本部分的主題包括字符串、I/O、網(wǎng)絡(luò)、標(biāo)準(zhǔn)實(shí)用工具、集合框架、AWT、事件處理、圖像、并發(fā)編程(包括Fork/Join框架)、正則表達(dá)式和新增的流庫。
第Ⅲ部分用三章內(nèi)容介紹Swing。
第IV部分用三章內(nèi)容介紹JavaFX。
第V部分包含兩章,這兩章展示了Java的實(shí)際應(yīng)用。本部分首先介紹Java Bean,然后介紹servlet。
《Java 9編程參考官方大全(第10版)》下載資源包可掃描封底二維碼獲得。
致 謝
在此我要特別感謝Patrick Naughton、Joe ONeil和Danny Coward。
Patrick Naughton是Java語言的創(chuàng)立者之一,他還參與編寫了《Java 9編程參考官方大全(第10版)》的第1版。《Java 9編程參考官方大全(第10版)》第21、23和27章的大部分材料最初都是由Patrick提供的。他的洞察力、專業(yè)知識和活力都對《Java 9編程參考官方大全(第10版)》的成功付梓貢獻(xiàn)極大。
在準(zhǔn)備《Java 9編程參考官方大全(第10版)》的第2版和第3版的過程中,Joe ONeil提供了原始素材,這些素材呈現(xiàn)在《Java 9編程參考官方大全(第10版)》的第30、32、37和38章中。Joe對我的數(shù)《Java 9編程參考官方大全(第10版)》都有幫助,并且他提供的幫助一直都是最高質(zhì)量的。
Danny Coward是《Java 9編程參考官方大全(第10版)》第10版的技術(shù)編輯。Danny對我的數(shù)《Java 9編程參考官方大全(第10版)》都有貢獻(xiàn),他的忠告、洞察力和建議都有巨大價(jià)值,對此表示感謝。
如何進(jìn)一步學(xué)習(xí)
《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年的時(shí)間里,他撰寫了大量關(guān)于編程的圖書。Herbert是Java語言的權(quán)威。他撰寫的編程書籍在世界范圍內(nèi)銷售了數(shù)百萬冊,并且已經(jīng)被翻譯成所有主要的非英語語言。他撰寫了大量Java方面的書籍,包括Java:A Beginners Guide、Herb Schildts Java Programming Cookbook、Introducing JavaFX 8 Programming和Swing:A Beginners Guide,還撰寫了許多關(guān)于C、C 和C#的圖書。盡管對計(jì)算機(jī)的所有方面都感興趣,但是他主要關(guān)注計(jì)算機(jī)語言。Schildt獲得了美國伊利諾伊大學(xué)的本科和研究生學(xué)位。他的個(gè)人網(wǎng)站是www.HerbSchildt.com。
目 錄
第Ⅰ部分 Java語言
第1章 Java的歷史和演變 3
1.1 Java的家世 3
1.1.1 現(xiàn)代編程語言的誕生:C語言 3
1.1.2 C :下一個(gè)階段 4
1.1.3 Java出現(xiàn)的時(shí)機(jī)已經(jīng)成熟 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的魔力:字節(jié)碼 7
1.5 不再推薦使用applet 7
1.6 servlet:服務(wù)器端的Java 8
1.7 Java的關(guān)鍵特性 8
1.7.1 簡單性 8
1.7.2 面向?qū)ο?8
1.7.3 健壯性 8
1.7.4 多線程 9
1.7.5 體系結(jié)構(gòu)中立 9
1.7.6 解釋執(zhí)行和高性能 9
1.7.7 分布式 9
1.7.8 動(dòng)態(tài)性 9
1.8 Java的演變歷程 9
1.9 Java SE 9 11
1.10 文化革新 12
第2章 Java綜述 13
2.1 面向?qū)ο缶幊?13
2.1.1 兩種范式 13
2.1.2 抽象 13
2.1.3 OOP三原則 14
2.2 第一個(gè)簡單程序 16
2.2.1 輸入程序 17
2.2.2 編譯程序 17
2.2.3 深入分析第一個(gè)示例程序 17
2.3 第二個(gè)簡短程序 19
2.4 兩種控制語句 20
2.4.1 if語句 20
2.4.2 for循環(huán) 21
2.5 使用代碼塊 22
2.6 詞匯問題 23
2.6.1 空白符 23
2.6.2 標(biāo)識符 23
2.6.3 字面值 23
2.6.4 注釋 23
2.6.5 分隔符 23
2.6.6 Java關(guān)鍵字 24
2.7 Java類庫 24
第3章 數(shù)據(jù)類型、變量和數(shù)組 25
3.1 Java是強(qiáng)類型化的語言 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 浮點(diǎn)型 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 浮點(diǎn)型字面值 30
3.7.3 布爾型字面值 30
3.7.4 字符型字面值 31
3.7.5 字符串字面值 31
3.8 變量 31
3.8.1 變量的聲明 31
3.8.2 動(dòng)態(tài)初始化 32
3.8.3 變量的作用域和生存期 32
3.9 類型轉(zhuǎn)換和強(qiáng)制類型轉(zhuǎn)換 34
3.9.1 Java的自動(dòng)類型轉(zhuǎn)換 34
3.9.2 強(qiáng)制轉(zhuǎn)換不兼容的類型 34
3.10 表達(dá)式中的自動(dòng)類型提升 35
3.11 數(shù)組 36
3.11.1 一維數(shù)組 36
3.11.2 多維數(shù)組 38
3.11.3 另一種數(shù)組聲明語法 41
3.12 關(guān)于字符串的一些說明 41
第4章 運(yùn)算符 43
4.1 算術(shù)運(yùn)算符 43
4.1.1 基本算術(shù)運(yùn)算符 43
4.1.2 求模運(yùn)算符 44
4.1.3 算術(shù)與賦值復(fù)合運(yùn)算符 44
4.1.4 自增與自減運(yùn)算符 45
4.2 位運(yùn)算符 46
4.2.1 位邏輯運(yùn)算符 47
4.2.2 左移 49
4.2.3 右移 50
4.2.4 無符號右移 51
4.2.5 位運(yùn)算符與賦值的組合 52
4.3 關(guān)系運(yùn)算符 52
4.4 布爾邏輯運(yùn)算符 53
4.5 賦值運(yùn)算符 54
4.6 ?運(yùn)算符 55
4.7 運(yùn)算符的優(yōu)先級 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循環(huán)的for-each版本 68
5.2.5 嵌套的循環(huán) 72
5.3 跳轉(zhuǎn)語句 72
5.3.1 使用break語句 72
5.3.2 使用continue語句 75
5.3.3 return語句 76
第6章 類 77
6.1 類的基礎(chǔ)知識 77
6.1.1 類的一般形式 77
6.1.2 一個(gè)簡單的類 78
6.2 聲明對象 79
6.3 為對象引用變量賦值 80
6.4 方法 81
6.4.1 為Box類添加方法 81
6.4.2 返回值 83
6.4.3 添加帶參數(shù)的方法 84
6.5 構(gòu)造函數(shù) 85
6.6 this關(guān)鍵字 87
6.7 垃圾回收 88
6.8 堆棧類 88
第7章 方法和類的深入分析 91
7.1 重載方法 91
7.2 將對象用作參數(shù) 94
7.3 實(shí)參傳遞的深入分析 96
7.4 返回對象 97
7.5 遞歸 98
7.6 訪問控制 100
7.7 理解static 102
7.8 final介紹 104
7.9 重新審視數(shù)組 104
7.10 嵌套類和內(nèi)部類 105
7.11 String類介紹 107
7.12 使用命令行參數(shù) 109
7.13 varargs:可變長度實(shí)參 110
7.13.1 重載varargs方法 112
7.13.2 varargs方法與模糊性 113
第8章 繼承 115
8.1 繼承的基礎(chǔ)知識 115
8.1.1 成員訪問與繼承 116
8.1.2 一個(gè)更實(shí)際的例子 117
8.1.3 超類變量可以引用子類對象 118
8.2 使用super關(guān)鍵字 119
8.2.1 使用super調(diào)用超類的構(gòu)造函數(shù) 119
8.2.2 super的另一種用法 122
8.3 創(chuàng)建多級繼承層次 123
8.4 構(gòu)造函數(shù)的執(zhí)行時(shí)機(jī) 125
8.5 方法重寫 126
8.6 動(dòng)態(tài)方法調(diào)度 128
8.6.1 重寫方法的目的 129
8.6.2 應(yīng)用方法重寫 129
8.7 使用抽象類 130
8.8 在繼承中使用final關(guān)鍵字 132
8.8.1 使用final關(guān)鍵字阻止重寫 132
8.8.2 使用final關(guān)鍵字阻止繼承 133
8.9 Object類 133
第9章 包和接口 135
9.1 包 135
9.1.1 定義包 135
9.1.2 包查找與CLASSPATH 136
9.1.3 一個(gè)簡短的包示例 136
9.2 包和成員訪問 137
9.3 導(dǎo)入包 140
9.4 接口 141
9.4.1 定義接口 141
9.4.2 實(shí)現(xiàn)接口 142
9.4.3 嵌套接口 144
9.4.4 應(yīng)用接口 144
9.4.5 接口中的變量 147
9.4.6 接口可以擴(kuò)展 148
9.5 默認(rèn)接口方法 149
9.5.1 默認(rèn)方法的基礎(chǔ)知識 149
9.5.2 一個(gè)更加實(shí)用的例子 151
9.5.3 多級繼承的問題 151
9.6 在接口中使用靜態(tài)方法 152
9.7 私有接口方法 152
9.8 關(guān)于包和接口的最后說明 153
第10章 異常處理 155
10.1 異常處理的基礎(chǔ)知識 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的內(nèi)置異常 164
10.11 創(chuàng)建自己的異常子類 165
10.12 鏈?zhǔn)疆惓?166
10.13 其他三個(gè)異常特性 167
10.14 使用異常 168
第11章 多線程編程 169
11.1 Java線程模型 169
11.1.1 線程優(yōu)先級 170
11.1.2 同步 170
11.1.3 消息傳遞 171
11.1.4 Thread類和Runnable接口 171
11.2 主線程 171
11.3 創(chuàng)建線程 172
11.3.1 實(shí)現(xiàn)Runnable接口 172
11.3.2 擴(kuò)展Thread類 174
11.3.3 選擇一種創(chuàng)建方式 175
11.4 創(chuàng)建多個(gè)線程 175
11.5 使用isAlive()和join()方法 176
11.6 線程優(yōu)先級 178
11.7 同步 179
11.7.1 使用同步方法 179
11.7.2 synchronized語句 180
11.8 線程間通信 182
11.9 掛起、恢復(fù)與停止線程 187
11.10 獲取線程的狀態(tài) 189
11.11 使用工廠方法創(chuàng)建和啟動(dòng)線程 189
11.12 使用多線程 190
第12章 枚舉、自動(dòng)裝箱與注解 191
12.1 枚舉 191
12.1.1 枚舉的基礎(chǔ)知識 191
12.1.2 values()和valueOf()方法 193
12.1.3 Java枚舉是類類型 194
12.1.4 枚舉繼承自Enum類 195
12.1.5 另一個(gè)枚舉示例 196
12.2 類型封裝器 198
12.2.1 Character封裝器 198
12.2.2 Boolean封裝器 198
12.2.3 數(shù)值類型封裝器 198
12.3 自動(dòng)裝箱 199
12.3.1 自動(dòng)裝箱與方法 200
12.3.2 表達(dá)式中發(fā)生的自動(dòng)裝箱/拆箱 201
12.3.3 布爾型和字符型數(shù)值的自動(dòng)裝箱/
拆箱 202
12.3.4 自動(dòng)裝箱/拆箱有助于防止錯(cuò)誤 202
12.3.5 一些警告 203
12.4 注解 203
12.4.1 注解的基礎(chǔ)知識 203
12.4.2 指定保留策略 204
12.4.3 在運(yùn)行時(shí)使用反射獲取注解 204
12.4.4 AnnotatedElement接口 208
12.4.5 使用默認(rèn)值 208
12.4.6 標(biāo)記注解 209
12.4.7 單成員注解 210
12.4.8 內(nèi)置注解 211
12.5 類型注解 213
12.6 重復(fù)注解 216
第13章 I/O、帶資源的try語句以及其他
主題 219
13.1 I/O的基礎(chǔ)知識 219
13.1.1 流 219
13.1.2 字節(jié)流和字符流 219
13.1.3 預(yù)定義流 221
13.2 讀取控制臺輸入 221
13.2.1 讀取字符 222
13.2.2 讀取字符串 222
13.3 向控制臺寫輸出 223
13.4 PrintWriter類 224
13.5 讀/寫文件 225
13.6 自動(dòng)關(guān)閉文件 229
13.7 transient和volatile修飾符 231
13.8 使用instanceof運(yùn)算符 232
13.9 strictfp 233
13.10 本地方法 234
13.11 使用assert 234
13.12 靜態(tài)導(dǎo)入 236
13.13 通過this()調(diào)用重載的構(gòu)造函數(shù) 238
13.14 緊湊API配置文件 239
第14章 泛型 241
14.1 什么是泛型 241
14.2 一個(gè)簡單的泛型示例 241
14.2.1 泛型只使用引用類型 244
14.2.2 基于不同類型參數(shù)的泛型類型
是不同的 244
14.2.3 泛型提升類型安全性的原理 244
14.3 帶兩個(gè)類型參數(shù)的泛型類 246
14.4 泛型類的一般形式 247
14.5 有界類型 247
14.6 使用通配符參數(shù) 249
14.7 創(chuàng)建泛型方法 255
14.8 泛型接口 257
14.9 原始類型與遺留代碼 259
14.10 泛型類層次 260
14.10.1 使用泛型超類 260
14.10.2 泛型子類 262
14.10.3 泛型層次中的運(yùn)行時(shí)類型比較 263
14.10.4 強(qiáng)制轉(zhuǎn)換 265
14.10.5 重寫泛型類的方法 265
14.11 泛型的類型推斷 266
14.12 擦除 267
14.13 模糊性錯(cuò)誤 268
14.14 使用泛型的一些限制 269
14.14.1 不能實(shí)例化類型參數(shù) 269
14.14.2 對靜態(tài)成員的一些限制 269
14.14.3 對泛型數(shù)組的一些限制 270
14.14.4 對泛型異常的限制 271
第15章 lambda表達(dá)式 273
15.1 lambda表達(dá)式簡介 273
15.1.1 lambda表達(dá)式的基礎(chǔ)知識 273
15.1.2 函數(shù)式接口 274
15.1.3 幾個(gè)lambda表達(dá)式示例 275
15.2 塊lambda表達(dá)式 277
15.3 泛型函數(shù)式接口 278
15.4 作為參數(shù)傳遞lambda表達(dá)式 280
15.5 lambda表達(dá)式與異常 282
15.6 lambda表達(dá)式和變量捕獲 282
15.7 方法引用 283
15.7.1 靜態(tài)方法的方法引用 283
15.7.2 實(shí)例方法的方法引用 284
15.7.3 泛型中的方法引用 287
15.8 構(gòu)造函數(shù)引用 289
15.9 預(yù)定義的函數(shù)式接口 293
第16章 模塊 295
16.1 模塊基礎(chǔ)知識 295
16.1.1 簡單的模塊示例 295
16.1.2 編譯、運(yùn)行第一個(gè)模塊示例 298
16.1.3 requires和exports 299
16.2 java.base和平臺模塊 299
16.3 舊代碼和未命名的模塊 300
16.4 導(dǎo)出到特定的模塊 300
16.5 使用requires transitive 301
16.6 使用服務(wù) 304
16.6.1 服務(wù)和服務(wù)提供程序的基礎(chǔ)知識 304
16.6.2 基于服務(wù)的關(guān)鍵字 305
16.6.3 基于模塊的服務(wù)示例 305
16.7 模塊圖 310
16.8 三個(gè)特殊的模塊特性 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 層與自動(dòng)模塊簡述 312
16.11 小結(jié) 312
第Ⅱ部分 Java庫
第17章 字符串處理 315
17.1 String類的構(gòu)造函數(shù) 315
17.2 字符串的長度 317
17.3 特殊的字符串操作 317
17.3.1 字符串字面值 317
17.3.2 字符串連接 317
17.3.3 字符串和其他數(shù)據(jù)類型的連接 318
17.3.4 字符串轉(zhuǎn)換和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()轉(zhuǎn)換數(shù)據(jù) 326
17.9 改變字符串中字符的大小寫 326
17.10 連接字符串 327
17.11 其他String方法 327
17.12 StringBuffer類 328
17.12.1 StringBuffer類的構(gòu)造函數(shù) 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代碼點(diǎn)的附加支持 348
18.1.7 Boolean 349
18.2 Void類 349
18.3 Process類 349
18.4 Runtime類 350
18.4.1 內(nèi)存管理 351
18.4.2 執(zhí)行其他程序 352
18.5 Runtime.Version 353
18.6 ProcessBuilder類 353
18.7 System類 355
18.7.1 使用currentTimeMillis()計(jì)時(shí)程序的
執(zhí)行 356
18.7.2 使用arraycopy()方法 357
18.7.3 環(huán)境屬性 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 三角函數(shù) 362
18.13.2 指數(shù)函數(shù) 363
18.13.3 舍入函數(shù) 363
18.13.4 其他數(shù)學(xué)方法 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循環(huán)替代迭代器 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 集合小結(jié) 435
第20章 java.util第2部分:更多實(shí)用
工具類 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類的構(gòu)造函數(shù) 453
20.13.2 Formatter類的方法 453
20.13.3 格式化的基礎(chǔ)知識 454
20.13.4 格式化字符串和字符 455
20.13.5 格式化數(shù)字 455
20.13.6 格式化時(shí)間和日期 456
20.13.7 %n和%%說明符 458
20.13.8 指定最小字段寬度 458
20.13.9 指定精度 459
20.13.10 使用格式標(biāo)志 460
20.13.11 對齊輸出 460
20.13.12 空格、 、0以及(
標(biāo)志 461
20.13.13 逗號標(biāo)志 462
20.13.14 #標(biāo)志 462
20.13.15 大寫選項(xiàng) 462
20.13.16 使用參數(shù)索引 462
20.13.17 關(guān)閉Formatter對象 463
20.13.18 printf()方法 464
20.14 Scanner類 464
20.14.1 Scanner類的構(gòu)造函數(shù) 464
20.14.2 掃描的基礎(chǔ)知識 465
20.14.3 一些Scanner示例 467
20.14.4 設(shè)置定界符 470
20.14.5 其他Scanner特性 471
20.15 ResourceBundle、ListResourceBundle
和PropertyResourceBundle類 472
20.16 其他實(shí)用工具類和接口 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 創(chuàng)建目錄 484
21.3 AutoCloseable、Closeable和
Flushable接口 484
21.4 I/O異常 484
21.5 關(guān)閉流的兩種方式 484
21.6 流類 485
21.7 字節(jié)流 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 過濾的字節(jié)流 492
21.7.8 緩沖的字節(jié)流 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 流的優(yōu)點(diǎn) 513
第22章 探究NIO 515
22.1 NIO類 515
22.2 NIO的基礎(chǔ)知識 515
22.2.1 緩沖區(qū) 515
22.2.2 通道 517
22.2.3 字符集和選擇器 518
22.3 NIO.2對NIO的增強(qiáng) 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系統(tǒng) 522
22.4.1 為基于通道的I/O使用NIO 523
22.4.2 為基于流的I/O使用NIO 529
22.4.3 為路徑和文件系統(tǒng)操作使用NIO 531
第23章 聯(lián)網(wǎng) 539
23.1 聯(lián)網(wǎng)的基礎(chǔ)知識 539
23.2 聯(lián)網(wǎng)類和接口 540
23.3 InetAddress類 540
23.3.1 工廠方法 540
23.3.2 實(shí)例方法 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服務(wù)器套接字 549
23.12 數(shù)據(jù)報(bào) 549
23.12.1 DatagramSocket類 550
23.12.2 DatagramPacket類 550
23.12.3 數(shù)據(jù)報(bào)示例 551
第24章 事件處理 553
24.1 兩種事件處理機(jī)制 553
24.2 委托事件模型 553
24.2.1 事件 554
24.2.2 事件源 554
24.2.3 事件監(jiān)聽器 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 事件監(jiān)聽器接口 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 處理鼠標(biāo)事件 565
24.7.3 處理鍵盤事件 568
24.8 適配器類 571
24.9 內(nèi)部類 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 設(shè)置窗口的尺寸 580
25.3.2 隱藏和顯示窗口 580
25.3.3 設(shè)置窗口的標(biāo)題 581
25.3.4 關(guān)閉框架窗口 581
25.3.5 paint()方法 581
25.3.6 顯示字符串 581
25.3.7 設(shè)置前景色和背景色 581
25.3.8 請求重畫 582
25.3.9 創(chuàng)建基于框架的應(yīng)用程序 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 設(shè)置當(dāng)前圖形的顏色 588
25.5.3 一個(gè)演示顏色的applet 588
25.6 設(shè)置繪圖模式 589
25.7 使用字體 590
25.7.1 確定可用字體 591
25.7.2 創(chuàng)建和選擇字體 592
25.7.3 獲取字體信息 594
25.8 使用FontMetrics管理文本輸出 595
第26章 使用AWT控件、布局管理器和
菜單 599
26.1 AWT控件的基礎(chǔ)知識 599
26.1.1 添加和移除控件 599
26.1.2 響應(yīng)控件 600
26.1.3 HeadlessException異常 600
26.2 使用標(biāo)簽 600
26.3 使用命令按鈕 601
26.4 使用復(fù)選框 604
26.5 使用復(fù)選框組 606
26.6 使用下拉列表 607
26.7 使用列表框 609
26.8 管理滾動(dòng)條 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 關(guān)于重寫paint()方法 634