Java 大學教程, 11/e Java How to Program, Early Objects (11th Edition)

Paul J. Deitel, Harvey Deitel 張永健 等

買這商品的人也買了...

商品描述

本書是一本Java 編程方面的優秀教材,秉承Deitel系列叢書的一貫特點:內容豐富、覆蓋面廣,提供詳細代碼與實例研究,總結出大量的面向對象編程技巧和經驗。本書詳細說明瞭在Java 中面向對象編程的基本理論及實用知識,以初學者為起點,由點到面、由淺入深、循序漸進地介紹了對象、繼承、多態、接口、異常處理、JavaFX GUI、數據結構和集合、lambda與流、遞歸、搜索與排序、並發性、JDBC、JavaFX與多媒體、JShell 等,並且詳細介紹了網絡應用的開發與實踐。第十一版在前一版的基礎上增加了更多的實際案例,更新了很多內容,有助於讀者學習和借鑒。本書包括更廣泛的教學特性,其中列舉了數百個可實際使用的程序,並給出了運行結果,可以使學生在學習時更為直觀。

作者簡介

Paul Deitel,Deitel & Associates公司CEO兼CTO,具有過35年計算機行業的工作經驗,畢業於麻省理工學院。
他擁有Java Certified Programmer和Java Certified Developer認證證書,並且被授予Oracle Java Champion稱號。
通過Deitel & Associates公司,他向行業客戶提供了數以百計的編程課程,這些客戶包括:Cisco,IBM, Siemens,Sun Microsystems(現在屬於Oracle),Dell,Fidelity,NASA肯尼迪航天中心,美國國家風暴實驗室,白沙導彈基地,Rogue Wave Software,Boeing,SunGard Higher Education,Nortel Networks,Puma,iRobot,Invensys,等等。
他和合作者Harvey Deitel博士,是全球暢銷的編程語言教材和專業圖書/視頻產品的作者。


Harvey Deitel博士,Deitel & Associates公司主席兼首席戰略官,具有55年以上的計算機行業工作經驗。
Deitel博士在麻省理工學院獲得電子工程學士和碩士學位,在波士頓大學獲得數學博士學位——在將計算機科學專業從這些專業分離出去之前,Deitel博士已經學習過計算機知識。
他具有豐富的大學教學經驗,在與兒子Paul於1991年創立Deitel & Associates公司之前,Deitel博士是波士頓大學計算機科學系主任並獲得了終身教職。
他們的出版物已經贏得了國際聲譽,並被翻譯成了日文、德文、俄文、西班牙文、法文、波蘭文、意大利文、簡體中文、繁體中文、韓文、葡萄牙文、希臘文、烏爾都文和土耳其文。
Deitel博士為許多大公司、學術機構、政府部門和軍隊提供了數百場的專業編程培訓。 


張永健,國際關係學院副教授,畢業於北京郵電大學,專業為通信、計算機,目前從事網絡及信息安全、移動互聯網安全技術、大數據及多媒體安全等研究方向,並教授計算機安全等相關課程。

目錄大綱

1章計算機、Internet與Java簡介1 
1.1簡介2 
1.2硬件和軟件3 
1.3數據層次4 
1.4機器語言、彙編語言和高級語言6 
1.5對象技術介紹7 
1.6作系統9 
1.7編程語言11 
1.8 Java 12 
1.9典型的Java開發環境12 
1.10測試驅動的Java應用15 
1.11 Internet和WWW 17 
1.12軟件技術19 
1.13 Java問題解答20 
自測題20 
自測題答案21 
練習題21 
挑戰題22 

2章Java應用介紹、輸入/輸出、運算符23 
2.1簡介23 
2.2一個Java程序:輸出一行文本24 
2.3修改一個Java程序28 
2.4使用printf顯示文本29 
2.5另一個Java程序:整數相加30 
2.6內存概念33 
2.7算術運算34 
2.8判斷:相等性和關係運算符36 
2.9小結39 
總結39 
自測題41 
自測題答案42 
練習題44 
挑戰題47 

3章類、對象、方法與String簡介48 
3.1簡介48 
3.2實例變量、set方法和get方法49 
3.3 Account類:使用構造方法初始化對象56 
3.4包含浮點數餘額的Account類58 
3.5基本類型與引用類型的比較61 
3.6 (選修)GUI與圖形實例:一個簡單的GUI 62 
3.7小結67 
總結67 
自測題70 
自測題答案71 
練習題71 
挑戰題72 

4章控制語句(1)及賦值、++與- -運算符73 
4.1簡介73 
4.2算法74 
4.3偽代碼74 
4.4控制結構74 
4.5 if單選擇語句76 
4.6 if...else雙選擇語句77 
4.7 Student類:嵌套if... else語句79 
4.8 while循環語句81 
4.9形成算法:計數器控制循環82 
4.10形成算法:標記控制循環85 
4.11形成算法:嵌套控制語句90 
4.12複合賦值運算符93 
4.13增量運算符和減量運算符94 
4.14基本類型96 
4.15 (選修)GUI與圖形實例:事件處理、畫線96 
4.16小結104 
總結104 
自測題107 
自測題答案108 
練習題109 
挑戰題113 

