本書專門介紹Java編程,主要內(nèi)容包括:Java基礎(chǔ)知識(shí)、Java語法基礎(chǔ)、條件語句、循環(huán)語句、數(shù)組、Java面向?qū)ο缶幊、集合、常用的類庫、泛型、異常處理、I/O文件處理和流程、AWT、Swing、JavaFX基礎(chǔ)知識(shí)、UI組件、事件處理程序、基于JavaFX框架的Web和多媒體開發(fā)、數(shù)據(jù)庫編程、網(wǎng)絡(luò)與通信編程、多線程和進(jìn)程等。本書適合Java開發(fā)人員閱讀,也適合計(jì)算機(jī)相關(guān)專業(yè)的師生閱讀。
Java是一門神奇的編程語言,一直雄踞各編程語言排行榜的榜首,用它開發(fā)的軟件遍布各行各業(yè)。本書作為一本Java的入門書籍,其豐富的配套資源讓一樣的編程語言有不一樣的學(xué)法: ·770 個(gè)實(shí)例,使讀者有更多的實(shí)踐演練機(jī)會(huì) ·300 多個(gè)拓展實(shí)例,真正地做到舉一反三 ·2000 多分鐘的視頻講解,幫助讀者降低學(xué)習(xí)難度 ·100 多個(gè)技術(shù)解惑 ,破解學(xué)習(xí)的難點(diǎn) 與市面上同類圖書相比,我們這本書根據(jù)讀者的學(xué)習(xí)習(xí)慣、結(jié)合程序設(shè)計(jì)專業(yè)的教學(xué)特點(diǎn),以技術(shù)講解 范例演練技術(shù)解惑貫穿全書,幫助零基礎(chǔ)讀者全面掌握J(rèn)ava 語言開發(fā)。 ● 技術(shù)講解:詳細(xì)介紹Java 9、Java 10 和Java 11 的新特性和各個(gè)知識(shí)點(diǎn) ● 范例演練:1070 多個(gè)實(shí)例, 讓讀者在實(shí)踐中學(xué)會(huì)Java 語言 ● 技術(shù)解惑:把容易混淆的概念單獨(dú)講解和剖析,幫助讀者繞過學(xué)習(xí)中的陷阱 QQ 群 網(wǎng)站論壇實(shí)現(xiàn)教學(xué)互動(dòng),形成互幫互學(xué)的朋友圈 ● 網(wǎng)站論壇:作者答疑/學(xué)習(xí)輔導(dǎo)/ PPT 資源下載 ● 答疑QQ 群:疑惑快速解答/和作者直接交流 另外,我們這本書在內(nèi)容和服務(wù)上,有以下優(yōu)勢: 1.提供100個(gè)提高程序性能的技巧,讓讀者少走彎路; 2.增加課后練習(xí)模塊 ,鞏固讀者所學(xué)內(nèi)容; 3.1本書的內(nèi)容,3本書的容量,讓讀者買得值,學(xué)得會(huì); 4.按照J(rèn)ava10新版本寫作,讓讀者真正和現(xiàn)實(shí)項(xiàng)目結(jié)合起來; 5.全視頻講解,不會(huì)的地方看視頻更容易; 6.不定期開設(shè)輔導(dǎo)讀者的視頻課,學(xué)習(xí)更高效。
扶松柏,上海大學(xué)計(jì)算機(jī)科學(xué)技術(shù)學(xué)院碩士,通信工程博士,精通Java、C語言、C 程序開發(fā),擅長底層技術(shù)和應(yīng)用程序的結(jié)合。具有豐富的Java開發(fā)經(jīng)驗(yàn)和編程心得。
目 錄
第 1章 計(jì)算機(jī)基礎(chǔ)和Java開發(fā)入門 1
1.1 計(jì)算機(jī)基礎(chǔ) 2
1.1.1 中央處理器 2
1.1.2 比特和字節(jié) 2
1.1.3 二進(jìn)制 3
1.1.4 編碼格式 3
1.2 初識(shí)Java 4
1.2.1 何謂Java 4
1.2.2 Java的特點(diǎn) 5
1.2.3 Java的地位 5
1.3 技術(shù)解惑 6
1.3.1 對(duì)初學(xué)者的建議 6
1.3.2 理解Java的垃圾回收
機(jī)制 6
1.3.3 充分利用Java API文檔 7
1.4 課后練習(xí) 7
第 2章 第 一段Java程序 8
2.1 搭建Java開發(fā)環(huán)境 9
2.1.1 安裝JDK 9
2.1.2 配置開發(fā)環(huán)境
Windows 7 11
2.1.3 配置開發(fā)環(huán)境
Windows 10 11
2.2 編寫第 一段Java程序 13
2.2.1 第 一段Java代碼 13
2.2.2 關(guān)鍵字 13
2.2.3 標(biāo)識(shí)符 14
2.2.4 注釋 14
2.2.5 main()方法 15
2.2.6 控制臺(tái)的輸入和輸出 15
2.3 編譯并運(yùn)行Java程序 15
2.3.1 編譯Java程序 15
2.3.2 運(yùn)行Java程序 16
2.3.3 Java 11新特性:新的程序
運(yùn)行方式 16
2.4 使用IDE工具Eclipse 17
2.4.1 Eclipse 17
2.4.2 獲得并安裝Eclipse 17
2.4.3 新建一個(gè)Eclipse項(xiàng)目 20
2.4.4 編譯并運(yùn)行Eclipse項(xiàng)目 23
2.4.5 使用Eclipse打開一個(gè)
Java項(xiàng)目 24
2.5 Java的運(yùn)行機(jī)制 25
2.5.1 編譯型/解釋型語言的
運(yùn)行機(jī)制 25
2.5.2 Java程序則要先編譯、
后運(yùn)行 25
2.6 技術(shù)解惑 26
2.6.1 遵循Java源文件的
命名規(guī)則 26
2.6.2 忽視系統(tǒng)文件的擴(kuò)展名 26
2.6.3 環(huán)境變量的問題 26
2.6.4 大小寫的問題 27
2.6.5 main()方法的問題 27
2.6.6 注意空格問題 27
2.6.7 到底用不用IDE工具 27
2.6.8 區(qū)分JRE和JDK 28
2.7 課后練習(xí) 28
第3章 Java語法基礎(chǔ) 29
3.1 常量和變量 30
3.1.1 常量 30
3.1.2 變量 31
3.2 數(shù)據(jù)類型 33
3.2.1 為什么要使用數(shù)據(jù)類型 33
3.2.2 簡單數(shù)據(jù)類型的
取值范圍 34
3.2.3 字符型 34
3.2.4 整型 35
3.2.5 浮點(diǎn)型 36
3.2.6 布爾型 37
3.3 運(yùn)算符 38
3.3.1 算術(shù)運(yùn)算符 38
3.3.2 關(guān)系運(yùn)算符和邏輯
運(yùn)算符 41
3.3.3 位邏輯運(yùn)算符 42
3.3.4 條件運(yùn)算符 43
3.3.5 賦值運(yùn)算符 44
3.3.6 運(yùn)算符的優(yōu)先級(jí) 45
3.4 字符串 46
3.4.1 字符串的初始化 46
3.4.2 String類 47
3.4.3 StringBuffer類 49
3.5 類型轉(zhuǎn)換 50
3.5.1 自動(dòng)類型轉(zhuǎn)換 50
3.5.2 強(qiáng)制類型轉(zhuǎn)換 51
3.6 Java 11新特性:新增的
String函數(shù) 51
3.7 技術(shù)解惑 54
3.7.1 定義常量時(shí)的注意事項(xiàng) 54
3.7.2 char類型中單引號(hào)的
意義 54
3.7.3 正無窮和負(fù)無窮的
問題 55
3.7.4 移位運(yùn)算符的限制 55
3.8 課后練習(xí) 55
第4章 條件語句 56
4.1 if語句詳解 57
4.1.1 if語句 57
4.1.2 if語句的延伸 58
4.1.3 有多個(gè)條件判斷的if
語句 59
4.2 switch語句詳解 60
4.2.1 switch語句的形式 61
4.2.2 無break的情況 62
4.2.3 case語句后沒有
執(zhí)行語句 62
4.2.4 default可以不在末尾 63
4.3 條件語句演練 64
4.3.1 正確使用switch語句 64
4.3.2 正確使用if語句 64
4.3.3 switch語句的執(zhí)行順序 65
4.4 技術(shù)解惑 66
4.4.1 if…else語句的意義 66
4.4.2 使用switch語句時(shí)的
幾個(gè)注意事項(xiàng) 67
4.4.3 switch語句和if…else if
語句的選擇 68
4.5 課后練習(xí) 68
第5章 循環(huán)語句 69
5.1 循環(huán)語句 70
5.1.1 for循環(huán) 70
5.1.2 while循環(huán)語句 72
5.1.3 do…while循環(huán)語句 73
5.2 跳轉(zhuǎn)語句 74
5.2.1 break語句的應(yīng)用 74
5.2.2 return語句的應(yīng)用 76
5.2.3 continue語句 77
5.3 技術(shù)解惑 77
5.3.1 使用for循環(huán)的技巧 77
5.3.2 跳轉(zhuǎn)語句的選擇技巧 78
5.4 課后練習(xí) 79
第6章 數(shù)組 80
6.1 簡單的一維數(shù)組 81
6.1.1 聲明一維數(shù)組 81
6.1.2 創(chuàng)建一維數(shù)組 81
6.1.3 初始化一維數(shù)組 82
6.2 二維數(shù)組 83
6.2.1 聲明二維數(shù)組 83
6.2.2 創(chuàng)建二維數(shù)組 83
6.2.3 初始化二維數(shù)組 84
6.3 三維數(shù)組 85
6.3.1 聲明三維數(shù)組 86
6.3.2 創(chuàng)建三維數(shù)組的方法 86
6.3.3 初始化三維數(shù)組 86
6.4 操作數(shù)組 87
6.4.1 復(fù)制數(shù)組 87
6.4.2 比較數(shù)組 87
6.4.3 排序數(shù)組 88
6.4.4 搜索數(shù)組中的元素 89
6.4.5 填充數(shù)組 89
6.4.6 遍歷數(shù)組 90
6.5 技術(shù)解惑 90
6.5.1 動(dòng)態(tài)初始化數(shù)組的規(guī)則 90
6.5.2 引用類型 91
6.5.3 數(shù)組的初始化 91
6.6 課后練習(xí) 91
第7章 Java的面向?qū)ο螅ㄉ希?3
7.1 面向?qū)ο蟮幕A(chǔ) 94
7.1.1 面向?qū)ο蟮亩x 94
7.1.2 Java的面向?qū)ο缶幊獭?4
7.1.3 一切皆為對(duì)象 94
7.1.4 Java面向?qū)ο蟮膸讉(gè)
核心概念 95
7.2 創(chuàng)建類 96
7.2.1 定義類 96
7.2.2 定義屬性 97
7.2.3 定義方法 97
7.2.4 定義構(gòu)造器 98
7.3 修飾符 98
7.3.1 public修飾符 98
7.3.2 private修飾符 99
7.3.3 protected修飾符 100
7.3.4 其他修飾符 100
7.4 方法詳解 101
7.4.1 方法與函數(shù)的關(guān)系 101
7.4.2 傳遞方法參數(shù) 102
7.4.3 長度可變的方法 102
7.4.4 不使用void關(guān)鍵字
構(gòu)造方法名 103
7.4.5 遞歸方法 104
7.5 使用this 105
7.6 使用類和對(duì)象 105
7.6.1 創(chuàng)建和使用對(duì)象 106
7.6.2 使用靜態(tài)變量和
靜態(tài)方法 106
7.7 抽象類和抽象方法 107
7.7.1 抽象類和抽象方法的
基礎(chǔ) 107
7.7.2 抽象類必須有一個(gè)
抽象方法 108
7.7.3 抽象類的作用 109
7.8 軟件包 110
7.8.1 軟件包的定義 110
7.8.2 在Eclipse中定義
軟件包 110
7.8.3 在程序里插入軟件包 111
7.9 技術(shù)解惑 112
7.9.1 在Java中傳遞引用類型的
實(shí)質(zhì) 112
7.9.2 掌握this的好處 113
7.9.3 推出抽象方法的原因 114
7.9.4 使用抽象類的時(shí)機(jī) 114
7.9.5 static修飾的作用 115
7.9.6 數(shù)組內(nèi)是同一類型的
數(shù)據(jù) 115
7.10 課后練習(xí) 115
第8章 Java的面向?qū)ο螅ㄖ校?16
8.1 類的繼承 117
8.1.1 繼承的定義 117
8.1.2 父類和子類 117
8.1.3 調(diào)用父類的構(gòu)造方法 118
8.1.4 訪問父類的屬性和方法 119
8.1.5 多重繼承 120
8.1.6 重寫父類的方法 121
8.2 重寫和重載 122
8.2.1 重寫 122
8.2.2 重載 124
8.3 隱藏和封裝 125
8.3.1 Java中的封裝 125
8.3.2 訪問控制符 125
8.3.3 Java中的包 127
8.3.4 import 129
8.4 接口 129
8.4.1 定義接口 129
8.4.2 接口里的常量和方法 130
8.4.3 引用接口 132
8.4.4 接口間的繼承 134
8.4.5 接口的私有方法 134
8.5 技術(shù)解惑 137
8.5.1 重寫方法的注意事項(xiàng) 137
8.5.2 重寫和重載的區(qū)別 138
8.5.3 舉例理解類的意義 138
8.5.4 Java包的一些規(guī)則 138
8.5.5 探討package和import
機(jī)制 138
8.5.6 接口編程的機(jī)理 139
8.5.7 接口和抽象類的區(qū)別和
聯(lián)系 140
8.6 課后練習(xí) 141
第9章 Java的面向?qū)ο螅ㄏ拢?42
9.1 構(gòu)造器詳解 143
9.1.1 初始化構(gòu)造器 143
9.1.2 構(gòu)造器重載 143
9.1.3 調(diào)用父類構(gòu)造器 144
9.2 多態(tài) 145
9.2.1 多態(tài)的定義 145
9.2.2 演示Java中的多態(tài) 147
9.2.3 使用instanceof運(yùn)算符 148
9.3 引用類型 149
9.3.1 4種引用類型 150
9.3.2 引用變量的強(qiáng)制
類型轉(zhuǎn)換 151
9.4 組合 152
9.5 初始化塊 154
9.5.1 初始化塊概述 154
9.5.2 靜態(tài)初始化塊 155
9.6 包裝類 156
9.7 final修飾符 157
9.7.1 用final修飾變量 158
9.7.2 final方法 159
9.8 內(nèi)部類 160
9.8.1 內(nèi)部類概述 160
9.8.2 非靜態(tài)內(nèi)部類 160
9.8.3 成員內(nèi)部類 162
9.8.4 局部內(nèi)部類 162
9.8.5 靜態(tài)內(nèi)部類 163
9.9 匿名類 163
9.9.1 定義匿名類 164
9.9.2 匿名內(nèi)部類 164
9.9.3 匿名內(nèi)部類使用final
形參 165
9.10 枚舉類 166
9.10.1 枚舉類的方法 166
9.10.2 模擬枚舉類 167
9.10.3 枚舉類型 168
9.11 Java 11新特性:嵌套訪問
控制 170
9.12 技術(shù)解惑 172
9.12.1 構(gòu)造器和方法的區(qū)別 172
9.12.2 this在構(gòu)造器中的
作用 173
9.12.3 子類構(gòu)造器調(diào)用父類
構(gòu)造器的情況 173
9.12.4 強(qiáng)制類型轉(zhuǎn)換的
局限性 174
9.12.5 繼承和組合的選擇 174
9.12.6 發(fā)生異常的原因 174
9.12.7 用final修飾基本類型和
引用類型變量之間的
區(qū)別 174
9.12.8 類的4種權(quán)限 174
9.12.9 手工實(shí)現(xiàn)枚舉類的
缺點(diǎn) 175
9.13 課后練習(xí) 175
第 10章 集合 176
10.1 Java中的集合類 177
10.2 Collection接口和Iterator
接口 178
10.2.1 Collection接口概述 178
10.2.2 Iterator接口概述 179
10.2.3 使用Collection接口中的
方法來操作集合里的
元素 179
10.3 Set接口 180
10.3.1 Set接口概述 180
10.3.2 使用HashSet 183
10.3.3 使用TreeSet類 184
10.3.4 使用EnumSet類 186
10.4 List接口 188
10.4.1 List接口概述 188
10.4.2 根據(jù)索引操作集合內(nèi)的
元素 190
10.4.3 使用ArrayList和
Vector類 191
10.5 Map接口 192
10.5.1 Map接口中的方法 192
10.5.2 Map接口中的
接口和類 193
10.5.3 使用HashMap和Hashtable
實(shí)現(xiàn)類 196
10.5.4 使用SortedMap接口和
TreeMap實(shí)現(xiàn)類 197
10.5.5 使用WeakHashMap類 199
10.5.6 使用IdentityHash
Map類 200
10.5.7 使用EnumMap類 201
10.6 Queue接口 201
10.6.1 LinkedList類 202
10.6.2 PriorityQueue類 203
10.7 集合工具類Collections 203
10.7.1 排序操作 203
10.7.2 查找和替換操作 204
10.8 其他集合類 205
10.8.1 Stack類 205
10.8.2 屬性類Properties 206
10.9 創(chuàng)建不可變的List、Set和
Map(Java 9新增功能) 209
10.9.1 Java 9以前版本的
解決方案 209
10.9.2 Java 9版本的解決
方案 209
10.10 使用var類型推斷(Java 10
新增功能) 211
10.11 技術(shù)解惑 212
10.11.1 Collection集合元素的
改變問題 212
10.11.2 深入理解HashSet 212
10.11.3 使用類EnumSet的
注意事項(xiàng) 213
10.11.4 ArrayList和Vector的
區(qū)別 213
10.11.5 TreeMap判斷兩個(gè)元素
相等的標(biāo)準(zhǔn) 213
10.11.6 分析Map類的性能 213
10.11.7 LinkedList、ArrayList、
Vector的性能問題 214
10.11.8 用swap()方法交換集合
中兩個(gè)位置的內(nèi)容 214
10.12 課后練習(xí) 214
第 11章 常用的類庫 215
11.1 StringBuffer類 216
11.1.1 StringBuffer類概述 216
11.1.2 使用StringBuffer類 216
11.2 Runtime類 218
11.2.1 Runtime類概述 218
11.2.2 使用Runtime類 218
11.3 程序國際化 220
11.3.1 國際化基礎(chǔ) 220
11.3.2 Locale類 221
11.3.3 ResourceBundle類 221
11.3.4 處理動(dòng)態(tài)文本 222
11.3.5 使用類代替資源文件 223
11.4 System類 224
11.4.1 使用System類 224
11.4.2 垃圾對(duì)象的回收 225
11.5 Date類 225
11.5.1 使用Date類 226
11.5.2 使用Calendar類 226
11.5.3 使用DateFormat類 227
11.5.4 使用SimpleDate
Format類 228
11.6 Math類 229
11.7 Random類 230
11.8 NumberFormat類 231
11.9 BigInteger類 232
11.10 BigDecimal類 233
11.11 復(fù)制對(duì)象 235
11.12 Arrays類 235
11.13 Comparable接口 236
11.13.1 Comparable接口
概述 236
11.13.2 使用Comparable
接口 238
11.13.3 使用Comparator
接口 238
11.14 Observable類和Observer
接口 239
11.15 正則表達(dá)式 241
11.15.1 正則表達(dá)式概述 241
11.15.2 Java中的正則
表達(dá)式類 242
11.15.3 使用Pattern類和
Matcher類 243
11.15.4 String類和正則
表達(dá)式 243
11.15.5 Java 9新增的正則
表達(dá)式方法 244
11.15.6 Java 11新特性:正則
表達(dá)式參數(shù)的局部
變量語法 245
11.16 Timer類和TimerTask類 245
11.16.1 Timer類 246
11.16.2 TimerTask類 246
11.17 技術(shù)解惑 247
11.17.1 StringBuffer和String的
異同 247
11.17.2 通過System類獲取本機(jī)
的全部環(huán)境屬性 247
11.17.3 分析對(duì)象的
生命周期 248
11.17.4 若未實(shí)現(xiàn)Comparable
接口會(huì)出現(xiàn)異!248
11.17.5 正則表達(dá)式的好處 248
11.18 課后練習(xí) 249
第 12章 泛型 250
12.1 泛型概述 251
12.1.1 泛型的優(yōu)點(diǎn) 251
12.1.2 類型檢查 251
12.1.3 使用泛型 253
12.2 泛型詳解 253
12.2.1 定義泛型接口和類 253
12.2.2 派生子類 254
12.2.3 并不存在泛型類 255
12.3 類型通配符 255
12.3.1 設(shè)置類型實(shí)參的上限 256
12.3.2 設(shè)置類型形參的上限 257
12.3.3 設(shè)置通配符的下限 258
12.4 泛型方法 258
12.5 泛型接口 260
12.6 泛型繼承 261
12.6.1 以泛型類為父類 261
12.6.2 以非泛型類為父類 262
12.7 強(qiáng)制類型轉(zhuǎn)換 263
12.8 擦除 263
12.8.1 擦除的定義 263
12.8.2 擦除帶來的問題 265
12.9 技術(shù)解惑 266
12.9.1 Java語言中泛型的
本質(zhì) 266
12.9.2 泛型方法和類型通配符的
區(qū)別 267
12.9.3 泛型類的繼承規(guī)則 268
12.9.4 類型擦除和泛型特性
之間的聯(lián)系 268
12.9.5 使用原則和注意事項(xiàng) 268
12.10 課后練習(xí) 268
第 13章 異常處理 270
13.1 異常概述 271
13.1.1 認(rèn)識(shí)異!271
13.1.2 Java提供的異常
處理類 271
13.2 異常處理方式 272
13.2.1 try…catch語句 272
13.2.2 處理多個(gè)異常 273
13.2.3 finally語句 274
13.2.4 訪問異常信息 275
13.3 拋出異!276
13.3.1 使用throws拋出異常 276
13.3.2 使用throw拋出異!278
13.4 自定義異常 279
13.4.1 Throwable類及其子類 279
13.4.2 使用Throwable類
自定義異!281
13.5 Checked異常和Runtime異常的
區(qū)別 282
13.5.1 機(jī)制上的差異 282
13.5.2 邏輯上的差異 283
13.6 技術(shù)解惑 283
13.6.1 使用嵌套異常處理是更
合理的方法 283
13.6.2 區(qū)別throws關(guān)鍵字和
throw關(guān)鍵字 284
13.6.3 異常類的繼承關(guān)系 284
13.6.4 子類Error和
Exception 284
13.7 課后練習(xí) 284
第 14章 I/O文件處理和流處理 285
14.1 Java I/O概述 286
14.2 File類 286
14.2.1 File類中的方法 286
14.2.2 使用File類操作文件 287
14.3 RandomAccessFile類 290
14.3.1 RandomAccessFile類的
常用方法 290
14.3.2 使用
RandomAccessFile類 291
14.4 字節(jié)流與字符流 292
14.4.1 字節(jié)流類和字符流類 292
14.4.2 使用字節(jié)流 292
14.4.3 使用字符流 296
14.5 字節(jié)轉(zhuǎn)換流 299
14.6 內(nèi)存操作流 299
14.7 管道流 301
14.8 打印流 302
14.8.1 打印流概述 302
14.8.2 使用打印流 303
14.9 System類 303
14.9.1 System.out 304
14.9.2 System.err 304
14.9.3 System.in 305
14.9.4 輸入/輸出重定向 305
14.10 BufferedReader類 307
14.10.1 BufferedReader類
概述 307
14.10.2 使用
BufferedReader類 308
14.11 Scanner類 309
14.11.1 Scanner類概述 310
14.11.2 使用Scanner類 310
14.12 數(shù)據(jù)操作流 312
14.12.1 DataOutputStream類 313
14.12.2 DataInputStream類 313
14.13 合并流 315
14.14 壓縮流 316
14.14.1 ZIP壓縮輸入/
輸出流概述 316
14.14.2 ZipOutputStream類 316
14.14.3 ZipFile類 319
14.14.4 ZipInputStream類 319
14.15 回退流 320
14.16 字符編碼 321
14.16.1 得到本機(jī)編碼 322
14.16.2 產(chǎn)生亂碼 322
14.17 對(duì)象序列化 323
14.17.1 Serializable接口 323
14.17.2 對(duì)象輸出流
ObjectOutputStream 324
14.17.3 對(duì)象輸入流
ObjectInputStream 324
14.17.4 Externalizable接口 325
14.17.5 關(guān)鍵字transient 326
14.17.6 序列化一組對(duì)象 327
14.18 Buffer類 328
14.18.1 Buffer類中的
主要方法 329
14.18.2 使用Buffer類 330
14.19 Channel類 331
14.20 使用流API 333
14.20.1 Java 8中的流 333
14.20.2 Java 9中新增的
Stream 335
14.21 使用try…with…resources
語句 337
14.21.1 try…with…resources
語句概述 337
14.21.2 try…with…resources的
改進(jìn)(Java 9新增
功能) 338
14.22 技術(shù)解惑 341
14.22.1 使用File.separator
表示分隔符 341
14.22.2 綜合演練創(chuàng)建和
刪除文件 341
14.22.3 File類的復(fù)雜用法 342
14.22.4 字節(jié)流和字符流的
區(qū)別 342
14.22.5 System.err和
System.out的選擇 344
14.22.6 使用I/O實(shí)現(xiàn)一個(gè)簡單的
菜單效果 344
14.22.7 對(duì)象序列化和對(duì)象反
序列化操作時(shí)的版本
兼容性問題 345
14.22.8 不能讓所有的類都實(shí)現(xiàn)
Serializable接口 346
14.23 課后練習(xí) 346
第 15章 AWT的奇幻世界 347
15.1 GUI框架概述 348
15.1.1 AWT框架 348
15.1.2 Swing框架 348
15.1.3 JavaFX框架 348
15.2 AWT框架的結(jié)構(gòu) 349
15.3 容器 350
15.3.1 容器概述 350
15.3.2 容器中的常用組件 351
15.4 布局管理器 352
15.4.1 FlowLayout布局 353
15.4.2 BorderLayout布局 353
15.4.3 GridLayout布局 355
15.4.4 GridBagLayout布局 356
15.4.5 CardLayout布局 356
15.4.6 BoxLayout布局
管理器 357
15.5 AWT中的常用組件 357
15.5.1 AWT組件概覽 358
15.5.2 使用組件 358
15.6 AWT中的對(duì)話框 360
15.6.1 AWT對(duì)話框概述 360
15.6.2 使用AWT對(duì)話框 360
15.7 使用圖像多分辨率API 361
15.7.1 圖像多分辨率概述 361
15.7.2 圖像多分辨率API
詳解 361
15.7.3 圖像多分辨率API
實(shí)戰(zhàn) 362
15.8 javax.imageio.plugins.tiff 364
15.8.1 ImageIO模塊概述 364
15.8.2 TIFF接口 366
15.9 技術(shù)解惑 367
15.9.1 使用絕對(duì)定位 367
15.9.2 對(duì)事件處理模型的
簡化 368
15.9.3 使用AWT開發(fā)動(dòng)畫 368
15.9.4 圖片縮放在現(xiàn)實(shí)中的
意義 368
15.9.5 AWT和Swing是窗體
編程的兩個(gè)主角 368
15.9.6 AWT中的菜單組件不能
創(chuàng)建圖標(biāo)菜單 368
15.9.7 Java的事件模型 368
15.9.8 事件和事件監(jiān)聽器 370
15.10 課后練習(xí) 372
第 16章 Swing 373
16.1 Swing概述 374
16.2 Swing的組件 375
16.2.1 Swing組件的層次
結(jié)構(gòu) 375
16.2.2 Swing實(shí)現(xiàn)AWT
組件 376
16.3 拖放處理 380
16.4 實(shí)現(xiàn)進(jìn)度條效果 381
16.4.1 創(chuàng)建一個(gè)進(jìn)度條 381
16.4.2 使用ProgressMonitor創(chuàng)建
進(jìn)度條對(duì)話框 383
16.5 技術(shù)解惑 383
16.5.1 貫穿Java開發(fā)的MVC
模式 383
16.5.2 Swing的優(yōu)勢 383
16.5.3 使用JSlider和
BoundedRangeModel測試
滑動(dòng)條效果 384
16.5.4 使用ListCellRenderer改變
窗體中列表項(xiàng)的外觀 385
16.6 課后練習(xí) 385
第 17章 JavaFX開發(fā)基礎(chǔ) 386
17.1 JavaFX概述 387
17.1.1 JavaFX的特色 387
17.1.2 安裝e(fx)clipse插件 387
17.1.3 認(rèn)識(shí)第 一個(gè)JavaFX
程序 389
17.2 JavaFX界面結(jié)構(gòu) 389
17.2.1 窗體結(jié)構(gòu)剖析 389
17.2.2 屬性綁定 391
17.2.3 樣式屬性和角度屬性 392
17.3 使用Color類設(shè)置顏色 393
17.3.1 設(shè)置顏色的方法 393
17.3.2 使用RGB方式設(shè)置
顏色 395
17.3.3 使用Web方式設(shè)置
顏色 395
17.4 繪制文字 396
17.4.1 Text包概述 396
17.4.2 繪制指定樣式的文本 397
17.5 繪制形狀 398
17.5.1 使用Line繪制線條 398
17.5.2 使用Rectangle
繪制矩形 399
17.5.3 使用Circle繪制圓 401
17.5.4 使用Ellipse繪制橢圓 402
17.5.5 使用Arc繪制圓弧 403
17.5.6 使用Polygon繪制
多邊形 404
17.5.7 使用Polyline繪制
折線 405
17.5.8 使用CubicCurve繪制三次
曲線 406
17.5.9 使用QuadCurve繪制二次
曲線 407
17.6 顯示圖像 408
17.6.1 使用Image顯示圖像 408
17.6.2 使用ImageView顯示
圖像 409
17.7 界面布局 410
17.7.1 使用Pane的畫布功能 411
17.7.2 使用StackPane實(shí)現(xiàn)特定
面板功能 412
17.7.3 使用FlowPane實(shí)現(xiàn)
序列放置 412
17.7.4 使用GridPane實(shí)現(xiàn)
網(wǎng)格布局 414
17.7.5 使用BorderPane實(shí)現(xiàn)
區(qū)域布局 415
17.7.6 使用HBox實(shí)現(xiàn)水平
布局 417
17.7.7 使用VBox實(shí)現(xiàn)垂直
布局 418
17.8 技術(shù)解惑 419
17.8.1 Swing、AWT和JavaFX的
區(qū)別 419
17.8.2 JavaFX的屬性類型 419
17.9 課后練習(xí) 420
第 18章 使用JavaFX UI組件 421
18.1 使用標(biāo)簽組件 422
18.1.1 標(biāo)簽屬性和方法 422
18.1.2 標(biāo)簽組件實(shí)戰(zhàn)演練 423
18.2 使用按鈕組件 424
18.2.1 按鈕屬性和方法 424
18.2.2 按鈕組件實(shí)戰(zhàn)演練 425
18.3 使用復(fù)選框組件 426
18.3.1 復(fù)選框?qū)傩院头椒ā?26
18.3.2 復(fù)選框組件實(shí)戰(zhàn)演練 427
18.4 使用單選按鈕組件 428
18.4.1 單選按鈕屬性和方法 428
18.4.2 單選按鈕組件實(shí)戰(zhàn)
演練 429
18.5 使用文本框組件 430
18.5.1 文本框的屬性和方法 430
18.5.2 文本框組件實(shí)戰(zhàn)演練 431
18.6 使用文本域組件 432
18.6.1 文本域的屬性和方法 432
18.6.2 文本域組件實(shí)戰(zhàn)演練 432
18.7 使用選擇框組件 434
18.7.1 選擇框的屬性和方法 434
18.7.2 選擇框組件實(shí)戰(zhàn)演練 434
18.8 使用密碼框組件 435
18.8.1 密碼框的屬性和方法 435
18.8.2 密碼框組件實(shí)戰(zhàn)演練 436
18.9 使用組合框組件 437
18.9.1 組合框的屬性和方法 437
18.9.2 組合框?qū)崙?zhàn)演練 438
18.10 使用列表視圖組件 439
18.10.1 列表視圖的屬性和
方法 439
18.10.2 列表視圖組件實(shí)戰(zhàn)
演練 440
18.11 使用滾動(dòng)條組件 442
18.11.1 滾動(dòng)條的屬性和
方法 442
18.11.2 滾動(dòng)條組件實(shí)戰(zhàn)
演練 442
18.12 使用滑塊組件 444
18.12.1 滑塊的屬性和方法 444
18.12.2 滑塊組件實(shí)戰(zhàn)演連 445
18.13 使用樹視圖組件 446
18.13.1 樹視圖的屬性和
方法 446
18.13.2 樹視圖組件實(shí)戰(zhàn)
演練 447
18.14 使用進(jìn)度組件 448
18.14.1 進(jìn)度指示器 448
18.14.2 進(jìn)度條 448
18.14.3 進(jìn)度組件實(shí)戰(zhàn)演練 448
18.15 使用HTML編輯器組件 449
18.15.1 HTML編輯器組件
概述 450
18.15.2 HTML編輯器組件實(shí)戰(zhàn)
演練 450
18.16 使用菜單組件 451
18.16.1 菜單組件概述 451
18.16.2 創(chuàng)建菜單欄 452
18.17 使用文件選擇框組件 453
18.17.1 文件選擇框概述 453
18.17.2 文件選擇框組件
實(shí)戰(zhàn)演練 454
18.18 使用顏色選擇器組件 456
18.18.1 顏色選擇器概述 456
18.18.2 顏色選擇器組件
實(shí)戰(zhàn)演練 458
18.19 技術(shù)解惑 459
18.19.1 制作圓形按鈕 459
18.19.2 設(shè)置按鈕的內(nèi)容 460
18.19.3 樹表視圖 460
18.20 課后練習(xí) 460
第 19章 JavaFX事件處理程序 461
19.1 JavaFX事件處理系統(tǒng)概述 462
19.1.1 Java的事件模型 462
19.1.2 JavaFX中的事件 462
19.1.3 事件處理機(jī)制的流程 463
19.1.4 事件處理 465
19.1.5 事件和事件源 465
19.2 使用快捷方法實(shí)現(xiàn)事件處理 467
19.2.1 快捷方法概述 467
19.2.2 處理按鈕事件 468
19.3 處理鼠標(biāo)事件 469
19.3.1 鼠標(biāo)事件概述 469
19.3.2 使用鼠標(biāo)事件 469
19.4 處理鍵盤事件 470
19.4.1 鍵盤事件概述 470
19.4.2 使用鍵盤事件 471
19.5 使用事件過濾器 472
19.5.1 注冊(cè)和移除事件
過濾器 472
19.5.2 使用事件過濾器 473
19.6 使用事件處理程序 475
19.6.1 注冊(cè)和移除事件
處理程序 475
19.6.2 使用事件處理程序 476
19.7 使用可觸摸設(shè)備的事件 477
19.7.1 手勢和觸摸事件 477
19.7.2 手勢事件實(shí)戰(zhàn) 478
19.8 技術(shù)解惑 483
19.8.1 實(shí)現(xiàn)鼠標(biāo)移到按鈕上
按鈕變大的效果 483
19.8.2 實(shí)現(xiàn)JavaFX綁定 483
19.9 課后練習(xí) 483
第 20章 JavaFX框架下的Web開發(fā) 484
20.1 JavaFX內(nèi)嵌瀏覽器概述 485
20.2 使用WebView組件 486
20.2.1 WebView組件概述 486
20.2.2 WebView組件
實(shí)戰(zhàn)演練 487
20.3 使用WebEngine接口 488
20.3.1 WebEngine概述 488
20.3.2 在JavaFX中執(zhí)行
JavaScript程序 489
20.3.3 在Web頁面中調(diào)用
JavaFX程序 492
20.3.4 實(shí)現(xiàn)彈出式窗口 493
20.4 管理Web歷史記錄 495
20.4.1 WebHistory概述 495
20.4.2 網(wǎng)頁瀏覽歷史記錄
實(shí)戰(zhàn) 495
20.5 使用CSS文件 496
20.6 使用FXML 499
20.6.1 FXML概述 499
20.6.2 FXML實(shí)戰(zhàn)演練 500
20.7 技術(shù)解惑 504
20.7.1 JavaFX集合 504
20.7.2 使用標(biāo)題面板 505
20.8 課后練習(xí) 505
第 21章 JavaFX框架下的多媒體開發(fā) 506
21.1 變換操作 507
21.1.1 變換概述 507
21.1.2 變換操作 507
21.2 動(dòng)畫效果 510
21.2.1 過渡動(dòng)畫 510
21.2.2 時(shí)間軸動(dòng)畫 512
21.3 視覺特效 514
21.3.1 混合特效 514
21.3.2 發(fā)光特效 515
21.3.3 模糊特效 517
21.3.4 陰影特效 519
21.3.5 內(nèi)陰影特效 520
21.3.6 倒影特效 522
21.3.7 光照特效 523
21.4 3D特效 524
21.4.1 JavaFX 3D概述 524
21.4.2 使用3D形狀 524
21.4.3 3D鏡頭 525
21.4.4 使用子場景 527
21.4.5 使用光照 529
21.4.6 使用材質(zhì) 530
21.5 音頻和視頻 532
21.5.1 使用Media獲取獲得
媒體源 532
21.5.2 使用MediaPlayer播放并
控制媒體 532
21.5.3 使用MediaView
顯示視頻 533
21.5.4 控制播放的視頻演練 533
21.6 CSS API(Java 9新增功能) 535
21.6.1 使用傳統(tǒng)方式 535
21.6.2 使用Skin API 536
21.7 技術(shù)解惑 538
21.7.1 注冊(cè)一個(gè)事件
處理程序 538
21.7.2 注意場景背景圖的
問題 539
21.7.3 y-down坐標(biāo)系和y-up
坐標(biāo)系 539
21.8 課后練習(xí) 539
第 22章 數(shù)據(jù)庫編程 540
22.1 SQL基礎(chǔ) 541
22.1.1 數(shù)據(jù)定義 541
22.1.2 數(shù)據(jù)操縱 542
22.2 初識(shí)JDBC 544
22.2.1 JDBC API 544
22.2.2 JDBC驅(qū)動(dòng)類型 544
22.2.3 JDBC的常用接口
和類 545
22.2.4 JDBC編程的一般
步驟 547
22.3 連接Access數(shù)據(jù)庫 549
22.3.1 Access數(shù)據(jù)庫概述 549
22.3.2 連接本地Access
數(shù)據(jù)庫 550
22.4 連接SQL Server數(shù)據(jù)庫 552
22.4.1 下載并安裝
SQL Sever 2016驅(qū)動(dòng) 552
22.4.2 測試連接 553
22.4.3 獲取SQL Server數(shù)據(jù)庫中
指定的表 554
22.5 連接MySQL數(shù)據(jù)庫 555
22.5.1 下載并配置MySQL
驅(qū)動(dòng) 555
22.5.2 將MySQL驅(qū)動(dòng)加載到
Eclipse中 556
22.5.3 測試連接 557
22.6 技術(shù)解惑 557
22.6.1 連接池的功效 557
22.6.2 服務(wù)器自帶連接池的
問題 557
22.6.3 連接池模型 559
22.6.4 數(shù)據(jù)模型、概念模型和
關(guān)系數(shù)據(jù)模型 559
22.6.5 數(shù)據(jù)庫系統(tǒng)的結(jié)構(gòu) 560
22.7 課后練習(xí) 560
第 23章 網(wǎng)絡(luò)與通信編程 561
23.1 Java中的網(wǎng)絡(luò)包 562
23.1.1 InetAddress類 562
23.1.2 URLDecoder類和
URLEncoder類 562
23.1.3 URL類和
URLConnection類 563
23.1.4 實(shí)踐演練 564
23.2 TCP編程 567
23.2.1 使用ServerSocket 567
23.2.2 使用Socket 568
23.2.3 TCP中的多線程 569
23.3 UDP編程 572
23.3.1 使用DatagramSocket 572
23.3.2 使用MulticastSocket 574
23.4 代理服務(wù)器 577
23.4.1 代理服務(wù)器概述 577
23.4.2 使用Proxy創(chuàng)建
連接 578
23.4.3 使用ProxySelector
選擇代理服務(wù)器 579
23.5 HTTP/2 Client API(Java 10的
改進(jìn)) 581
23.5.1 孵化器模塊usergrid
概述 581
23.5.2 HTTP/2 Client API
概述 582
23.5.3 處理HTTP請(qǐng)求 582
23.6 技術(shù)解惑 584
23.6.1 使用異常處理完善
程序 584
23.6.2 使用ServerSocketChannel
的弊端 584
23.6.3 體會(huì)復(fù)雜的
DatagramPacket 585
23.6.4 MulticastSocket類的
重要意義 585
23.6.5 繼承ProxySelector時(shí)需
要做的工作 585
23.6.6 代理服務(wù)無止境 585
23.6.7 生成jdk.incubator.httpclient
模塊的Javadoc 586
23.7 課后練習(xí) 586
第 24章 多線程和進(jìn)程 587
24.1 線程概述 588
24.1.1 線程與進(jìn)程 588
24.1.2 線程的意義 588
24.1.3 Java的線程模型 589
24.2 創(chuàng)建線程 590
24.2.1 使用Thread類創(chuàng)建
線程 590
24.2.2 使用Runnable接口創(chuàng)建
線程 592
24.2.3 使用Thread.onSpinWait()
方法實(shí)現(xiàn)循環(huán)等待 593
24.3 線程的生命周期 594
24.3.1 線程的運(yùn)行與停止 594
24.3.2 線程的掛起和喚醒 595
24.3.3 終止線程的3種
方法 596
24.3.4 線程的阻塞 597
24.3.5 線程的死亡 597
24.4 控制線程 598
24.4.1 使用join方法 599
24.4.2 慎重使用volatile
關(guān)鍵字 599
24.4.3 后臺(tái)、讓步和睡眠 602
24.5 線程傳遞數(shù)據(jù) 603
24.5.1 向線程傳遞數(shù)據(jù)的
方法 603
24.5.2 線程中返回?cái)?shù)據(jù)的
方法 605
24.6 進(jìn)程 606
24.6.1 使用類ProcessBuilder 606
24.6.2 使用類Process 609
24.6.3 使用類ProcessHandle
。↗ava 9新增功能) 609
24.7 技術(shù)解惑 612
24.7.1 線程和函數(shù)的關(guān)系 612
24.7.2 在run方法中使用線程名
時(shí)產(chǎn)生的問題 612
24.7.3 繼承Thread類或?qū)崿F(xiàn)
Runnable接口的比較 612
24.7.4 start()和run()的區(qū)別 613
24.7.5 使用sleep()方法的
注意事項(xiàng) 613
24.7.6 線程的優(yōu)先級(jí) 613
24.7.7 如何確定發(fā)生死鎖 613
24.7.8 關(guān)鍵字synchronized和
volatile的區(qū)別 614
24.7.9 sleep()方法和yield()
方法的區(qū)別 614
24.7.10 分析Swing的多線程
死鎖問題 614
24.8 課后練習(xí) 615
第 25章 大數(shù)據(jù)綜合實(shí)戰(zhàn):爬取并分析
知乎用戶信息 616
25.1 系統(tǒng)設(shè)計(jì) 617
25.1.1 系統(tǒng)目標(biāo) 617
25.1.2 系統(tǒng)功能結(jié)構(gòu) 617
25.2 數(shù)據(jù)庫設(shè)計(jì) 618
25.3 知乎爬蟲請(qǐng)求分析 618
25.4 系統(tǒng)文件夾組織結(jié)構(gòu) 621
25.5 系統(tǒng)詳細(xì)運(yùn)行流程圖 622
25.6 具體編碼 623
25.6.1 核心模塊代碼的編寫 623
25.6.2 知乎抓取功能模塊 629
25.6.3 代理功能模塊 637
25.7 知乎用戶大數(shù)據(jù)分析 645
25.7.1 數(shù)據(jù)展示模塊 645
25.7.2 運(yùn)行展示 646
25.8 項(xiàng)目開發(fā)難點(diǎn)分析 648