本書是一本Java 編程方面的優(yōu)秀教材,秉承Deitel系列叢書的一貫特點:內(nèi)容豐富、覆蓋面廣,提供詳細(xì)代碼與實例研究,總結(jié)出大量的面向?qū)ο缶幊碳记珊徒?jīng)驗。本書詳細(xì)說明了在Java 中面向?qū)ο缶幊痰幕纠碚摷皩嵱弥R,以初學(xué)者為起點,由點到面、由淺入深、循序漸進地介紹了對象、繼承、多態(tài)、接口、異常處理、JavaFX GUI、數(shù)據(jù)結(jié)構(gòu)和集合、lambda與流、遞歸、搜索與排序、并發(fā)性、JDBC、JavaFX與多媒體、JShell 等,并且詳細(xì)介紹了網(wǎng)絡(luò)應(yīng)用的開發(fā)與實踐。第十一版在前一版的基礎(chǔ)上增加了更多的實際案例,更新了很多內(nèi)容,有助于讀者學(xué)習(xí)和借鑒。本書包括更廣泛的教學(xué)特性,其中列舉了數(shù)百個可實際使用的程序,并給出了運行結(jié)果,可以使學(xué)生在學(xué)習(xí)時更為直觀。
Paul Deitel,Deitel & Associates公司CEO兼CTO,具有超過35年計算機行業(yè)的工作經(jīng)驗,畢業(yè)于麻省理工學(xué)院。他擁有Java Certified Programmer和Java Certified Developer認(rèn)證證書,并且被授予Oracle Java Champion稱號。通過Deitel & Associates公司,他向行業(yè)客戶提供了數(shù)以百計的編程課程,這些客戶包括:Cisco,IBM, Siemens,Sun Microsystems(現(xiàn)在屬于Oracle),Dell,F(xiàn)idelity,NASA肯尼迪航天中心,美國國家風(fēng)暴實驗室,白沙導(dǎo)彈基地,Rogue Wave Software,Boeing,SunGard Higher Education,Nortel Networks,Puma,iRobot,Invensys,等等。他和合作者Harvey Deitel博士,是全球暢銷的編程語言教材和專業(yè)圖書/視頻產(chǎn)品的作者。Harvey Deitel博士,Deitel & Associates公司主席兼首席戰(zhàn)略官,具有55年以上的計算機行業(yè)工作經(jīng)驗。Deitel博士在麻省理工學(xué)院獲得電子工程學(xué)士和碩士學(xué)位,在波士頓大學(xué)獲得數(shù)學(xué)博士學(xué)位——在將計算機科學(xué)專業(yè)從這些專業(yè)分離出去之前,Deitel博士已經(jīng)學(xué)習(xí)過計算機知識。他具有豐富的大學(xué)教學(xué)經(jīng)驗,在與兒子Paul于1991年創(chuàng)立Deitel & Associates公司之前,Deitel博士是波士頓大學(xué)計算機科學(xué)系主任并獲得了終身教職。他們的出版物已經(jīng)贏得了國際聲譽,并被翻譯成了日文、德文、俄文、西班牙文、法文、波蘭文、意大利文、簡體中文、繁體中文、韓文、葡萄牙文、希臘文、烏爾都文和土耳其文。Deitel博士為許多大公司、學(xué)術(shù)機構(gòu)、政府部門和軍隊提供了數(shù)百場的專業(yè)編程培訓(xùn)。
張永健,國際關(guān)系學(xué)院副教授,畢業(yè)于北京郵電大學(xué),專業(yè)為通信、計算機,目前從事網(wǎng)絡(luò)及信息安全、移動互聯(lián)網(wǎng)安全技術(shù)、大數(shù)據(jù)及多媒體安全等研究方向,并教授計算機安全等相關(guān)課程。
目 錄
第1章 計算機、Internet與Java簡介 1
1.1 簡介 2
1.2 硬件和軟件 3
1.3 數(shù)據(jù)層次 4
1.4 機器語言、匯編語言和高級語言 6
1.5 對象技術(shù)介紹 7
1.6 操作系統(tǒng) 9
1.7 編程語言 11
1.8 Java 12
1.9 典型的Java開發(fā)環(huán)境 12
1.10 測試驅(qū)動的Java應(yīng)用 15
1.11 Internet和WWW 17
1.12 軟件技術(shù) 19
1.13 Java問題解答 20
自測題 20
自測題答案 21
練習(xí)題 21
挑戰(zhàn)題 22
第2章 Java應(yīng)用介紹、輸入/輸出、運算符 23
2.1 簡介 23
2.2 第一個Java程序:輸出一行文本 24
2.3 修改第一個Java程序 28
2.4 使用printf顯示文本 29
2.5 另一個Java程序:整數(shù)相加 30
2.6 內(nèi)存概念 33
2.7 算術(shù)運算 34
2.8 判斷:相等性和關(guān)系運算符 36
2.9 小結(jié) 39
總結(jié) 39
自測題 41
自測題答案 42
練習(xí)題 44
挑戰(zhàn)題 47
第3章 類、對象、方法與String簡介 48
3.1 簡介 48
3.2 實例變量、set方法和get方法 49
3.3 Account類:使用構(gòu)造方法初始化對象 56
3.4 包含浮點數(shù)余額的Account類 58
3.5 基本類型與引用類型的比較 61
3.6 (選修)GUI與圖形實例:一個簡單的GUI 62
3.7 小結(jié) 67
總結(jié) 67
自測題 70
自測題答案 71
練習(xí)題 71
挑戰(zhàn)題 72
第4章 控制語句(1)及賦值、++與- -運算符 73
4.1 簡介 73
4.2 算法 74
4.3 偽代碼 74
4.4 控制結(jié)構(gòu) 74
4.5 if單選擇語句 76
4.6 if...else雙選擇語句 77
4.7 Student類:嵌套if...else語句 79
4.8 while循環(huán)語句 81
4.9 形成算法:計數(shù)器控制循環(huán) 82
4.10 形成算法:標(biāo)記控制循環(huán) 85
4.11 形成算法:嵌套控制語句 90
4.12 復(fù)合賦值運算符 93
4.13 增量運算符和減量運算符 94
4.14 基本類型 96
4.15 (選修)GUI與圖形實例:事件處理、畫線 96
4.16 小結(jié) 104
總結(jié) 104
自測題 107
自測題答案 108
練習(xí)題 109
挑戰(zhàn)題 113
第5章 控制語句(2)及邏輯運算符 115
5.1 簡介 115
5.2 計數(shù)器控制循環(huán)的實質(zhì) 116
5.3 for循環(huán)語句 116
5.4 使用for語句的示例 119
5.5 do...while循環(huán)語句 122
5.6 switch多選擇語句 123
5.7 AutoPolicy類實例:switch語句中的字符串 127
5.8 break和continue語句 130
5.9 邏輯運算符 131
5.10 結(jié)構(gòu)化編程小結(jié) 135
5.11 (選修)GUI與圖形實例:繪制矩形和橢圓 138
5.12 小結(jié) 141
總結(jié) 141
自測題 143
自測題答案 144
練習(xí)題 145
挑戰(zhàn)題 148
第6章 方法:深入探究 149
6.1 簡介 149
6.2 Java中的程序單元 150
6.3 靜態(tài)方法、靜態(tài)字段和Math類 151
6.4 聲明多參數(shù)方法 152
6.5 關(guān)于聲明與使用方法的說明 155
6.6 方法調(diào)用棧與活動記錄 156
6.7 實參提升與強制轉(zhuǎn)換 157
6.8 Java API包 158
6.9 案例分析:安全的隨機數(shù)生成方法 159
6.10 案例分析:機會游戲與enum類型 162
6.11 聲明的作用域 165
6.12 方法重載 167
6.13 (選修)GUI與圖形實例:顏色和填充圖形 169
6.14 小結(jié) 171
總結(jié) 171
自測題 174
自測題答案 175
練習(xí)題 176
挑戰(zhàn)題 180
第7章 數(shù)組與ArrayList 181
7.1 簡介 182
7.2 數(shù)組 182
7.3 聲明和創(chuàng)建數(shù)組 183
7.4 數(shù)組使用舉例 184
7.5 異常處理:處理不正確的反饋值 190
7.6 案例分析:模擬洗牌和發(fā)牌 191
7.7 增強型for語句 194
7.8 將數(shù)組傳入方法 195
7.9 按值傳遞與按引用傳遞 196
7.10 案例分析:GradeBook類用數(shù)組保存成績 197
7.11 多維數(shù)組 201
7.12 案例分析:使用二維數(shù)組的GradeBook類 203
7.13 變長實參表 207
7.14 使用命令行實參 208
7.15 Arrays類 210
7.16 集合和ArrayList類簡介 212
7.17 (選修)GUI與圖形實例:畫圓弧 214
7.18 小結(jié) 216
總結(jié) 216
自測題 219
自測題答案 219
練習(xí)題 220
拓展內(nèi)容:建立自己的計算機 227
挑戰(zhàn)題 231
第8章 類與對象:深入探究 233
8.1 簡介 233
8.2 Time類案例分析 234
8.3 對成員的訪問控制 237
8.4 用this引用訪問當(dāng)前對象的成員 237
8.5 Time類案例分析:重載構(gòu)造方法 239
8.6 默認(rèn)構(gòu)造方法與無實參構(gòu)造方法 243
8.7 set方法和get方法 243
8.8 組合 244
8.9 enum類型 246
8.10 垃圾回收 248
8.11 靜態(tài)類成員 249
8.12 靜態(tài)導(dǎo)入 251
8.13 final實例變量 252
8.14 包訪問 253
8.15 將BigDecimal用于精確的貨幣計算 254
8.16 (選修)GUI與圖形實例:使用包含圖形的對象 255
8.17 小結(jié) 258
總結(jié) 258
自測題 261
自測題答案 261
練習(xí)題 261
挑戰(zhàn)題 264
第9章 面向?qū)ο缶幊蹋豪^承 265
9.1 簡介 265
9.2 超類與子類 266
9.3 protected成員 267
9.4 超類與子類的關(guān)系 268
9.5 子類的構(gòu)造方法 282
9.6 Object類 283
9.7 比較組合和繼承的差異 283
9.8 小結(jié) 285
總結(jié) 285
自測題 286
自測題答案 286
練習(xí)題 286
第10章 面向?qū)ο缶幊蹋憾鄳B(tài)和接口 289
10.1 簡介 289
10.2 多態(tài)示例 290
10.3 演示多態(tài)行為 291
10.4 抽象類和抽象方法 293
10.5 案例分析:使用多態(tài)的工資系統(tǒng) 295
10.6 超類和子類變量之間允許的賦值 305
10.7 final方法和final類 305
10.8 分析從構(gòu)造方法調(diào)用方法時的問題 306
10.9 創(chuàng)建和使用接口 306
10.10 Java SE 8的接口強化 312
10.11 Java SE 9的私有接口方法 313
10.12 私有構(gòu)造方法 314
10.13 使用接口繼承而非實現(xiàn)繼承 314
10.14 (選修)GUI與圖形實例:利用多態(tài)性畫圖 316
10.15 小結(jié) 317
總結(jié) 318
自測題 320
自測題答案 321
練習(xí)題 321
挑戰(zhàn)題 322
第11章 異常處理:深入探究 323
11.1 簡介 323
11.2 示例:除數(shù)為0時沒有處理異常 324
11.3 示例:處理ArithmeticException異常和InputMismatchException 異常 326
11.4 何時使用異常處理 330
11.5 Java異常層次 330
11.6 finally語句塊 332
11.7 棧解退和從異常獲得信息 336
11.8 鏈?zhǔn)疆惓?338
11.9 聲明新的異常類型 339
11.10 前置條件和后置條件 340
11.11 斷言 340
11.12 try-with-resources:自動釋放資源 341
11.13 小結(jié) 342
總結(jié) 343
自測題 345
自測題答案 345
練習(xí)題 346
第12章 JavaFX GUI(1) 347
12.1 簡介 347
12.2 JavaFX Scene Builder 348
12.3 JavaFX程序窗口的結(jié)構(gòu) 349
12.4 Welcome程序——顯示文本和圖像 350
12.5 Tip Calculator程序——事件處理 353
12.6 后續(xù)有關(guān)JavaFX章節(jié)中的主題 365
12.7 小結(jié) 365
總結(jié) 366
自測題 369
自測題答案 370
練習(xí)題 370
挑戰(zhàn)題 370
第13章 JavaFX GUI(2) 372
13.1 簡介 372
13.2 在場景圖中布局節(jié)點 373
13.3 Painter程序:RadioButton、鼠標(biāo)事件和形體 374
13.4 Color Chooser程序:屬性綁定和屬性監(jiān)聽器 381
13.5 Cover Viewer程序:數(shù)據(jù)驅(qū)動的GUI及JavaFX集合 386
13.6 Cover Viewer程序:定制ListView單元格 389
13.7 其他JavaFX功能 392
13.8 JavaFX 9:Java SE 9 JavaFX的更新 394
13.9 小結(jié) 395
總結(jié) 395
自測題 400
自測題答案 401
練習(xí)題 401
第14章 字符串、字符與正則表達式 402
14.1 簡介 402
14.2 字符和字符串基礎(chǔ) 403
14.3 String類 403
14.4 StringBuilder類 413
14.5 Character類 418
14.6 標(biāo)記化String 421
14.7 正則表達式及Pattern類和Matcher類 422
14.8 小結(jié) 427
總結(jié) 428
自測題 430
自測題答案 431
練習(xí)題 431
拓展內(nèi)容:字符串操作練習(xí)題 432
拓展內(nèi)容:處理字符串的挑戰(zhàn)項目 434
挑戰(zhàn)題 435
第15章 文件、輸入/輸出流、NIO與XML序列化 436
15.1 簡介 436
15.2 文件和流 437
15.3 使用NIO類和接口來獲得文件和目錄信息 438
15.4 順序文本文件 440
15.5 XML序列化 447
15.6 FileChooser和DirectoryChooser對話框 452
15.7 (選修)其他的java.io類 456
15.8 小結(jié) 458
總結(jié) 458
自測題 461
自測題答案 462
練習(xí)題 462
挑戰(zhàn)題 464
第16章 泛型集合 465
16.1 簡介 465
16.2 集合概述 466
16.3 類型包裝器類 467
16.4 自動裝箱和自動拆箱 467
16.5 Collection接口和Collections類 467
16.6 List 468
16.7 Collections方法 473
16.8 PriorityQueue類和Queue接口 481
16.9 Set 482
16.10 Map 484
16.11 同步集合 487
16.12 不可修改集合 487
16.13 抽象實現(xiàn) 488
16.14 Java SE 9:用于不可變集合的便利工廠方法 488
16.15 小結(jié) 490
總結(jié) 491
自測題 493
自測題答案 493
練習(xí)題 494
第17章 lambda與流 496
17.1 簡介 497
17.2 流和聚合 498
17.3 映射和lambda 500
17.4 過濾 503
17.5 元素如何在流管道中移動 504
17.6 方法引用 505
17.7 IntStream操作 507
17.8 函數(shù)式接口 510
17.9 lambda:深入探究 511
17.10 Stream<Integer>操作 512
17.11 Stream<String>操作 515
17.12 Stream<Employee>操作 516
17.13 根據(jù)文件創(chuàng)建Stream<String> 524
17.14 隨機值流 526
17.15 無限流 528
17.16 lambda事件處理器 529
17.17 關(guān)于Java SE 8接口的更多說明 529
17.18 小結(jié) 530
總結(jié) 530
自測題 536
自測題答案 537
練習(xí)題 538
第18章 遞歸 541
18.1 簡介 541
18.2 遞歸概念 542
18.3 使用遞歸示例:階乘 542
18.4 利用BigInteger重新實現(xiàn)FactorialCalculator類 544
18.5 使用遞歸示例:Fibonacci序列 545
18.6 遞歸與方法調(diào)用棧 547
18.7 遞歸與迭代的比較 548
18.8 漢諾塔 550
18.9 分形 551
18.10 遞歸回溯 559
18.11 小結(jié) 559
總結(jié) 560
自測題 561
自測題答案 562
練習(xí)題 562
第19章 搜索、排序與大O記法 566
19.1 簡介 566
19.2 線性搜索 567
19.3 大O記法 569
19.4 二分搜索 570
19.5 排序算法 573
19.6 選擇排序 574
19.7 插入排序 576
19.8 合并排序 578
19.9 本章的搜索和排序算法的效率小結(jié) 582
19.10 大規(guī)模并行處理與并行算法 583
19.11 小結(jié) 583
總結(jié) 583
自測題 585
自測題答案 585
練習(xí)題 585
挑戰(zhàn)題 587
第20章 泛型類和泛型方法:深入探究 588
20.1 簡介 588
20.2 泛型方法的由來 588
20.3 泛型方法:實現(xiàn)及編譯時翻譯 590
20.4 其他編譯時翻譯問題:將類型參數(shù)用作返回類型的方法 592
20.5 重載泛型方法 594
20.6 泛型類 595
20.7 接收類型參數(shù)的方法中的通配符 599
20.8 小結(jié) 602
總結(jié) 602
自測題 604
自測題答案 604
練習(xí)題 604
第21章 定制泛型數(shù)據(jù)結(jié)構(gòu) 606
21.1 簡介 606
21.2 自引用類 607
21.3 動態(tài)內(nèi)存分配 607
21.4 鏈表 608
21.5 棧 617
21.6 隊列 620
21.7 樹 621
21.8 小結(jié) 626
總結(jié) 626
自測題 628
自測題答案 629
練習(xí)題 629
拓展內(nèi)容:建立自己的編譯器 634
第22章 JavaFX圖形與多媒體 644
22.1 簡介 644
22.2 利用CSS控制字體 645
22.3 顯示二維形體 650
22.4 Polyline、Polygon和Path 654
22.5 變換 658
22.6 利用Media、MediaPlayer和MediaViewer播放視頻 659
22.7 Transition動畫 664
22.8 Timeline動畫 668
22.9 利用AnimationTimer實現(xiàn)逐幀動畫 670
22.10 在Canvas上繪圖 671
22.11 三維形體 675
22.12 小結(jié) 678
總結(jié) 678
自測題 683
自測題答案 684
練習(xí)題 684
第23章 并發(fā)性 691
23.1 簡介 691
23.2 線程狀態(tài)與生命周期 693
23.3 用Executor框架創(chuàng)建并執(zhí)行線程 695
23.4 線程同步 698
23.5 沒有同步的生產(chǎn)者/消費者關(guān)系 704
23.6 生產(chǎn)者/消費者關(guān)系:ArrayBlockingQueue 710
23.7 (進階)具有synchronized、wait、notify及notifyAll的生產(chǎn)者/消費者關(guān)系 712
23.8 (進階)生產(chǎn)者/消費者關(guān)系:有界緩沖區(qū) 716
23.9 (進階)生產(chǎn)者/消費者關(guān)系:Lock接口和Condition接口 722
23.10 并發(fā)集合 727
23.11 JavaFX中的多線程 728
23.12 利用Java SE 8的日期/時間API為sort/parallelSort計時 737
23.13 Java SE 8:串行流與并行流 739
23.14 (進階)Callable接口和Future接口 740
23.15 (進階)Fork/Join框架 744
23.16 小結(jié) 744
總結(jié) 745
自測題 750
自測題答案 751
練習(xí)題 752
第24章 利用JDBC訪問數(shù)據(jù)庫 754
24.1 簡介 755
24.2 關(guān)系數(shù)據(jù)庫 755
24.3 books數(shù)據(jù)庫 756
24.4 SQL 759
24.5 設(shè)置Java DB數(shù)據(jù)庫 764
24.6 連接并查詢數(shù)據(jù)庫 766
24.7 查詢books數(shù)據(jù)庫 769
24.8 RowSet接口 778
24.9 PreparedStatement 780
24.10 存儲過程 788
24.11 事務(wù)處理 789
24.12 小結(jié) 789
總結(jié) 790
自測題 794
自測題答案 794
練習(xí)題 794
第25章 JShell簡介:Java SE 9中用于交互式Java的REPL 797
25.1 簡介 798
25.2 安裝JDK 9 799
25.3 JShell簡介 799
25.4 JShell中的命令行輸入 807
25.5 聲明并使用類 808
25.6 JShell的自動補全功能 811
25.7 探索類成員并查看文檔 812
25.8 聲明方法 817
25.9 異常處理 818
25.10 導(dǎo)入類并將包添加到CLASSPATH 819
25.11 使用外部編輯器 820
25.12 JShell命令匯總 822
25.13 代碼段編輯的快捷鍵 826
25.14 JShell如何重新解釋Java以供交互使用 827
25.15 IDE JShell支持 827
25.16 小結(jié) 827
自測題 828
自測題答案 830
在線章節(jié) 840
附錄A 運算符優(yōu)先級表 841
附錄B ASCII字符集 843
附錄C 關(guān)鍵字和保留字 844
附錄D 基本類型 845
附錄E 使用調(diào)試器 846
在線附錄 856
索引 857