第1章 一種現代語言 1
1.1 進入Java世界 2
1.1.1 Java的起源 2
1.1.2 成長 3
1.2 虛擬機 4
1.3 Java與其他語言的比較 7
1.4 設計安全 10
1.4.1 語法簡單性 10
1.4.2 類型安全和方法綁定 11
1.4.3 遞增開發 12
1.4.4 動態內存管理 13
1.4.5 錯誤處理 14
1.4.6 綫程 14
1.4.7 可伸縮性 15
1.5 實現安全 15
1.5.1 校驗器 17
1.5.2 類加載器 18
1.5.3 安全管理器 18
1.6 應用和用戶級安全性 19
1.7 Java路綫圖 20
1.7.1 過去:Java 1.0到Java 1.6 20
1.7.2 如今:Java 7 21
1.7.3 將來 23
1.7.4 可用性 24
第2章 第一個應用 25
2.1 Java工具和環境 25
2.2 配置Eclipse並且創建項目 26
2.2.1 導入本書示例 28
2.3 HelloJava 29
2.3.1 類 32
2.3.2 main()方法 32
2.3.3 類和對象 34
2.3.4 變量與類類型 34
2.3.5 HelloComponent 35
2.3.6 繼承 36
2.3.7 JComponent類 37
2.3.8 關係與指嚮 38
2.3.9 包與導入 39
2.3.10 paintComponent() 方法 40
2.4 HelloJava2:餘波未平 41
2.4.1 實例變量 43
2.4.2 構造函數 43
2.4.3 事件 45
2.4.4 repaint()方法 47
2.4.5 接口 48
2.5 HelloJava3:按鈕的震撼 49
2.5.1 方法重載 51
2.5.2 組件 52
2.5.3 容器 52
2.5.4 布局 53
2.5.5 派生子類與子類型 53
2.5.6 更多事件和接口 54
2.5.7 顔色的說明 55
2.5.8 靜態成員 55
2.5.9 數組 56
2.5.10 顔色的相關方法 56
2.6 HelloJava4:Netscape的反戈一擊 58
2.6.1 綫程 60
2.6.2 Thread類 60
2.6.3 Runnable接口 61
2.6.4 啓動綫程 62
2.6.5 在綫程中運行代碼 62
2.6.6 異常 63
2.6.7 同步 64
第3章 使用工具 66
3.1 JDK環境 66
3.2 Java虛擬機 67
3.3 運行Java應用程序 67
3.4 類路徑 69
3.5 Java編譯器 71
3.6 JAR Files 73
3.6.1 文件壓縮 73
3.6.2 jar工具 74
3.6.3 Pack200工具 77
3.7 策略文件 78
3.7.1 默認的安全性管理器 78
3.7.2 policytool工具 79
3.7.3 通過默認的安全管理器使用策略文件 81
第4章 Java語言 82
4.1 文本編碼 82
4.2 注釋 83
4.3 類型 85
4.3.1 基本類型 86
4.3.2 引用類型 89
4.3.3 字符串的有關問題 91
4.4 語句和錶達式 92
4.4.1 語句 93
4.4.2 錶達式 99
4.5 異常 103
4.5.1 異常和錯誤類 104
4.5.2 異常處理 106
4.5.3 逐級上浮 108
4.5.4 棧軌跡 109
4.5.5 受查和非受查異常 110
4.5.6 拋齣異常 111
4.5.7 try的“潛伏”功用 114
4.5.8 finally子句 115
4.5.9 帶有資源的Try 116
4.5.10 性能問題 118
4.6 斷言 118
4.6.1 啓用和禁用斷言 119
4.6.2 使用斷言 120
4.7 數組 121
4.7.1 數組類型 122
4.7.2 數組的創建和初始化 122
4.7.3 使用數組 124
4.7.4 匿名數組 126
4.7.5 多維數組 126
4.7.6 深入數組 128
第5章 Java中的對象 129
5.1 類 130
5.1.1 訪問字段和方法 132
5.1.2 靜態成員 133
5.2 方法 136
5.2.1 局部變量 137
5.2.2 遮蔽 137
5.2.3 靜態方法 138
5.2.4 初始化局部變量 139
5.2.5 參數傳遞與引用 140
5.2.6 基本類型的包裝器 142
5.2.7 基本類型的自動裝箱和拆箱 144
5.2.8 可變長度的參數列錶 145
5.2.9 方法重載 146
5.3 對象創建 148
5.3.1 構造函數 148
5.3.2 使用重載構造函數 149
5.3.3 靜態和非靜態初始化塊 151
5.4 對象銷毀 152
5.4.1 垃圾迴收 152
5.4.2 最終化 153
5.4.3 弱引用和軟引用 154
5.5 枚舉 155
5.5.1 枚舉值 156
5.5.2 定製化枚舉 156
第6章 類之間的關係 158
6.1 派生子類和繼承 158
6.1.1 被遮蔽變量 160
6.1.2 覆蓋方法 162
6.1.3 特殊引用:this和super 169
6.1.4 類型強製轉換 170
6.1.5 使用超類構造函數 172
6.1.6 完全揭密:構造函數和初始化 173
6.1.7 抽象方法和類 173
6.2 接口 174
6.2.1 作為迴調的接口 176
6.2.2 接口變量 177
6.2.3 子接口 178
6.3 包與編譯單元 179
6.3.1 編譯單元 179
6.3.2 包名 180
6.3.3 類可見性 180
6.3.4 導入類 181
6.4 變量和方法的可見性 183
6.4.1 基本訪問修飾符 184
6.4.2 子類和可見性 185
6.4.3 接口和可見性 186
6.5 數組和類的層次體係結構 186
6.6 內部類 188
6.6.1 內部類作為適配器 190
6.6.2 方法中的內部類 192
第7章 使用對象和類 198
7.1 Object類 198
7.1.1 相等性與等價 199
7.1.2 散列碼 200
7.1.3 復製對象 200
7.2 Class類 203
7.3 反射 205
7.3.1 安全性 208
7.3.2 訪問字段 209
7.3.3 訪問方法 210
7.3.4 訪問構造函數 212
7.3.5 關於數組 213
7.3.6 訪問泛型類型信息 213
7.3.7 訪問注解數據 214
7.3.8 動態接口適配器 214
7.3.9 反射適用之處 215
7.4 注解 216
7.4.1 使用注解 217
7.4.2 標準注解 218
7.4.3 Apt工具 219
第8章 泛型 220
8.1 容器:構建一個更好的捕鼠器 221
8.2 走進泛型 222
8.3 根本就沒有勺子 226
8.3.1 擦除 226
8.3.2 原始類型 228
8.4 參數化類型關係 229
8.5 類型轉換 232
8.6 編寫泛型類 233
8.6.1 類型變量 233
8.6.2 子類化泛型 234
8.6.3 異常和泛型 235
8.6.4 參數類型限製 236
8.7 邊界 237
8.8 通配符 239
8.8.1 所有實例化的超類型 240
8.8.2 有界限通配符 240
8.8.3 思考容器 240
8.8.4 下邊界 241
8.8.5 讀、寫和算術 242
8.8.6 、和原始類型 243
8.8.7 通配符類型關係 244
8.9 泛型方法 245
8.9.1 泛型方法的引入 246
8.9.2 根據參數進行類型推斷 247
8.9.3 根據賦值環境做類型推斷 248
8.9.4 顯示類型調用 249
8.9.5 通配符捕獲 249
8.9.6 通配符類型和泛型方法 249
8.10 參數化類型的數組 250
8.10.1 使用數組類型 251
8.10.2 泛型類型的數組有何優點 252
8.10.3 數組類型中的通配符 252
8.11 案例學習:Enum類 253
8.12 案例學習:sort()方法 254
8.13 結論 255
第9章 綫程 256
9.1 綫程簡介 257
9.1.1 Thread類和Runnable接口 258
9.1.2 控製綫程 262
9.1.3 綫程的消亡 264
9.2 applet中綫程的實現 266
9.3 同步 268
9.3.1 對方法的串行化訪問 269
9.3.2 訪問多綫程中的類和實例變量 271
9.3.3 wait()和notify()方法 272
9.3.4 傳遞消息 274
9.3.5 ThreadLocal對象 278
9.4 調度和優先級 279
9.4.1 綫程狀態 280
9.4.2 時間片劃分 281
9.4.3 優先級 282
9.4.4 讓步 283
9.5 綫程組 283
9.5.1 使用ThreadGroup類 284
9.5.2 未捕獲的異常 284
9.6 綫程性能 285
9.6.1 同步的開銷 285
9.6.2 綫程資源消費 286
9.7 並發工具 287
9.7.1 執行器 288
9.7.2 鎖 300
9.7.3 同步構造 303
9.7.4 原子操作 308
9.8 結論 310
第10章 文本處理 311
10.1 其他與文本相關的API 312
10.2 String 312
10.2.1 String構造函數 313
10.2.2 事物的字符串錶示 314
10.2.3 字符串比較 315
10.2.4 查找 317
10.2.5 編輯 318
10.2.6 String方法小結 319
10.2.7 StringBuilder和StringBuffer 320
10.3 國際化 321
10.3.1 java.util.Locale類 321
10.3.2 資源包 322
10.4 解析與格式化文本 324
10.4.1 解析基本數字 325
10.4.2 文本分詞 326
10.5 Printf式格式化 328
10.5.1 Formatter 329
10.5.2 格式字符串 329
10.5.3 字符串轉換 330
10.5.4 基本類型和數字轉換 332
10.5.5 標誌 334
10.5.6 其他 334
10.6 用java.text包格式化 334
10.7 正則錶達式 338
10.7.1 regex記法 339
10.7.2 java.util.regex API 349
第11章 核心實用工具 356
11.1 數學實用工具 356
11.1.1 java.lang.Math類 357
11.1.2 Big/Precise Numbers 359
11.1.3 浮點數組成部分 359
11.1.4 隨機數 360
11.2 日期和時間 361
11.2.1 使用日曆 362
11.2.2 Time Zones 363
11.2.3 解析和格式化日期 365
11.2.4 Printf式的日期和時間格式化 367
11.3 定時器 368
11.4 集閤 370
11.4.1 Collection接口 371
11.4.2 迭代器 374
11.4.3 Collection類型 375
11.4.4 Map接口 378
11.4.5 集閤實現 380
11.4.6 哈希碼和鍵值 385
11.4.7 同步和隻讀集閤 386
11.4.8 同步和隻讀集閤 387
11.4.9 WeakHashMap 388
11.4.10 EnumSet和EnumMap 388
11.4.11 排序的集閤 389
11.4.12 一個令人激動的例子 389
11.5 特性 391
11.5.1 加載和存儲 392
11.5.2 係統特性 393
11.6 首選項API 394
11.6.1 類的首選項 395
11.6.2 首選項存儲 395
11.6.3 修改通知 396
11.7 日誌API 397
11.7.1 概述 397
11.7.2 日誌級彆 399
11.7.3 一個簡單的例子 400
11.7.4 日誌建立特性 401
11.7.5 記錄器 403
11.7.6 性能 404
11.8 Observers和Observables 404
第12章 輸入/輸齣功能 406
12.1 流 406
12.1.1 終端I/O 409
12.1.2 字符流 411
12.1.3 流包裝器 413
12.1.4 管道 416
12.1.5 流與String的轉換 418
12.1.6 Implementing a Filter Stream 420
12.2 文件 421
12.2.1 java.io.File類 422
12.2.2 文件流 427
12.2.3 Random AccessFile 429
12.2.4 Resource Paths 430
12.3 NIO File API 432
12.3.1 FileSystem和Path 433
12.3.2 NIO文件操作 435
12.3.3 目錄操作 438
12.3.4 監控路徑 440
12.4 串行化 441
12.4.1 使用readObject()初始化 443
12.4.2 SerialVersionUID 443
12.5 數據壓縮 444
12.5.1 壓縮數據 445
12.5.2 解壓縮數據 446
12.5.3 作為文件係統的Zip歸檔文件 448
12.6 NIO包 449
12.6.1 異步I/O 450
12.6.2 性能 450
12.6.3 映射和加鎖文件 450
12.6.4 通道 451
12.6.5 緩衝區 451
12.6.6 字符編碼器和解碼器 455
12.6.7 FileChannel 457
12.6.8 利用NIO實現可伸縮I/O 463
第13章 網絡編程 464
13.1 套接字 466
13.1.1 客戶端和服務器 467
13.1.2 DateAtHost客戶端 471
13.1.3 TinyHttpd服務器 473
13.1.4 套接字選項 478
13.1.5 代理和防火牆 479
13.2 數據報套接字 481
13.2.1 The HeartBeat Applet 482
13.2.2 InetAddress 486
13.3 簡單串行化對象協議 487
13.4 遠程方法調用 491
13.4.1 現實的用法 492
13.4.2 遠程和非遠程對象 492
13.4.3 一個RMI示例 495
13.4.4 RMI and CORBA 504
13.5 使用NIO的可伸縮I/O 504
13.5.1 可選擇通道 505
13.5.2 使用select 506
13.5.3 LargerHttpd 508
13.5.4 非阻塞客戶端端操作 512
第14章 Web編程 514
14.1 統一資源定位器(URL) 514
14.2 URL類 515
14.2.1 流數據 516
14.2.2 將內容獲取為對象 517
14.2.3 Managing Connections 518
14.2.4 實用的處理器 519
14.2.5 其他處理器框架 519
14.3 與Web應用通信 520
14.3.1 使用GET方法 521
14.3.2 使用POST方法 521
14.3.3 The HttpURLConnection 524
14.3.4 SSL和安全Web通信 525
14.3.5 URL、URN和URI 525
14.4 Web Services 526
14.4.1 XML-RPC 527
14.4.2 WSDL 527
14.4.3 工具 527
14.4.4 Weather Service客戶端 528
第15章 Web應用與Web服務 530
15.1 Web應用技術 531
15.1.1 麵嚮頁麵的應用和單頁應用 531
15.1.2 JSP 532
15.1.3 XML和XSL 533
15.1.4 Web應用框架 533
15.1.5 Google Web Toolkit 534
15.1.6 HTML5、AJAX以及更多 534
15.2 Java Web應用 534
15.2.1 servlet生命期 535
15.2.2 Servlets 536
15.2.3 The HelloClient Servlet 537
15.2.4 servlet響應 538
15.2.5 servlet參數 540
15.2.6 The ShowParameters Servlet 541
15.2.7 用戶會話管理 543
15.2.8 ShowSession Servlet 543
15.2.9 ShoppingCart Servlet 545
15.2.10 Cookies 548
15.2.11 ServletContext API 549
15.2.12 異步Servlets 550
15.3 WAR文件和部署 554
15.3.1 使用web.xml和注解配置 555
15.3.2 URL模式映射 557
15.3.3 部署HelloClient 558
15.3.4 錯誤和索引頁麵 559
15.3.5 安全性和鑒彆 561
15.3.6 為用戶指定角色 561
15.3.7 安全數據傳輸 562
15.3.8 用戶鑒彆 563
15.3.9 過程性安全 565
15.4 servlet過濾器 566
15.4.1 一個簡單的過濾器 567
15.4.2 一個測試servlet 568
15.4.3 聲明和映射過濾器 569
15.4.4 過濾servlet請求 570
15.4.5 過濾servlet響應 572
15.5 使用Ant構建WAR文件 575
15.5.1 麵嚮開發的目錄布局 575
15.5.2 使用Ant部署和重新部署WAR 577
15.6 實現Web Services 577
15.6.1 定義服務 578
15.6.2 迴顯服務 578
15.6.3 使用服務 579
15.6.4 數據類型 581
15.7 結論 582
第16章 Swing 583
16.1 組件 586
16.1.1 對等對象 588
16.1.2 模型-視圖-控製器框架 589
16.1.3 繪製 590
16.1.4 啓用和禁用組件 591
16.1.5 焦點 591
16.1.6 其他組件方法 592
16.1.7 布局管理器 594
16.1.8 邊距 594
16.1.9 Z順序(組件入棧) 595
16.1.10 revalidate()和doLayout()方法 595
16.1.11 管理組件 596
16.1.12 監聽組件 596
16.1.13 窗口和框架 596
16.1.14 控製框架的其他方法 598
16.1.15 使用內容格 598
16.1.16 桌麵集成 599
16.2 事件 601
16.2.1 事件接收者和監聽者接口 602
16.2.2 事件源 603
16.2.3 事件發送 605
16.2.4 事件類型 606
16.2.5 java.awt.event.InputEvent類 606
16.2.6 InputEvent中的鼠標和按鍵修飾符 606
16.2.7 焦點事件 608
16.3 事件總結 609
16.3.1 適配器類 612
16.3.2 啞適配器 615
16.4 AWT Robot 615
16.5 Swing中的多綫程 616
第17章 使用Swing組件 620
17.1 按鈕和標簽 620
17.1.1 按鈕和標簽中的HTML文本 623
17.2 復選框和單選鈕 624
17.3 列錶框和組閤框 626
17.4 增減器 629
17.5 邊框 632
17.6 菜單 635
17.7 PopupMenu類 638
17.8 JScrollPane類 642
17.9 JSplitPane類 644
17.10 JTabbedPane類 646
17.11 滾動條和滑塊 650
17.12 對話框 652
17.12.1 文件選擇對話框 654
17.12.2 顔色選擇器 657
第18章 再談Swing組件 658
18.1 文本組件 658
18.1.1 TextEntryBox應用 659
18.1.2 格式化文本 661
18.1.3 過濾輸入 662
18.1.4 驗證數據 664
18.1.5 有關密碼的問題 665
18.1.6 共享數據模型 666
18.1.7 自由地使用HTML和RTF 667
18.1.8 自行管理文本 670
18.2 焦點導航 673
18.2.1 樹 674
18.2.2 節點和模型 675
18.2.3 保存樹 675
18.2.4 樹事件 675
18.2.5 一個完整的例子 676
18.3 錶 679
18.3.1 第一步:不勞而獲 679
18.3.2 第二步:創建一個錶模型 681
18.3.3 第三步:一個簡單的電子錶格應用 684
18.3.4 排序和過濾 687
18.3.5 打印JTables 689
18.4 桌麵 690
18.5 可插拔觀感 691
18.6 創建定製組件 694
18.6.1 生成事件 694
18.6.2 Dial組件 695
第19章 布局管理器 700
19.1 FlowLayout 702
19.2 GridLayout 703
19.3 BorderLayout 704
19.4 BoxLayout 707
19.5 CardLayout 708
19.6 GridBagLayout 710
19.6.1 GridBagConstraints類 710
19.6.2 錶格坐標 712
19.6.3 填充約束 713
19.6.4 行跨度和列跨度 715
19.6.5 權值 716
19.6.6 錨定 718
19.6.7 間距和邊距 719
19.6.8 相對定位 720
19.6.9 組閤布局 721
19.7 非標準布局管理器 725
19.8 絕對定位 725
第20章 使用2D API繪圖 727
20.1 整體結構 727
20.2 錶現通道 729
20.3 2D API快速瀏覽 732
20.3.1 填充形狀 732
20.3.2 繪製形狀輪廓 732
20.3.3 便利方法 733
20.3.4 繪製文本 734
20.3.5 繪製圖像 734
20.3.6 完整的Iguana 735
20.4 填充形狀 738
20.4.1 純色 738
20.4.2 顔色漸變 739
20.4.3 紋理 739
20.4.4 桌麵顔色 739
20.5 描畫形狀輪廓 740
20.6 使用字體 741
20.7 顯示圖像 746
20.7.1 Image類 746
20.7.2 圖像觀察者 748
20.7.3 縮放和大小 749
20.8 繪製技術 750
20.8.1 雙緩衝 752
20.8.2 使用剪裁的有限繪製 753
20.8.3 屏幕外繪製 756
20.9 打印 759
第21章 使用圖像及其他媒體 761
21.1 Loading Images 762
21.1.1 ImageObserver 762
21.1.2 MediaTracker 764
21.1.3 ImageIcon 766
21.1.4 ImageIO 767
21.2 生成圖像數據 768
21.2.1 繪製動畫 768
21.2.2 BufferedImage剖析 771
21.2.3 顔色模型 773
21.2.4 創建圖像 774
21.2.5 更新BufferedImage 776
21.3 過濾圖像數據 779
21.3.1 ImageProcessor如何工作 781
21.3.2 將Image轉換為BufferedImage 782
21.3.3 使用RescaleOp類 782
21.3.4 使用Affine TransformOp類 783
21.4 保存圖像數據 784
21.5 簡單音頻 784
21.6 Java媒體框架 786
第22章 JavaBeans 789
22.1 什麼是Bean 789
22.2 The NetBeans IDE 791
22.3 特性和定製器 795
22.4 事件關聯和適配器 797
22.4.1 控製Juggler 798
22.4.2 分子運動 800
22.5 綁定特性 801
22.6 構建Bean 803
22.6.1 The Dial Bean 803
22.6.2 特性的設計模式 806
22.7 可視化設計的限製 807
22.8 串行化與代碼生成 808
22.9 使用BeanInfo進行定製 809
22.10 用手寫代碼使用Bean 813
22.10.1 Bean實例化和類型管理 813
22.10.2 使用串行化Bean 814
22.10.3 使用反射完成運行時事件關聯 816
22.11 BeanContext和BeanContextService 818
22.12 Java激活框架 818
22.13 Enterprise JavaBeans和POJO-Based Enterprise Frameworks 819
第23章 Applets 820
23.1 基於瀏覽器的應用政治 820
23.2 Applet支持和Java插件 822
23.3 JApplet類 822
23.3.1 Applet生命期 824
23.3.2 Applet安全沙箱 826
23.3.3 獲得Applet資源 827
23.3.4 標簽 831
23.3.5 屬性 832
23.3.6 參數 832
23.3.7 Applet的替代品 833
23.3.8 完整的標簽 833
23.3.9 加載類文件 835
23.3.10 包 835
23.3.11 查看applet 836
23.4 Java Web Start 836
23.5 結論 837
第24章 XML 838
24.1 本章主題 838
24.2 背景知識點撥 839
24.2.1 文本與二進製 840
24.2.2 通用解析器 840
24.2.3 XML的狀態 840
24.2.4 The XML APIs 841
24.2.5 XML和Web瀏覽器 841
24.3 XML基礎 841
24.3.1 屬性 842
24.3.2 XML文檔 843
24.3.3 編碼 843
24.3.4 命名空間 844
24.3.5 驗證 845
24.3.6 HTML嚮XHTML的轉換 845
24.4 SAX 845
24.4.1 The SAX API 846
24.4.2 使用SAX構建模型 847
24.4.3 XML編碼器/ 解碼器 853
24.5 DOM 854
24.5.1 DOM API 854
24.5.2 試驗DOM 855
24.5.3 用DOM生成XML 856
24.5.4 JDOM 857
24.6 XPath 858
24.6.1 節點 859
24.6.2 謂詞 860
24.6.3 函數 861
24.6.4 XPath API 861
24.6.5 XMLGrep 862
24.7 XInclude 863
24.8 驗證文檔 865
24.8.1 使用文檔驗證 866
24.8.2 DTDs 866
24.8.3 XML Schema 868
24.8.4 驗證API 872
24.9 JAXB和代碼生成 874
24.9.1 注解我們的模型 874
24.9.2 從一個XML架構生成一個Java模型 880
24.9.3 從Java模型生成一個XML架構 880
24.10 用XSL/XSLT轉換文檔 880
24.10.1 XSL基礎知識 881
24.10.2 轉換動物園名冊 883
24.10.3 XSLTransform 885
24.10.4 瀏覽器中的XSL 886
24.11 Web服務 886
24.12 本書的結尾 887
附錄A Eclipse IDE 888
A.1 IDE戰爭 889
A.2 Eclipse入門 889
A.3 使用Eclipse 890
A.3.1 獲取源代碼 891
A.3.2 布局 892
A.3.3 運行示例 893
A.3.4 構建基於Ant的示例 894
A.3.5 獨特示例 894
A.4 Eclipse功能 894
A.4.1 編碼快捷 894
A.4.2 自動更正 895
A.4.3 重構 896
A.4.4 區分文件 897
A.4.5 組織導入 897
A.4.6 格式化源代碼 897
A.5 結語 897
附錄B BeanShell:簡單Java腳本 898
B.1 運行BeanShell 898
B.2 Java語句和錶達式 899
B.3 BeanShell命令 900
B.4 腳本化方法和對象 901
B.5 修改類路徑 903
B.6 更多內容 903
· · · · · · (
收起)