目錄
第1章 Java基礎 1
1.1 Java的起源 2
1.1.1 Java與C和C++的關係 3
1.1.2 Java與C#的關係 3
1.2 Java對Internet的貢獻 4
1.2.1 Java applet 4
1.2.2 安全性 4
1.2.3 可移植性 5
1.3 Java的魔法:字節碼 5
1.4 Java的主要術語 6
1.5 麵嚮對象程序設計 7
1.5.1 封裝 8
1.5.2 多態性 8
1.5.3 繼承 9
1.6 獲得Java開發工具包 9
1.7 第一個簡單的程序 10
1.7.1 輸入程序 10
1.7.2 編譯程序 11
1.7.3 逐行分析第一個程序 11
1.8 處理語法錯誤 13
1.9 第二個簡單程序 14
1.10 另一種數據類型 16
1.11 兩條控製語句 18
1.11.1 if語句 18
1.11.2 for循環語句 20
1.12 創建代碼塊 21
1.13 分號和定位 22
1.14 縮進原則 23
1.15 Java關鍵字 25
1.16 Java標識符 25
1.17 Java類庫 26
第2章 數據類型與運算符 29
2.1 數據類型為什麼重要 30
2.2 Java的基本類型 30
2.2.1 整數類型 31
2.2.2 浮點型 32
2.2.3 字符型 33
2.2.4 布爾類型 34
2.3 字麵值 36
2.3.1 十六進製、八進製和二進製字麵值 36
2.3.2 字符轉義序列 37
2.3.3 字符串字麵值 37
2.4 變量詳解 38
2.4.1 初始化變量 39
2.4.2 動態初始化 39
2.5 變量的作用域和生命期 39
2.6 運算符 42
2.7 算術運算符 42
2.8 關係運算符和邏輯運算符 44
2.9 短路邏輯運算符 46
2.10 賦值運算符 47
2.11 速記賦值 47
2.12 賦值中的類型轉換 48
2.13 不兼容類型的強製轉換 50
2.14 運算符優先級 51
2.15 錶達式 53
2.15.1 錶達式中的類型轉換 53
2.15.2 間距和圓括號 55
第3章 程序控製語句 57
3.1 從鍵盤輸入字符 58
3.2 if語句 59
3.2.1 嵌套if語句 60
3.2.2 if-else-if階梯狀結構 61
3.3 switch語句 62
3.4 for循環 68
3.4.1 for循環的一些變體 69
3.4.2 缺失部分要素的for循環 70
3.4.3 無限循環 71
3.4.4 沒有循環體的循環 72
3.4.5 在for循環內部聲明循環控製變量 72
3.4.6 增強型for循環 73
3.5 while循環 73
3.6 do-while循環 75
3.7 使用break語句退齣循環 79
3.8 將break語句作為一種goto語句使用 81
3.9 使用continue語句 85
3.10 嵌套循環 89
第4章 類、對象和方法 93
4.1 類的基礎知識 94
4.1.1 類的基本形式 94
4.1.2 定義類 95
4.2 如何創建對象 98
4.3 引用變量和賦值 98
4.4 方法 99
4.5 從方法返迴值 101
4.6 返迴值 102
4.7 使用形參 104
4.8 構造函數 112
4.9 帶形參的構造函數 113
4.10 深入介紹new運算符 115
4.11 垃圾迴收 115
4.12 this關鍵字 119
第5章 其他數據類型與運算符 123
5.1 數組 124
5.2 多維數組 129
5.3 不規則數組 130
5.3.1 三維或更多維的數組 131
5.3.2 初始化多維數組 131
5.4 另一種聲明數組的語法 132
5.5 數組引用賦值 133
5.6 使用length成員 134
5.7 for-each形式的循環 139
5.7.1 迭代多維數組 142
5.7.2 應用增強型for循環 143
5.8 字符串 144
5.8.1 構造字符串 144
5.8.2 操作字符串 145
5.8.3 字符串數組 147
5.8.4 字符串是不可變的 148
5.8.5 使用String控製switch語句 149
5.9 使用命令行實參 150
5.10 位運算符 151
5.10.1 位運算符的與、或、異
或和非 151
5.10.2 移位運算符 155
5.10.3 位運算符的賦值速記符 157
5.11 ?運算符 160
第6章 方法和類詳解 163
6.1 控製對類成員的訪問 164
6.2 嚮方法傳遞對象 169
6.3 返迴對象 173
6.4 方法重載 174
6.5 重載構造函數 179
6.6 遞歸 184
6.7 理解static關鍵字 186
6.8 嵌套類和內部類 192
6.9 varargs(可變長度實參) 195
6.9.1 varargs基礎 195
6.9.2 重載varargs方法 198
6.9.3 varargs和歧義 199
第7章 繼承 203
7.1 繼承的基礎知識 204
7.2 成員訪問與繼承 207
7.3 構造函數和繼承 209
7.4 使用super調用超類構造函數 211
7.5 使用super訪問超類成員 215
7.6 創建多級層次結構 218
7.7 何時調用構造函數 221
7.8 超類引用和子類對象 222
7.9 方法重寫 227
7.10 重寫的方法支持多態性 229
7.11 為何使用重寫方法 231
7.12 使用抽象類 235
7.13 使用final 239
7.13.1 使用final防止重寫 239
7.13.2 使用final防止繼承 239
7.13.3 對數據成員使用final 240
7.14 Object類 241
第8章 包和接口 243
8.1 包 244
8.1.1 定義包 244
8.1.2 尋找包和CLASSPATH 245
8.1.3 一個簡短的包示例 245
8.2 包和成員訪問 247
8.3 理解被保護的成員 249
8.4 導入包 251
8.5 Java的類庫位於包中 252
8.6 接口 253
8.7 實現接口 254
8.8 使用接口引用 257
8.9 接口中的變量 264
8.10 接口能夠被擴展 265
8.11 默認接口方法 266
8.11.1 默認方法的基礎知識 266
8.11.2 默認方法的實際應用 268
8.11.3 多繼承問題 269
8.12 在接口中使用靜態方法 270
8.13 有關包和接口的最後思考 271
第9章 異常處理 273
9.1 異常的層次結構 274
9.2 異常處理基礎 274
9.2.1 使用關鍵字try和catch 275
9.2.2 一個簡單的異常示例 276
9.3 未捕獲異常的結果 277
9.4 使用多個catch語句 280
9.5 捕獲子類異常 281
9.6 try代碼塊可以嵌套 282
9.7 拋齣異常 283
9.8 Throwable詳解 285
9.9 使用finally 286
9.10 使用throws語句 288
9.11 新增的3種異常功能 289
9.12 Java的內置異常 291
9.13 創建異常子類 293
第10章 使用I/O 299
10.1 Java的I/O基於流 300
10.2 字節流和字符流 300
10.3 字節流類 301
10.4 字符流類 301
10.5 預定義流 302
10.6 使用字節流 302
10.6.1 讀取控製颱輸入 303
10.6.2 寫入控製颱輸齣 304
10.7 使用字節流讀寫文件 305
10.7.1 從文件輸入 305
10.7.2 寫入文件 309
10.8 自動關閉文件 311
10.9 讀寫二進製數據 313
10.10 隨機訪問文件 317
10.11 使用Java字符流 319
10.11.1 使用字符流的控製颱輸入 320
10.11.2 使用字符流的控製颱輸齣 323
10.12 使用字符流的文件I/O 324
10.12.1 使用FileWriter 324
10.12.2 使用FileReader 325
10.13 使用Java的類型封裝器轉換數值字符串 326
第11章 多綫程程序設計 337
11.1 多綫程的基礎知識 338
11.2 Thread類和Runnable接口 339
11.3 創建一個綫程 339
11.4 創建多個綫程 346
11.5 確定綫程何時結束 348
11.6 綫程的優先級 351
11.7 同步 354
11.8 使用同步方法 354
11.9 同步語句 357
11.10 使用notify( )、wait( )和notifyAll( )的綫程通信 360
11.11 綫程的掛起、繼續執行和停止 365
第12章 枚舉、自動裝箱、靜態導入和注釋 371
12.1 枚舉 372
12.2 Java語言中的枚舉是類類型 374
12.3 values( )和valueOf( )方法 374
12.4 構造函數、方法、實例變量和枚舉 376
12.5 枚舉繼承enum 378
12.6 自動裝箱 384
12.7 類型封裝器 385
12.8 自動裝箱的基礎知識 386
12.9 自動裝箱和方法 387
12.10 發生在錶達式中的自動裝箱/自動拆箱 388
12.11 靜態導入 390
12.12 注解(元數據) 393
第13章 泛型 397
13.1 泛型的基礎知識 398
13.2 一個簡單的泛型示例 399
13.2.1 泛型隻能用於引用類型 402
13.2.2 泛型類型是否相同基於其類型實參 402
13.2.3 帶有兩個類型形參的泛型類 402
13.2.4 泛型類的一般形式 404
13.3 約束類型 404
13.4 使用通配符實參 407
13.5 約束通配符 410
13.6 泛型方法 413
13.7 泛型構造函數 415
13.8 泛型接口 416
13.9 原類型和遺留代碼 422
13.10 使用菱形運算符進行類型推斷 425
13.11 擦除特性 426
13.12 歧義錯誤 426
13.13 一些泛型限製 427
13.13.1 類型形參不能實例化 427
13.13.2 對靜態成員的限製 428
13.13.3 泛型數組限製 428
13.13.4 泛型異常限製 429
13.14 繼續學習泛型 429
第14章 lambda錶達式和方法引用 431
14.1 lambda錶達式簡介 432
14.1.1 lambda錶達式的基礎知識 432
14.1.2 函數式接口 433
14.1.3 幾個lambda錶達式示例 435
14.2 塊lambda錶達式 440
14.3 泛型函數式接口 441
14.4 lambda錶達式和變量捕獲 447
14.5 從 lambda錶達式中拋齣異常 448
14.6 方法引用 449
14.6.1 靜態方法的方法引用 449
14.6.2 實例方法的方法引用 451
14.7 構造函數引用 455
14.8 預定義的函數式接口 457
第15章 applet、事件和其他主題 461
15.1 applet的基礎知識 462
15.2 applet的組織和基本構件 465
15.3 applet架構 465
15.4 完整的applet框架 465
15.5 applet的初始化與終止 467
15.6 請求重繪 467
15.7 使用狀態窗口 472
15.8 嚮applet傳遞形參 473
15.9 Applet類 474
15.10 事件處理 476
15.11 委派事件模型 476
15.12 事件 476
15.12.1 事件源 476
15.12.2 事件偵聽器 477
15.12.3 事件類 477
15.12.4 事件偵聽器接口 478
15.13 使用委派事件模型 479
15.13.1 處理鼠標事件和鼠標移動事件 479
15.13.2 一個簡單的鼠標事件applet 480
15.14 其他Java關鍵字 482
15.14.1 transient和volatile修飾符 483
15.14.2 instanceof 483
15.14.3 strictfp 483
15.14.4 assert 483
15.14.5 native方法 484
第16章 Swing介紹 487
16.1 Swing的起源和設計原則 488
16.2 組件和容器 490
16.2.1 組件 490
16.2.2 容器 491
16.2.3 頂級容器窗格 491
16.3 布局管理器 491
16.4 第一個簡單的Swing程序 492
16.5 使用JButton 497
16.6 使用JTextField 500
16.7 使用JCheckBox 504
16.8 使用JList 507
15.9 使用匿名內部類或lambda錶達式來處理事件 515
16.10 創建Swing applet 517
第17章 JavaFX簡介 521
17.1 JavaFX的基本概念 522
17.1.1 JavaFX包 522
17.1.2 Stage和Scene類 523
17.1.3 節點和場景圖 523
17.1.4 布局 523
17.1.5 Application類和生命周期方法 523
17.1.6 啓動JavaFX應用程序 524
17.2 JavaFX應用程序的骨架 524
17.3 編譯和運行JavaFX程序 527
17.4 應用程序綫程 527
17.5 使用簡單的JavaFX控件Label 528
17.6 使用按鈕和事件 530
17.6.1 事件基礎 530
17.6.2 按鈕控件簡介 531
17.6.3 演示事件處理和按鈕 531
17.7 其他3個JavaFX控件 534
17.7.1 CheckBox 534
17.7.2 ListView 538
17.7.3 TextField 543
17.8 效果和變換簡介 546
17.8.1 效果 546
17.8.2 變換 548
17.8.3 演示效果和變換 549
17.9 進一步學習 552
附錄A 自測題答案 555
附錄B 使用Java的文檔注釋 599
· · · · · · (
收起)