5章控制語句(2)及邏輯運算符115 
5.1簡介115 
5.2計數器控制循環的實質116 
5.3 for循環語句116 
5.4使用for語句的示例119 
5.5 do...while循環語句122 
5.6 switch多選擇語句123 
5.7 AutoPolicy類實例:switch語句中的字符串127 
5.8 break和continue語句130 
5.9邏輯運算符131 
5.10結構化編程小結135 
5.11 (選修)GUI與圖形實例:繪製矩形和橢圓138 
5.12小結141 
總結141 
自測題143 
自測題答案144 
練習題145 
挑戰題148 

6章方法:深入探究149 
6.1簡介149 
6.2 Java中的程序單元150 
6.3靜態方法、靜態字段和Math類151 
6.4聲明多參數方法152 
6.5關於聲明與使用方法的說明155 
6.6方法調用棧與活動記錄156 
6.7實參提升與強制轉換157 
6.8 Java API包158 
6.9案例分析:安全的隨機數生成方法159 
6.10案例分析:機會遊戲與enum類型162 
6.11聲明的作用域165 
6.12方法重載167 
6.13 (選修)GUI與圖形實例:顏色和填充圖形169 
6.14小結171 
總結171 
自測題174 
自測題答案175 
練習題176 
挑戰題180 

7章數組與ArrayList 181 
7.1簡介182 
7.2數組182 
7.3聲明和創建數組183 
7.4數組使用舉例184 
7.5異常處理:處理不正確的反饋值190 
7.6案例分析:模擬洗牌和發牌191 
7.7增強型for語句194 
7.8將數組傳入方法195 
7.9按值傳遞與按引用傳遞196 
7.10案例分析:GradeBook類用數組保存成績197 
7.11多維數組201 
7.12案例分析:使用二維數組的GradeBook類203 
7.13變長實參表207 
7.14使用命令行實參208 
7.15 Arrays類210 
7.16集合和ArrayList類簡介212 
7.17 (選修)GUI與圖形實例:畫圓弧214 
7.18小結216 
總結216 
自測題219 
自測題答案219 
練習題220 
拓展內容:建立自己的計算機227 
挑戰題231 

8章類與對象:深入探究233 
8.1簡介233 
8.2 Time類案例分析234 
8.3對成員的訪問控制237 
8.4用this引用訪問當前對象的成員237 
8.5 Time類案例分析:重載構造方法239 
8.6默認構造方法與無實參構造方法243 
8.7 set方法和get方法243 
8.8組合244 
8.9 enum類型246 
8.10垃圾回收248 
8.11靜態類成員249 
8.12靜態導入251 
8.13 final實例變量252 
8.14包訪問253 
8.15將BigDecimal用於精確的貨幣計算254 
8.16 (選修)GUI與圖形實例:使用包含圖形的對象255 
8.17小結258 
總結258 
自測題261 
自測題答案261 
練習題261 
挑戰題264 

9章面向對象編程:繼承265 
9.1簡介265 
9.2類與子類266 
9.3 protected成員267 
9.4類與子類的關係268 
9.5子類的構造方法282 
9.6 Object類283 
9.7比較組合和繼承的差異283 
9.8小結285 
總結285 
自測題286 
自測題答案286 
練習題286 

10章面向對象編程:多態和接口289 
10.1簡介289 
10.2多態示例290 
10.3演示多態行為291 
10.4抽像類和抽象方法293 
10.5案例分析:使用多態的工資系統295 
10.6類和子類變量之間允許的賦值305 
10.7 final方法和final類305 
10.8分析從構造方法調用方法時的問題306 
10.9創建和使用接口306 
10.10 Java SE 8的接口強化312 
10.11 Java SE 9的私有接口方法313 
10.12私有構造方法314 
10.13使用接口繼承而非實現繼承314 
10.14 (選修)GUI與圖形實例:利用多態性畫圖316 
10.15小結317 
總結318 
自測題320 
自測題答案321 
練習題321 
挑戰題322 

11章異常處理:深入探究323 
11.1簡介323 
11.2示例:除數為0時沒有處理異常324 
11.3示例:處理ArithmeticEception異常和InputMismatchEception異常326 
11.4何時使用異常處理330 
11.5 Java異常層次330 
11.6 finally語句塊332 
11.7棧解和從異常獲得信息336 
11.8鍊式異常338 
11.9聲明新的異常類型339 
11.10前置條件和後置條件340 
11.11斷言340 
11.12 try-with-resources:自動釋放資源341 
11.13小結342 
總結343 
自測題345 
自測題答案345 
練習題346 

12章JavaFX GUI(1) 347 
12.1簡介347 
12.2 JavaFX Scene Builder 348 
12.3 JavaFX程序窗口的結構349 
12.4 Welcome程序——顯示文本和圖像350 
12.5 Tip Calculator程序— —事件處理353 
12.6後續有關JavaFX章節中的主題365 
12.7小結365 
總結366 
自測題369 
自測題答案370 
練習題370 
挑戰題370 

