譯者序
前言
第一部分 Java語言
第1章 Java編程基礎2
1.1 計算基礎3
1.1.1 計算機的硬件組成3
1.1.2 位、字節和二進製4
1.1.3 操作係統5
1.2 程序5
1.3 編程語言6
1.4 Java語言7
1.4.1 Java的起源7
1.4.2 Java對互聯網的貢獻9
1.4.3 Java applet9
1.4.4 安全性9
1.4.5 可移植性9
1.4.6 Java的解決方案:字節碼10
1.4.7 Java的演進10
1.5 麵嚮對象編程的關鍵特性11
1.5.1 封裝12
1.5.2 多態12
1.5.3 繼承13
1.6 Java開發工具包13
1.7 第一個簡單的程序14
1.7.1 輸入程序15
1.7.2 編譯程序15
1.7.3 運行程序15
1.7.4 逐行解析第一個簡單的程序16
1.8 處理語法錯誤18
1.9 第二個簡單的程序18
1.10 另一種數據類型20
1.11 兩種控製語句23
1.11.1 if語句23
1.11.2 for循環25
1.12 創建代碼塊26
1.13 分號和語句的位置27
1.14 關於縮進28
1.15 Java關鍵字30
1.16 Java中的標識符30
1.17 Java類庫31
1.18 習題32
第2章 數據類型和運算符34
2.1 為什麼數據類型很重要34
2.2 Java的基本數據類型34
2.2.1 整數35
2.2.2 浮點類型36
2.2.3 字符37
2.2.4 布爾類型38
2.3 字麵量40
2.3.1 十六進製、八進製和二進製字麵量41
2.3.2 轉義字符序列41
2.3.3 字符串字麵量42
2.4 深入解析變量43
2.4.1 初始化變量43
2.4.2 動態初始化44
2.5 變量的作用域和生命周期44
2.6 運算符47
2.7 算術運算符47
2.8 關係運算符和邏輯運算符49
2.9 具有“短路”功能的邏輯運算符50
2.10 賦值運算符52
2.11 速記賦值運算符53
2.12 賦值中的類型轉換53
2.13 使用強製類型轉換55
2.14 運算符的優先級56
2.15 錶達式58
2.15.1 錶達式中的類型轉換58
2.15.2 空白和圓括號60
2.16 習題60
第3章 程序控製語句63
3.1 從鍵盤輸入字符63
3.2 if語句65
3.3 嵌套的if語句66
3.4 if-else-if梯隊67
3.5 switch語句68
3.6 嵌套的switch語句71
3.7 for循環74
3.8 for循環中的一些特殊情況76
3.8.1 缺少部分76
3.8.2 無限循環77
3.8.3 沒有循環體的循環78
3.9 在for語句內部聲明循環控製變量78
3.10 增強的for循環79
3.11 while循環80
3.12 do-while循環81
3.13 使用break語句退齣循環86
3.14 像使用goto語句一樣使用break語句88
3.15 使用continue語句91
3.16 嵌套的循環96
3.17 習題97
第4章 類、對象和方法初探100
4.1 類的基礎知識100
4.1.1 類的一般形式101
4.1.2 定義類101
4.2 如何創建對象104
4.3 變量引用和賦值語句105
4.4 方法106
4.5 從方法返迴108
4.6 返迴值109
4.7 使用形參111
4.8 構造函數119
4.9 含有形參的構造函數120
4.10 new運算符再探123
4.11 垃圾迴收和終結器123
4.12 使用this關鍵字126
4.13 習題128
第5章 更多數據類型和運算符131
5.1 數組131
5.2 多維數組136
5.2.1 二維數組136
5.2.2 不規則數組137
5.2.3 三維或多維數組139
5.2.4 初始化多維數組139
5.3 其他聲明數組的語法140
5.4 對數組的引用賦值141
5.5 使用成員length142
5.6 for-each風格的for循環149
5.6.1 遍曆多維數組152
5.6.2 應用增強for循環153
5.7 字符串154
5.7.1 構造字符串154
5.7.2 操作字符串155
5.7.3 字符串數組156
5.7.4 字符串是不可改變的157
5.7.5 使用字符串控製switch語句158
5.8 使用命令行參數159
5.9 按位運算161
5.9.1 按位與、按位或、按位異或、按位非運算符161
5.9.2 移位運算符165
5.9.3 位速記賦值運算符167
5.10 問號運算符170
5.11 習題171
第6章 深入解析類和方法174
6.1 控製對類成員的訪問174
6.2 嚮方法傳遞對象180
6.3 如何傳遞實參181
6.4 返迴對象183
6.5 重載方法185
6.6 重載構造函數189
6.7 遞歸195
6.8 理解關鍵字static199
6.8.1 靜態變量199
6.8.2 靜態方法201
6.8.3 靜態代碼塊203
6.9 嵌套類和內部類207
6.10 長度可變的實參vararg210
6.10.1 vararg基礎210
6.10.2 重載varargs方法213
6.10.3 vararg和二義性214
6.11 習題215
第7章 繼承220
7.1 繼承基礎220
7.2 成員訪問和繼承223
7.3 構造函數和繼承226
7.4 用super關鍵字調用超類的構造函數227
7.5 用super關鍵字訪問超類成員232
7.6 創建多層層次結構235
7.7 執行構造函數的時機238
7.8 超類引用與子類對象239
7.9 方法重寫244
7.10 用重寫方法支持多態246
7.11 為什麼要重寫方法248
7.12 使用抽象類252
7.13 使用final關鍵字256
7.13.1 用final關鍵字防止方法重寫256
7.13.2 用final關鍵字防止繼承257
7.13.3 對數據成員使用final關鍵字257
7.14 Object類258
7.15 習題259
第8章 接口261
8.1 接口的基礎知識261
8.2 創建接口262
8.3 實現接口263
8.4 使用接口引用266
8.5 實現多個接口268
8.6 接口中的常量276
8.7 可擴展的接口277
8.8 嵌套的接口278
8.9 關於接口的最後思考279
8.10 習題279
第9章 包281
9.1 包的基礎知識281
9.1.1 定義包282
9.1.2 尋找包與環境變量CLASSPATH282
9.1.3 一個短小的包例子283
9.2 包與成員訪問284
9.2.1 一個包訪問的例子285
9.2.2 受保護的成員287
9.3 導入包289
9.4 靜態導入293
9.5 習題295
第10章 異常處理298
10.1 異常層次結構298
10.2 異常處理基礎299
10.2.1 使用關鍵字try和catch299
10.2.2 一個簡單的異常處理例子300
10.3 未捕獲異常的後果302
10.4 異常可以優雅地處理錯誤303
10.5 使用多個catch子句305
10.6 捕獲子類異常306
10.7 嵌套的try塊307
10.8 拋齣異常309
10.9 進一步解讀Throwable類311
10.10 使用finally塊312
10.11 使用throws關鍵字314
10.12 Java的內置異常315
10.13 JDK 7中新添加的異常特性317
10.14 創建異常子類319
10.15 習題325
第11章 使用輸入/輸齣329
11.1 Java的輸入/輸齣是建立在流上的330
11.2 字節流和字符流330
11.3 字節流類330
11.4 字符流類331
11.5 預定義的流331
11.6 使用字節流332
11.6.1 讀控製颱輸入333
11.6.2 寫控製颱輸齣334
11.7 使用字節流讀寫文件335
11.7.1 從文件中輸入335
11.7.2 寫文件339
11.8 自動關閉文件340
11.9 讀寫二進製數據343
11.10 隨機訪問文件347
11.11 使用Java字符流350
11.11.1 用控製颱獲得字符流輸入351
11.11.2 使用字符流進行控製颱輸齣353
11.12 使用字符流進行文件輸入/輸齣354
11.12.1 使用FileWriter類355
11.12.2 使用FileReader類356
11.12.3 File類357
11.12.4 獲得文件屬性357
11.12.5 獲得目錄列錶359
11.12.6 使用FilenameFilter接口360
11.12.7 listFiles()方法361
11.12.8 多種文件實用方法361
11.13 使用Java的類型包裝器來轉換數值字符串363
11.14 習題371
第12章 多綫程編程375
12.1 多綫程基礎375
12.2 Thread類和Runnable接口376
12.3 創建綫程376
12.4 創建多個綫程384
12.5 判定綫程終止的時間386
12.6 綫程的優先級389
12.7 同步390
12.8 使用同步方法390
12.9 synchronized語句393
12.10 使用方法notify()、wait()和notifyAll()進行綫程通信396
12.11 綫程掛起、恢復和終止402
12.12 習題406
第13章 枚舉、自動裝箱和注解410
13.1 枚舉410
13.2 Java的枚舉是類類型413
13.3 values()方法和valueOf()方法413
13.4 構造函數、方法、實例變量和枚舉415
13.5 從Enum類繼承枚舉416
13.6 自動裝箱423
13.6.1 類型包裝器和裝箱424
13.6.2 自動裝箱基礎425
13.6.3 裝箱與方法426
13.6.4 錶達式中的自動裝箱和自動拆箱427
13.6.5 警告429
13.7 注解(元數據)430
13.7.1 創建和使用注解430
13.7.2 內置注解431
13.8 習題432
第14章 泛型436
14.1 泛型基礎436
14.1.1 一個簡單的泛型例子437
14.1.2 泛型隻能用於對象440
14.1.3 基於不同類型實參的不同泛型類型440
14.1.4 有兩個類型形參的泛型類441
14.1.5 泛型類的一般形式442
14.2 有界的類型443
14.3 使用有通配符的實參446
14.4 有界的通配符449
14.5 泛型方法452
14.6 泛型構造函數454
14.7 泛型的類層次結構454
14.8 泛型接口458
14.9 原始類型和遺留代碼464
14.10 帶有菱形運算符的類型推斷467
14.11 清除468
14.12 二義性錯誤469
14.13 泛型的一些限製470
14.13.1 不能實例化類型形參470
14.13.2 對靜態成員的限製470
14.13.3 泛型數組的限製470
14.13.4 泛型異常的限製471
14.14 習題472
第15章 applet與剩餘的Java關鍵字475
15.1 applet基礎475
15.2 applet的完整骨架478
15.3 applet的初始化和終止479
15.4 applet架構的關鍵點480
15.5 請求重繪480
15.6 使用狀態窗口485
15.7 嚮applet傳遞形參486
15.8 剩餘的Java關鍵字488
15.8.1 修飾符volatile488
15.8.2 修飾符transient488
15.8.3 關鍵字instanceof488
15.8.4 關鍵字strictfp489
15.8.5 關鍵字assert489
15.8.6 原生方法489
15.9 習題491
第16章 麵嚮對象設計介紹493
16.1 優雅的軟件及其重要性493
16.2 優雅的方法496
16.2.1 命名約定497
16.2.2 方法的內聚497
16.2.3 形式良好的對象499
16.2.4 內部文檔500
16.2.5 外部文檔501
16.3 優雅的類503
16.3.1 類的內聚和專傢模式503
16.3.2 避免重復505
16.3.3 完整的接口507
16.3.4 設計時要考慮變化507
16.3.5 最少知識原則510
16.4 繼承與委托的比較511
16.4.1 UML類圖512
16.4.2 從代碼重用的角度看513
16.4.3 is-a關係514
16.4.4 類似的行為516
16.4.5 多態518
16.4.6 繼承的代價519
16.5 設計模式521
16.5.1 適配者模式522
16.5.2 觀察者模式525
16.6 習題529
第二部分 利用Swing工具箱進行GUI編程
第17章 Swing基礎534
17.1 Swing的起源和設計理念534
17.2 組件和容器536
17.2.1 組件536
17.2.2 容器537
17.2.3 頂級容器窗格537
17.3 布局管理器538
17.4 第一個簡單的Swing程序539
17.5 事件處理544
17.5.1 事件544
17.5.2 事件源544
17.5.3 事件偵聽器545
17.5.4 事件類和偵聽器接口545
17.5.5 適配器類546
17.6 使用按鈕547
17.7 JTextField類介紹554
17.8 使用匿名內部類來處理事件564
17.9 習題565
第18章 探索Swing控件567
18.1 JLabel類和ImageIcon類567
18.2 Swing按鈕570
18.2.1 處理動作事件571
18.2.2 處理項事件571
18.2.3 JButton類572
18.2.4 JToggleButton類574
18.2.5 復選框576
18.2.6 單選按鈕579
18.3 JTextField類581
18.4 JScrollPane類590
18.5 JList類597
18.6 JComboBox類601
18.7 樹603
18.8 JTable類606
18.9 模型簡介609
18.10 習題609
第19章 使用菜單612
19.1 菜單基礎612
19.2 JMenuBar類、JMenu類和JMenuItem類概覽613
19.2.1 JMenuBar類613
19.2.2 JMenu類614
19.2.3 JMenuItem類615
19.3 創建主菜單616
19.4 為菜單項添加助記鍵和快捷鍵620
19.5 為菜單項添加圖像和工具提示622
19.6 使用JRadioButtonMenuItem類和JCheckBoxMenuItem類629
19.7 習題632
第20章 對話框634
20.1 JOptionPane類634
20.2 showMessageDialog()方法636
20.3 showConfirmDialog()方法640
20.4 showInputDialog()方法644
20.5 showOptionDialog()方法648
20.6 JDialog類652
20.7 創建無模式的對話框656
20.8 用JFileChooser類選擇文件657
20.9 習題667
第21章 綫程、applet和繪圖670
21.1 Swing中的多綫程670
21.2 使用Timer類676
21.3 創建Swing的applet681
21.4 繪圖689
21.4.1 繪圖基礎689
21.4.2 圖形上下文689
21.4.3 計算可繪圖區域690
21.4.4 請求繪圖691
21.4.5 繪圖的例子691
21.5 習題695
第三部分 暢遊Java API庫
第22章 處理字符串698
22.1 字符串的基礎知識698
22.2 字符串的構造函數699
22.3 三個與字符串有關的語言特性701
22.3.1 字符串字麵量701
22.3.2 字符串拼接702
22.3.3 字符串與其他數據類型拼接702
22.3.4 重寫toString()方法703
22.4 length()方法707
22.5 獲得字符串中的字符708
22.5.1 charAt()方法708
22.5.2 getChars()方法708
22.5.3 toCharArray()方法709
22.6 字符串比較710
22.6.1 equals()方法和equalsIgnoreCase()方法710
22.6.2 equals()方法與“==”運算符的比較711
22.6.3 regionMatches()方法712
22.6.4 startsWith()方法和endsWith()方法712
22.6.5 compareTo()方法和compareToIgnoreCase()方法713
22.7 使用indexOf()方法和lastIndexOf()方法715
22.8 獲得修改的字符串716
22.8.1 substring()方法716
22.8.2 replace()方法718
22.8.3 trim()方法719
22.9 改變字符串中字符的大小寫720
22.10 StringBuffer類和StringBuilder類722
22.11 習題723
第23章 探索java.lang包725
23.1 基本類型包裝器726
23.1.1 Number類726
23.1.2 Double類和Float類726
23.1.3 Byte類、Short類、Integer類和Long類728
23.1.4 Character類731
23.1.5 Boolean類734
23.1.6 自動裝箱和類型包裝器734
23.2 Math類735
23.3 Process類738
23.4 ProcessBuilder類738
23.5 Runtime類740
23.6 System類742
23.6.1 使用currentTimeMillis()方法測量程序執行的時間743
23.6.2 使用arraycopy()方法744
23.6.3 獲得屬性值744
23.6.4 重定嚮標準輸入流和標準輸齣流745
23.7 Object類746
23.8 Class類747
23.9 Enum類749
23.10 與綫程有關的類和Runnable接口749
23.11 其他類749
23.12 java.lang包中的接口750
23.12.1 Comparable接口750
23.12.2 Appendable接口752
23.12.3 Iterable接口752
23.12.4 Readable接口753
23.12.5 CharSequence接口753
23.12.6 AutoCloseable接口753
23.13 習題754
第24章 探索java.util包756
24.1 Locale類757
24.2 使用日期和時間760
24.2.1 Date類760
24.2.2 Calendar類和GregorianCalendar類761
24.3 用Formatter類格式化輸齣766
24.3.1 Formatter類的構造函數766
24.3.2 格式化基礎768
24.3.3 格式化字符串和字符769
24.3.4 格式化數字769
24.3.5 格式化日期和時間770
24.3.6 說明符%n和說明符%%772
24.3.7 指定最小的域寬度772
24.3.8 指定精度773
24.3.9 使用格式標誌774
24.3.10 大寫字母選項776
24.3.11 使用實參索引777
24.3.12 為不同的地區設置格式化778
24.3.13?關閉Formatter對象778
24.4 格式化和printf()方法781
24.5 Scanner類783
24.5.1?Scanner類的構造函數783
24.5.2?Scanner類的基礎知識783
24.5.3?Scanner類的例子785
24.5.4?Scanner類的其他特性789
24.6 Random類790
24.7 使用Observable類和Observer接口792
24.8 Timer類和TimerTask類795
24.9 其他混雜的應用類和接口797
24.10 習題798
第25章 使用集閤框架中的數據結構800
25.1 數據結構概覽800
25.1.1?棧和隊列801
25.1.2?鏈錶801
25.1.3?樹802
25.1.4?散列錶803
25.1.5?選擇數據結構803
25.2 集閤概覽804
25.3 集閤接口805
25.3.1?Collection接口806
25.3.2?List接口807
25.3.3?Set接口808
25.3.4?SortedSet接口809
25.3.5?NavigableSet接口809
25.3.6?Queue接口810
25.3.7?Deque接口811
25.4 集閤類813
25.4.1?ArrayList類814
25.4.2?LinkedList類817
25.4.3?HashSet類820
25.4.4?TreeSet類822
25.4.5?LinkedHashSet類824
25.4.6?ArrayDeque類825
25.4.7?PriorityQueue類827
25.5 通過迭代器訪問集閤828
25.5.1?使用迭代器829
25.5.2?用for-each風格的循環代替迭代器831
25.6 使用映射832
25.6.1?映射接口832
25.6.2?映射類835
25.7 比較器840
25.8 集閤算法842
25.9 Arrays類845
25.10 遺留類和遺留接口846
25.10.1?Enumeration接口846
25.10.2?Vector類846
25.10.3?Stack類846
25.10.4?Dictionary類846
25.10.5?Hashtable類846
25.10.6?Properties類847
25.11 習題847
第26章 使用java.net包進行網絡編程849
26.1 網絡基礎849
26.2 網絡類和網絡接口850
26.3 InetAddress類851
26.4 Socket類853
26.5 URL類856
26.6 URLConnection類858
26.7 HttpURLConnection類862
26.8 數據報865
26.8.1?DatagramSocket類865
26.8.2?DatagramPacket類865
26.8.3 數據報的例子866
26.9 習題869
第27章 並發實用工具870
27.1 並發API包871
27.1.1 java.util.concurrent包871
27.1.2 java.util.concurrent.atomic包872
27.1.3 java.util.concurrent.locks包872
27.2 使用同步對象872
27.2.1 Semaphore類872
27.2.2 CountDownLatch類876
27.2.3 CyclicBarrier類878
27.2.4 Exchanger類881
27.2.5 Phaser類883
27.3 使用執行器890
27.4 使用Callable接口和Future接口892
27.5 TimeUnit枚舉895
27.6 並發集閤896
27.7 鎖897
27.8 原子操作900
27.9 通過Fork/Join框架並行編程900
27.10 主要的Fork/Join類901
27.10.1 ForkJoinTask類901
27.10.2 RecursiveAction類902
27.10.3 RecursiveTask類902
27.10.4 ForkJoinPool類903
27.11 分治策略904
27.11.1 第一個簡單的Fork/Join示例904
27.11.2 理解並行度的影響906
27.11.3 使用RecursiveTask類的一個例子910
27.11.4 異步執行任務912
27.12 並發實用工具與Java的傳統方法的比較912
27.13 習題913
附錄A 使用Java文檔注釋915
附錄B 正則錶達式介紹921
附錄C 部分習題的參考答案928
· · · · · · (
收起)