圖書目錄
第1章緒論 1
1.1Java程式設計語言 1
1.1.1Java程式 2
1.1.2注釋 4
1.1.3標識符與保留字 5
1.1.4空白符 7
1.2程式開發 8
1.2.1程式設計語言分類 9
1.2.2編輯器、編譯器和
解釋器 10
1.2.3開發環境 12
1.2.4語法與語義 12
1.2.5錯誤 13
1.3問題求解 14
1.4軟體開發活動 15
1.5面向對象程式設計 16
1.5.1面向對象軟體原則 16
重要概念總結 19
術語總結 19
自測題 20
練習題 21
程式設計項目 21
自測題答案 23
第2章數據與表達式 24
2.1字元串 24
2.1.1print和println方法 24
2.1.2字元串連線 26
2.1.3轉義字元 28
2.2變數與賦值 30
2.2.1變數 30
2.2.2賦值語句 32
2.2.3常量 33
2.3基本數據類型 34
2.3.1整數與浮點數 34
2.3.2字元型 35
2.3.3布爾型 37
2.4表達式 37
2.4.2運算符優先權 38
2.4.3自增運算符與自減
運算符 41
2.5數據轉換 43
2.5.1轉換技術 44
2.6讀取輸入數據 45
2.6.1Scanner類 45
重要概念總結 48
術語總結 48
自測題 49
練習題 50
程式設計項目 51
自測題答案 52
第3章使用類和對象 54
3.1創建對象 54
3.1.1別名 56
3.2String類 57
3.3包 60
3.3.1import聲明 61
3.4Random類 62
3.5Math類 64
3.6格式化輸出 67
3.6.1NumberFormat類 67
3.6.2DecimalFormat類 68
3.6.3printf方法 70
3.7枚舉類型 70
3.8包裝類 72
3.8.1自動裝箱 74
重要概念總結 75
術語總結 75
自測題 75
練習題 76
程式設計項目 77
自測題答案 78
第4章條件與循環 80
4.1.1相等運算符和關係
運算符 81
4.2if語句 84
4.2.1if-else語句 86
4.2.2使用塊語句 88
4.2.4嵌套if語句 91
4.3比較數據 92
4.3.1比較浮點數 93
4.3.2比較字元 93
4.3.3比較對象 93
4.4switch語句 95
4.5while語句 98
4.5.1無限循環 102
4.5.2嵌套循環 103
4.5.3其他循環控制 106
4.6疊代器 106
4.6.1讀取文本檔案 107
4.7do語句 109
4.8for語句 111
4.8.1疊代器和for循環 115
4.8.2循環語句比較 115
重要概念總結 116
術語總結 116
自測題 117
練習題 117
程式設計項目 120
自測題答案 122
第5章編寫類 124
5.1重溫類和對象 124
5.1.1識別類和對象 125
5.1.2職責分配 126
5.2類的剖析 127
5.2.1實例數據 130
5.2.2UML類圖 131
5.3封裝 132
5.3.1可見性修飾符 133
5.3.2訪問器和更改器 134
5.4方法的剖析 138
5.4.1return語句 142
5.4.2參數 143
5.4.3本地數據 144
5.4.4重溫構造函式 145
5.5靜態類成員 145
5.5.1靜態變數 146
5.5.2靜態方法 146
5.6類關係 149
5.6.1依賴 149
5.6.2同一個類中對象間
的依賴 149
5.6.3聚合 151
5.6.4this引用 155
5.7方法設計 156
5.7.1方法分解 156
5.7.2重溫方法參數 160
5.8方法重載 163
5.9測試 165
5.9.1評審 166
5.9.2缺陷測試 166
5.9.3單元測試 167
5.9.4集成測試 167
5.9.5系統測試 168
5.9.6測試驅動開發 168
5.10調試 168
5.10.1使用print語句的
簡單調試 169
5.10.2調試的概念 169
重要概念總結 170
術語總結 171
自測題 172
練習題 173
程式設計項目 174
自測題答案 175
第6章圖形用戶界面 178
6.1GUI元素 178
6.1.1框架和面板 179
6.1.2按鈕和動作事件 182
6.1.3確定事件源 183
6.2 更多組件 186
6.2.1 文本框 186
6.2.2 複選框 188
6.2.3 單選按鈕 191
6.2.4 滑塊 194
6.2.5 下拉框 197
6.2.6 定時器 201
6.3 布局管理器 204
6.3.1 流式布局管理器 207
6.3.2 邊界布局管理器 208
6.3.3 格線布局管理器 210
6.3.4 盒式布局管理器 212
6.3.5 容器的層次結構 214
6.4 滑鼠事件和按鍵事件 214
6.4.1 滑鼠事件 214
6.4.2 按鍵事件 220
6.4.3 擴展適配器類 224
6.5 對話框 224
6.5.1 檔案選擇器 226
6.5.2 顏色選擇器 228
6.6 一些重要細節 228
6.6.1 工具提示和助記符 231
6.7 GUI設計 236
重要概念總結 236
術語總結 237
自測題 238
練習題 239
程式設計項目 240
自測題答案 241
第7章 數組 243
7.1 數組元素 243
7.2 數組的聲明與使用 244
7.2.1 邊界檢查 246
7.2.2 數組的其他語法 250
7.2.3 初始化列表 251
7.2.4 數組作為參數 252
7.3 對象數組 252
7.4 命令行參數 260
7.5 變長參數列表 261
7.6 二維數組 264
7.6.1 多維數組 267
重要概念總結 268
術語總結 268
自測題 269
練習題 269
程式設計項目 270
自測題答案 272
第8章 繼承 273
8.1 創建子類 273
8.1.1 受保護的修飾符 277
8.1.2 super引用 278
8.1.3 多重繼承 281
8.2 方法重寫 281
8.2.1 影子變數 284
8.3 類的層次結構 284
8.3.1 對象類 285
8.3.2 抽象類 286
8.4 可見性 288
8.5 設計繼承 290
8.5.1 限制繼承 291
重要概念總結 291
術語總結 292
自測題 292
練習題 292
程式設計項目 293
自測題答案 294
第9章 多態 295
9.1 動態綁定 295
9.2 使用繼承實現多態 296
9.3 接口 305
9.3.1 接口的層次結構 309
9.3.2 Comparable接口 310
9.3.3 Iterator接口 310
9.4 通過接口實現多態 310
9.4.1 事件處理 312
重要概念總結 313
術語總結 313
自測題 314
練習題 314
程式設計項目 314
自測題答案 315
第10章 異常 317
10.1 異常處理 317
10.2 不捕獲異常 318
10.3 try-catch語句 319
10.3.1 finally子句 321
10.4 異常傳播 322
10.5 異常類的層次結構 325
10.5.1 受檢查和不受檢查
的異常 327
10.6 I/O異常 327
重要概念總結 331
術語總結 331
自測題 332
練習題 332
程式設計項目 332
自測題答案 333
第11章 算法分析 334
11.1 算法效率 334
11.2 增長函式和大O符號 335
11.3 增長函式的比較 337
11.4 確定時間複雜度 338
11.4.1 分析循環的執行 338
11.4.2 嵌套循環 339
11.4.3 方法調用 340
重要概念總結 341
術語總結 342
自測題 342
練習題 342
自測題答案 343
第12章 集合 344
12.1 集合概述 344
12.1.1 抽象數據類型 345
12.1.2 Java Collections
API 346
12.2 棧集合 347
12.3 至關重要的OO概念 348
12.3.1 繼承與多態 349
12.3.2 泛型 349
12.4 使用棧計算後綴表達式 350
12.4.1 Javadoc 356
12.5 異常 357
12.6 棧ADT 357
12.7 用數組實現棧 360
12.7.1 容量管理 361
12.8 ArrayStack類 361
12.8.1 構造函式 362
12.8.2 push操作 364
12.8.3 pop操作 365
12.8.4 peek操作 366
12.8.5 其他操作 366
12.8.6 EmptyCollectionException
?類 366
12.8.7 其他實現 367
重要概念總結 367
術語總結 368
自測題 368
練習題 369
程式設計項目 370
自測題答案 370
第13章 鏈式結構 372
13.1 引用作為鏈 372
13.2 管理鍊表 374
13.2.1 訪問元素 374
13.2.2 插入節點 375
13.2.3 刪除節點 375
13.3 無元素的鍊表 376
13.3.1 雙向鍊表 377
13.4 Java API中的棧 377
13.5 使用Stacks:遍歷迷宮 377
13.6 實現棧:使用鍊表 385
13.6.1 LinkedStack類 385
13.6.2 push操作 388
13.6.3 pop操作 389
13.6.4 其他操作 390
重要概念總結 390
術語總結 391
自測題 391
練習題 391
程式設計項目 392
自測題答案 392
第14章 佇列 394
14.1 佇列的概念 394
14.2 Java API中的佇列 395
14.3 使用佇列:密鑰 396
14.4 使用佇列:模擬票務櫃檯 399
14.5 佇列ADT 403
14.6 佇列的鏈式實現 404
14.6.1 enqueue操作 406
14.6.2 dequeue操作 406
14.6.3 其他操作 408
14.7 使用數組實現佇列 408
14.7.1 enqueue操作 412
14.7.2 dequeue操作 413
14.7.3 其他操作 414
14.8 雙端佇列 414
重要概念總結 414
術語總結 415
自測題 415
練習題 415
程式設計項目 416
自測題答案 417
第15章 列表 418
15.1 列表集合 418
15.2 Java Collections API中的
列表 420
15.3 使用無序列表:學位課程 421
15.4 使用索引列表:Josephus 429
15.5 列表ADT 431
15.5.1 向列表添加元素 432
15.6 用數組實現列表 436
15.6.1 remove操作 437
15.6.2 contain操作 439
15.6.3 有序列表的add
操作 440
15.6.4 特定於無序列表的
操作 441
15.6.5 無序列表的addAfter
操作 441
15.7 用鍊表實現列表 442
15.7.1 remove操作 443
重要概念總結 444
術語總結 444
自測題 445
練習題 445
程式設計項目 446
自測題答案 447
第16章 疊代器 448
16.1 什麼是疊代器 448
16.1.1 疊代器的其他
問題 450
16.2 使用疊代器:重溫學位
課程 450
16.2.1 列印指定課程 454
16.2.2 刪除課程 455
16.3 使用數組實現疊代器 456
16.4 使用鍊表實現疊代器 458
重要概念總結 460
術語總結 460
自測題 460
練習題 460
自測題答案 461
第17章 遞歸 462
17.1 遞歸思想 462
17.1.1 無限遞歸 463
17.1.2 數學中的遞歸 463
17.2 遞歸編程 464
17.2.1 遞歸與疊代 466
17.2.2 直接遞歸與間接
遞歸 467
17.3 使用遞歸 467
17.3.1 穿越迷宮 467
17.3.2 漢諾塔 474
17.4 遞歸算法分析 477
重要概念總結 479
術語總結 479
自測題 479
練習題 480
程式設計項目 480
自測題答案 481
第18章 搜尋與排序 483
18.1 搜尋 483
18.1.1 靜態方法 484
18.1.2 泛型方法 484
18.1.3 線性搜尋 485
18.1.4 二分搜尋 486
18.1.5 搜尋算法比較 488
18.2 排序 489
18.2.1 選擇排序 491
18.2.2 插入排序 493
18.2.3 冒泡排序 494
18.2.4 快速排序 496
18.2.5 合併排序 499
18.3 基數排序 501
18.4 排序效率和執行緒 505
18.4.1 執行緒 505
18.4.2 排序比較的演示 506
18.5 排序比較器的不同方式 517
重要概念總結 522
術語總結 523
自測題 523
練習題 524
程式設計項目 525
自測題答案 525
第19章 樹 527
19.1 樹的定義 527
19.1.1 樹分類 528
19.2 實現樹的策略 529
19.2.1 樹的數組實現的
計算策略 530
19.2.2 樹的數組實現的
模擬鏈式策略 530
19.2.3 樹的分析 531
19.3 樹的遍歷 532
19.3.1 前序遍歷 532
19.3.2 中序遍歷 533
19.3.3 後序遍歷 533
19.3.4 層序遍歷 534
19.4 二叉樹ADT 534
19.5 使用二叉樹:表達式樹 537
19.6 背痛分析儀 547
19.7 使用鍊表實現二叉樹 552
19.7.1 find方法 556
19.7.2 iteratorInOrder
方法 557
重要概念總結 558
術語總結 558
自測題 559
練習題 560
程式設計項目 560
自測題答案 561
第20章 二叉搜尋樹 562
20.1 二叉搜尋樹概述 562
20.1.1 向二叉搜尋樹添加
元素 563
20.1.2 刪除二叉搜尋樹中
的元素 564
20.2 實現二叉搜尋樹 566
20.3 用鍊表實現二叉搜尋樹 568
20.3.1 addElement操作 569
20.3.2 removeElement
操作 571
20.3.3 removeAllOccurrences
操作 573
20.3.4 removeMin操作 574
20.3.5 用數組實現二叉
搜尋樹 575
20.4 使用二叉搜尋樹實現有序
列表 575
20.4.1 BinarySearchTreeList
實現分析 578
20.5 平衡二叉搜尋樹 579
20.5.1 右旋 580
20.5.2 左旋 580
20.5.3 右左旋 581
20.5.4 左右旋 581
20.6 實現二叉搜尋樹:AVL樹 582
20.6.1 AVL樹的右旋 582
20.6.2 AVL樹中的左旋 583
20.6.3 AVL樹中的
右左旋 583
20.6.4 AVL樹中的
左右旋 583
20.7 實現二叉搜尋樹:紅/黑樹 584
20.7.1 紅/黑樹中的插入
元素 585
20.7.2 從紅/黑樹中刪除
元素 587
重要概念總結 589
術語總結 589
自測題 590
練習題 590
程式設計項目 591
自測題答案 591
第21章 堆與優先佇列 593
21.1 堆 593
21.1.1 addElement操作 595
21.1.2 removeMin操作 596
21.1.3 findMin 操作 597
21.2 堆的套用:優先權佇列 597
21.3 用鍊表實現堆 600
21.3.1 addElement 操作 601
21.3.2 removeMin操作 604
21.3.3 findMin操作 606
21.4 用數組實現堆 606
21.4.1 addElement操作 608
21.4.2 removeMin操作 609
21.4.3 findMin操作 611
21.5 堆的套用:堆排序 611
重要概念總結 612
術語總結 613
自測題 613
練習題 614
程式設計項目 614
自測題答案 615
第22章 集與映射 616
22.1 集與映射集合 616
22.2 Java API中的集與映射 617
22.3 Set的套用:域攔截器 619
22.4 Map的套用:產品銷售 621
22.5 Map的套用:用戶管理 625
22.6 使用樹實現Set和Map 629
22.7 使用散列實現Set和Map 629
重要概念總結 631
術語總結 632
自測題 632
練習題 632
程式設計項目 633
自測題答案 633
第23章 多路搜尋樹 634
23.1 組合樹的概念 634
23.2 2-3樹 634
23.2.1 將元素插入2-3
樹 635
23.2.2 從2-3樹中刪除
元素 637
23.3 2-4樹 639
23.4 B-樹 640
23.4.1 B*-樹 642
23.4.2 B+-樹 642
23.4.3 B-樹分析 642
23.5 B-樹的實現策略 643
重要概念總結 643
術語總結 644
自測題 644
練習題 645
程式設計項目 645
自測題答案 645
第24章 圖 647
24.1 無向圖 647
24.2 有向圖 649
24.3 網路 650
24.4 常用的圖算法 651
24.4.1 遍歷 651
24.4.2 測試連通性 654
24.4.3 最小生成樹 655
24.4.4 確定最短路徑 658
24.5 實現圖的策略 658
24.5.1 鄰接表 659
24.5.2 鄰接矩陣 659
24.6 用鄰接矩陣實現無向圖 660
24.6.1 addEdge方法 663
24.6.2 addVertex方法 664
24.6.3 expandCapacity
方法 665
24.6.4 其他方法 665
重要概念總結 665
術語總結 666
自測題 666
練習題 667
程式設計項目 667
自測題答案 668
第25章 資料庫 669
25.1 資料庫簡介 669
25.2 建立與資料庫的連線 671
25.2.1 獲取資料庫驅動
程式 671
25.3 創建與更改資料庫表 673
25.3.1 創建表 673
25.3.2 更改表 674
25.3.3 刪除列 675
25.4 查詢資料庫 675
25.4.1 顯示列 676
25.5 數據的插入、瀏覽與更新 677
25.5.1 插入 678
25.5.2 SELECT-FROM 679
25.5.3 更新 683
25.6 刪除數據和資料庫表 684
25.6.1 刪除數據 684
25.6.2 刪除資料庫表 684
重要概念總結 685
自測題 685
練習題 685
程式設計項目 686
自測題答案 687
第26章 JavaFX 688
26.1 JavaFX簡介 688
26.2 JavaFX的Hello World
程式 689
26.3 使用JavaFX Scene Builder 691
26.3.1 創建應用程式
項目 692
26.3.2 瀏覽項目檔案 693
26.3.3 使用JavaFX Scene
Builder修改GUI 695
26.4 JavaFX中的事件處理 696
重要概念總結 700
自測題 700
程式設計項目 700
自測題答案 701
附錄A 辭彙表 702
附錄B 數系 725
B.1 位值 725
B.2 基數大於10 726
B.3 轉換 728
B.4 快捷轉換 729
練習題 730
附錄C Unicode字元集 733
附錄D Java運算符 735
附錄E Java修飾符 739
附錄F Java圖形 741
F.1 坐標系 741
F.2 表示顏色 741
F.3 繪圖 742
F.4 多邊形和折線 749
F.5 Polygon類 751
練習 752
程式設計項目 752
附錄G Java小程式 754
G.1 在HTML中嵌入Applet 755
G.2 更多的Applet方法 756
G.3 小程式中的GUI 759
程式設計項目 765
附錄H 正則表達式 766
附錄I 散列 767
I.1 散列概述 767
I.2 散列函式 769
I.2.1 除留餘數法 769
I.2.2 摺疊法 769
I.2.3 平方取中法 770
I.2.4 基數轉換法 770
I.2.5 數字分析法 770
I.2.6 長度依賴法 771
I.2.7 Java語言中的散列
函式 771
I.3 解決衝突 771
I.3.1 連結法 771
I.3.2 開放定址法 773
I.4 刪除散列表元素 775
I.4.1 從連結實現中刪除
元素 775
I.4.2 從開放定址實現中
刪除 776
I.5 Java Collections API中的
散列表 776
I.5.1 Hashtable類 777
I.5.2 HashSet類 778
I.5.3 HashMap類 779
I.5.4 IdentityHashMap類 780
I.5.5 WeakHashMap類 781
I.5.6 LinkedHashSet和
LinkedHashMap 782
重要概念 783
自測題 783
練習 784
程式設計項目 784
自測題答案 785