13章JavaFX GUI(2) 372 
13.1簡介372 
13.2在場景圖中佈局節點373 
13.3 Painter程序:RadioButton、鼠標事件和形體374 
13.4 Color Chooser程序:屬性綁定和屬性監聽器381 
13.5 Cover Viewer程序:數據驅動的GUI及JavaFX集合386 
13.6 Cover Viewer程序:定制ListView單元格389 
13.7其他JavaFX功能392 
13.8 JavaFX 9:Java SE 9 JavaFX的更新394 
13.9小結395 
總結395 
自測題400 
自測題答案401 
練習題401 

14章字符串、字符與正則表達式402 
14.1簡介402 
14.2字符和字符串基礎403 
14.3 String類403 
14.4 StringBuilder類413 
14.5 Character類418 
14.6標記化String 421 
14.7正則表達式及Pattern類和Matcher類422 
14.8小結427 
總結428 
自測題430 
自測題答案431 
練習題431 
拓展內容:字符串作練習題432 
拓展內容:處理字符串的挑戰項目434 
挑戰題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小結458 
總結458 
自測題461 
自測題答案462 
練習題462 
挑戰題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抽象實現488 
16.14 Java SE 9:用於不可變集合的便利工廠方法488 
16.15小結490 
總結491 
自測題493 
自測題答案493 
練習題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函數式接口510 
17.9 lambda:深入探究511 
17.10 Stream<Integer>作512 
17.11 Stream<String>作515 
17.12 Stream<Employee>作516 
17.13根據文件創建Stream<String> 524 
17.14隨機值流526 
17.15無限流528 
17.16 lambda事件處理器529 
17.17關於Java SE 8接口的更多說明529 
17.18小結530 
總結530 
自測題536 
自測題答案537 
練習題538 

18章遞歸541 
18.1簡介541 
18.2遞歸概念542 
18.3使用遞歸示例:階乘542 
18.4利用BigInteger重新實現FactorialCalculator類544 
18.5使用遞歸示例:Fibonacci序列545 
18.6遞歸與方法調用棧547 
18.7遞歸與迭代的比較548 
18.8漢諾塔550 
18.9分形551 
18.10遞歸回溯559 
18.11小結559 
總結560 
自測題561 
自測題答案562 
練習題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本章的搜索和排序算法的效率小結582 
19.10大規模並行處理與並行算法583 
19.11小結583 
總結583 
自測題585 
自測題答案585 
練習題585 
挑戰題587 

20章泛型類和泛型方法:深入探究588 
20.1簡介588 
20.2泛型方法的由來588 
20.3泛型方法:實現及編譯時翻譯590 
20.4其他編譯時翻譯問題:將類型參數用作返回類型的方法592 
20.5重載泛型方法594 
20.6泛型類595 
20.7接收類型參數的方法中的通配符599 
20.8小結602 
總結602 
自測題604 
自測題答案604 
練習題604 

21章定制泛型數據結構606 
21.1簡介606 
21.2自引用類607 
21.3動態內存分配607 
21.4鍊錶608 
21.5棧617 
21.6隊列620 
21.7樹621 
21.8小結626 
總結626 
自測題628 
自測題答案629 
練習題629 
拓展內容:建立自己的編譯器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實現逐幀動畫670 
22.10在Canvas上繪圖671 
22.11三維形體675 
22.12小結678 
總結678 
自測題683 
自測題答案684 
練習題684 

23章並發性691 
23.1簡介691 
23.2線程狀態與生命週期693 
23.3用Eecutor框架創建並執行線程695 
23.4線程同步698 
23.5沒有同步的生產者/消費者關係704 
23.6生產者/消費者關係:ArrayBlockingQueue 710 
23.7 (進階)具有synchronized、wait、tify及tifyAll的生產者/消費者關係712 
23.8 (進階)生產者/消費者關係:有界緩衝區716 
23.9 (進階)生產者/消費者關係:Lock接口和Condition接口722 
23.10並發集合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小結744 
總結745 
自測題750 
自測題答案751 
練習題752 

24章利用JDBC訪問數據庫754 
24.1簡介755 
24.2關係數據庫755 
24.3 books數據庫756 
24.4 SQL 759 
24.5設置Java DB數據庫764 
24.6連接並查詢數據庫766 
24.7查詢books數據庫769 
24.8 RowSet接口778 
24.9 PreparedStatement 780 
24.10存儲過程788 
24.11事務處理789 
24.12小結789 
總結790 
自測題794 
自測題答案794 
練習題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導入類並將包添加到CLASSPATH 819 
25.11使用外部編輯器820 
25.12 JShell命令匯總822 
25.13代碼段編輯的快捷鍵826 
25.14 JShell如何重新解釋Java以供交互使用827 
25.15 IDE JShell支持827 
25.16小結827 
自測題828 
自測題答案830 
在線章節840 

附錄A運算符優先級表841 
附錄B ASCII字符集843 
附錄C關鍵字和保留字844 
附錄D基本類型845 
附錄E使用調試器846 
在線附錄856 
索引857