本書是Java語言的經典教材,中文版分為《Java語言程序設計基礎篇》和《Java語言程序設計進階篇》,主要介紹程序設計基礎、麵嚮對象程序設計、算法和數據結構、GUI程序設計、高級Java程序設計等內容。本書以實例驅動的方式,貫徹問題解決的思想,幫助讀者掌握Java語言的開發技術,並解決實際工程問題。基礎篇從Java語言的特點入手,涵蓋Java語言的語法、麵嚮對象程序設計、圖形用戶界麵設計等基礎性內容。可作為高等院校Java程序設計課程的教材。
Y. Daniel Liang:普度大學終身教授,阿姆斯特朗亞特蘭大州立大學計算機科學係教授。他所編寫的Java教程在美國大學Java課程中采用率高,同時他還兼任Prentice Hall Java係列叢書的編輯。梁勇(Y. Daniel Liang),阿姆斯特朗亞特蘭大州立大學計算機科學係Yamacraw教授。之前曾是普渡大學計算機科學係副教授,並曾兩次獲得普渡大學大學傑齣研究奬。他所編寫的Java教程在美國大學Java課程中采用率高。
齣版者的話
前言
第1章 計算機、程序和Java概述 1
1.1 引言 2
1.2 什麼是計算機 2
1.3 編程語言 7
1.4 操作係統 9
1.5 Java、萬維網以及其他 10
1.6 Java語言規範、API、JDK和IDE 11
1.7 一個簡單的Java程序 12
1.8 創建、編譯和執行Java程序 15
1.9 程序設計風格和文檔 18
1.10 程序設計錯誤 20
1.11 使用NetBeans開發Java程序 23
1.12 使用Eclipse開發Java程序 25
第2章 基本程序設計 33
2.1 引言 34
2.2 編寫簡單的程序 34
2.3 從控製颱讀取輸入 37
2.4 標識符 39
2.5 變量 40
2.6 賦值語句和賦值錶達式 41
2.7 命名常量 43
2.8 命名習慣 44
2.9 數值數據類型和操作 44
2.10 數值型直接量 48
2.11 錶達式求值以及操作符優先級 50
2.12 示例學習:顯示當前時間 52
2.13 增強賦值操作符 54
2.14 自增和自減操作符 55
2.15 數值類型轉換 56
2.16 軟件開發過程 59
2.17 示例學習:整錢兌零 63
2.18 常見錯誤和陷阱 65
第3章 選擇 75
3.1 引言 76
3.2 boolean數據類型 76
3.3 if語句 78
3.4 雙分支if-else語句 80
3.5 嵌套的if語句和多分支if-else語句 81
3.6 常見錯誤和陷阱 83
3.7 産生隨機數 87
3.8 示例學習:計算身體質量指數 89
3.9 示例學習:計算稅率 90
3.10 邏輯操作符 93
3.11 示例學習:判定閏年 97
3.12 示例學習:彩票 98
3.13 switch語句 100
3.14 條件錶達式 103
3.15 操作符的優先級和結閤規則 104
3.16 調試 106
第4章 數學函數、字符和字符串 119
4.1 引言 120
4.2 常用數學函數 120
4.3 字符數據類型和操作 125
4.4 String類型 130
4.5 示例學習 139
4.6 格式化控製颱輸齣 145
第5章 循環 157
5.1 引言 158
5.2 while循環 158
5.3 do-while循環 168
5.4 for循環 170
5.5 采用哪種循環 174
5.6 嵌套循環 176
5.7 最小化數值錯誤 178
5.8 示例學習 179
5.9 關鍵字break和continue 184
5.10 示例學習:判斷迴文串 187
5.11 示例學習:顯示素數 188
第6章 方法 203
6.1 引言 204
6.2 定義方法 204
6.3 調用方法 206
6.4 void方法示例 209
6.5 通過傳值進行參數傳遞 212
6.6 模塊化代碼 215
6.7 示例學習:將十六進製數轉換為十進製數 217
6.8 重載方法 219
6.9 變量的作用域 222
6.10 示例學習:生成隨機字符 223
6.11 方法抽象和逐步求精 225
第7章 一維數組 245
7.1 引言 246
7.2 數組的基礎知識 246
7.3 示例學習:分析數字 253
7.4 示例學習:一副牌 254
7.5 數組的復製 256
7.6 將數組傳遞給方法 257
7.7 從方法中返迴數組 260
7.8 示例學習:統計每個字母齣現的次數 261
7.9 可變長參數列錶 264
7.10 數組的查找 265
7.11 數組的排序 269
7.12 Arrays類 270
7.13 命令行參數 272
第8章 多維數組 287
8.1 引言 288
8.2 二維數組的基礎知識 288
8.3 處理二維數組 291
8.4 將二維數組傳遞給方法 293
8.5 示例學習:多選題測驗評分 294
8.6 示例學習:找齣距離最近的點對 296
8.7 示例學習:數獨 298
8.8 多維數組 301
第9章 對象和類 321
9.1 引言 322
9.2 為對象定義類 322
9.3 示例:定義類和創建對象 324
9.4 使用構造方法構造對象 329
9.5 通過引用變量訪問對象 330
9.6 使用Java庫中的類 334
9.7 靜態變量、常量和方法 337
9.8 可見性修飾符 342
9.9 數據域封裝 344
9.10 嚮方法傳遞對象參數 347
9.11 對象數組 351
9.12 不可變對象和類 353
9.13 變量的作用域 355
9.14 this引用 356
第10章 麵嚮對象思考 365
10.1 引言 366
10.2 類的抽象和封裝 366
10.3 麵嚮對象的思考 370
10.4 類的關係 373
10.5 示例學習:設計Course類 376
10.6 示例學習:設計棧類 378
10.7 將基本數據類型值作為對象處理 380
10.8 基本類型和包裝類類型之間的自動轉換 383
10.9 BigInteger和BigDecimal類 384
10.10 String類 386
10.11 StringBuilder和StringBuffer類 392
第11章 繼承和多態 409
11.1 引言 410
11.2 父類和子類 410
11.3 使用super關鍵字 416
11.4 方法重寫 419
11.5 方法重寫與重載 420
11.6 Object類及其toString()方法 422
11.7 多態 423
11.8 動態綁定 424
11.9 對象轉換和instanceof運算符 427
11.10 Object類的equals方法 431
11.11 ArrayList類 432
11.12 對於列錶有用的方法 438
11.13 示例學習:自定義棧類 439
11.14 protected數據和方法 440
11.15 防止擴展和重寫 442
第12章 異常處理和文本I/O 449
12.1 引言 450
12.2 異常處理概述 450
12.3 異常類型 455
12.4 關於異常處理的更多知識 458
12.5 finally子句 466
12.6 何時使用異常 467
12.7 重新拋齣異常 468
12.8 鏈式異常 469
12.9 創建自定義異常類 470
12.10 File類 473
12.11 文件輸入和輸齣 476
12.12 從Web上讀取數據 482
12.13 示例學習:Web爬蟲 484
第13章 抽象類和接口 495
13.1 引言 496
13.2 抽象類 496
13.3 示例學習:抽象的Number類 501
13.4 示例學習:Calendar和GregorianCalendar 503
13.5 接口 506
13.6 Comparable接口 509
13.7 Cloneable接口 513
13.8 接口與抽象類 517
13.9 示例學習:Rational類 520
13.10 類的設計原則 525
第14章 JavaFX基礎 535
14.1 引言 536
14.2 JavaFX與Swing以及AWT的比較 536
14.3 JavaFX程序的基本結構 536
14.4 麵闆、UI組件以及形狀 539
14.5 屬性綁定 542
14.6 節點的通用屬性和方法 545
14.7 Color類 546
14.8 Font類 547
14.9 Image和ImageView類 549
14.10 布局麵闆 552
14.11 形狀 560
14.12 示例學習:ClockPane類 572
第15章 事件驅動編程和動畫 585
15.1 引言 586
15.2 事件和事件源 588
15.3 注冊處理器和處理事件 589
15.4 內部類 593
15.5 匿名內部類處理器 594
15.6 使用lambda錶達式簡化事件處理 597
15.7 示例學習:貸款計算器 600
15.8 鼠標事件 602
15.9 鍵盤事件 603
15.10 可觀察對象的監聽器 606
15.11 動畫 608
15.12 示例學習:彈球 616
第16章 JavaFX UI組件和多媒體 629
16.1 引言 630
16.2 Labeled和Label 630
16.3 按鈕 632
16.4 復選框 634
16.5 單選按鈕 637
16.6 文本域 639
16.7 文本區域 641
16.8 組閤框 644
16.9 列錶視圖 647
16.10 滾動條 651
16.11 滑動條 654
16.12 示例學習:開發一個井字遊戲 657
16.13 視頻和音頻 662
16.14 示例學習:國旗和國歌 665
第17章 二進製 I/O 677
17.1 引言 678
17.2 在Java中如何處理文本I/O 678
17.3 文本I/O與二進製I/O 679
17.4 二進製I/O類 680
17.5 示例學習:復製文件 691
17.6 對象I/O 692
17.7 隨機訪問文件 697
第18章 遞歸 705
18.1 引言 706
18.2 示例學習:計算階乘 706
18.3 示例學習:計算斐波那契數 709
18.4 使用遞歸解決問題 712
18.5 遞歸輔助方法 714
18.6 示例學習:得到目錄的大小 717
18.7 示例學習:漢諾塔 719
18.8 示例學習:分形 722
18.9 遞歸與迭代 726
18.10 尾遞歸 727
第19章 泛型 737
19.1 引言 738
19.2 動機和優點 738
19.3 定義泛型類和接口 740
19.4 泛型方法 742
19.5 示例學習:對一個對象數組進行排序 744
19.6 原始類型和嚮後兼容 746
19.7 通配泛型 747
19.8 消除泛型和對泛型的限製 750
19.9 示例學習:泛型矩陣類 752
第20章 綫性錶、棧、隊列和優先隊列 761
20.1 引言 762
20.2 閤集 762
20.3 迭代器 766
20.4 綫性錶 767
20.5 Comparator接口 772
20.6 綫性錶和閤集的靜態方法 773
20.7 示例學習:彈球 777
20.8 嚮量類和棧類 781
20.9 隊列和優先隊列 783
20.10 示例學習:錶達式求值 786
第21章 集閤和映射錶 797
21.1 引言 798
21.2 集閤 798
21.3 比較集閤和綫性錶的性能 806
21.4 示例學習:統計關鍵字 809
21.5 映射錶 810
21.6 示例學習:單詞的齣現次數 815
21.7 單元素與不可變的閤集和映射錶 816
第22章 開發高效算法 821
22.1 引言 822
22.2 使用大O符號來衡量算法效率 822
22.3 示例:確定大O 824
22.4 分析算法的時間復雜度 828
22.5 使用動態編程計算斐波那契數 831
22.6 使用歐幾裏得算法求最大公約數 833
22.7 尋找素數的高效算法 837
22.8 使用分而治之法尋找最近的點對 843
22.9 使用迴溯法解決八皇後問題 846
22.10 計算幾何:尋找凸包 849
第23章 排序 861
23.1 引言 862
23.2 插入排序 862
23.3 冒泡排序 864
23.4 歸並排序 867
23.5 快速排序 870
23.6 堆排序 874
23.7 桶排序和基數排序 881
23.8 外部排序 883
第24章 實現綫性錶、棧、隊列和優先隊列 895
24.1 引言 896
24.2 綫性錶的通用特性 896
24.3 數組綫性錶 900
24.4 鏈錶 906
24.5 棧和隊列 920
24.6 優先隊列
前言許多讀者就本書之前的版本給齣瞭很多反饋。這些評論和建議極大地改進瞭本書。這一版在錶述、組織、示例、練習題以及附錄方麵都進行瞭極大的增強,包括:
用JavaFX取代瞭Swing。JavaFX是一個用於開發JavaGUI程序的新框架,它極大地簡化瞭GUI程序設計,比Swing更易於學習。
在GUI程序設計之前介紹異常處理、抽象類和接口,若教師選擇不教授GUI的內容,可以直接跳過第14~16章。
在第4章便開始介紹對象和字符題串,從而使得學生可以較早地使用對象和字符串來開發有趣的程序。
包含更多新的有趣示例和練習題,用於激發學生興趣。在配套網站(www.cs.armstrong.edu/liang/intro10e/或www.pearsonhighered.com/liang)上還為教師提供瞭100多道編程練習題。
本書采用基礎優先的方法,在設計自定義類之前,首先介紹基本的程序設計概念和技術。選擇語句、循環、方法和數組這樣的基本概念和技術是程序設計的基礎,它們為學生進一步學習麵嚮對象程序設計和高級Java程序設計做好準備。
本書以問題驅動的方式來教授程序設計,將重點放在問題的解決而不是語法上。我們通過使用在各種應用情景中引發思考的問題,使得程序設計的介紹也變得更加有趣。前麵章節的主綫放在問題的解決上,引入閤適的語法和庫以支持編寫解決問題的程序。為瞭支持以問題驅動的方式來教授程序設計,本書提供瞭大量不同難度的問題來激發學生的積極性。為瞭吸引各個專業的學生來學習,這些問題涉及很多應用領域,包括數學、科學、商業、金融、遊戲、動畫以及多媒體等。
本書將程序設計、數據結構和算法無縫集成在一起,采用一種實用性的方式來教授數據結構。首先介紹如何使用各種數據結構來開發高效的算法,然後演示如何實現這些數據結構。通過實現,學生獲得關於數據結構效率,以及如何和何時使用某種數據結構的深入理解。最後,我們設計和實現瞭針對樹和圖的自定義數據結構。
本書廣泛應用於全球各大學的程序設計入門、數據結構和算法課程中。完全版包括程序設計基礎、麵嚮對象程序設計、GUI程序設計、數據結構、算法、並行、網絡、數據庫和Web程序設計。這個版本旨在把學生培養成精通Java的程序員。基礎篇可用於程序設計的第一門課程(通常稱為CS1)。基礎篇包含完全版的前18章內容,前13章適閤準備AP計算機科學考試(APComputerScienceExam)的人員使用。
教授編程的最好途徑是通過示例,而學習編程的唯一途徑是通過動手練習。本書通過示例對基本概念進行瞭解釋,提供瞭大量不同難度的練習題供學生進行實踐。在我們的程序設計課程中,每次課後都布置瞭編程練習。
我們的目標是編寫一本可以通過各種應用場景中的有趣示例來教授問題求解和程序設計的教材。如果您有任何關於如何改進本書的評論或建議,請通過以下方式與我聯係。
Y.DanielLiangy.daniel.liang@gmail.comwww.cs.armstrong.edu/liangwww.pearsonhighered.com/liang本版新增內容本版對各個細節都進行瞭全麵修訂,以增強其清晰性、錶述、內容、例子和練習題。本版主要的改進如下:
更新到Java8版本。
由於Swing被JavaFX所替代,因此所有的GUI示例和練習題都使用JavaFX改寫。
使用lambda錶達式來簡化JavaFX和綫程中的編程。
在配套網站上為教師提供瞭100多道編程練習題,並給齣瞭答案。這些練習題沒有齣現在教材中。
在第4章就引入瞭數學方法,使得學生可以使用數學函數編寫代碼。
在第4章就引入瞭字符串,使得學生可以早點使用對象和字符串開發有趣的程序。
GUI編程放在抽象類和接口之後介紹,若教師選擇不教授GUI內容的話,可以直接跳過這些章節。
第4、14、15和16章是全新的章節。
第28和29章大幅改寫,對最小生成樹和最短路徑使用更加簡化的方法實現。
教學特色本書使用以下要素組織素材:
教學目標在每章開始處列齣學生應該掌握的內容,學完這章後,學生能夠判斷自己是否達到這個目標。
引言提齣代錶性的問題,以便學生對該章內容有一個概括瞭解。
要點提示突齣每節中涵蓋的重要概念。
復習題按節組織,幫助學生復習相關內容並評估掌握的程度。
示例學習通過精心挑選示例,以容易理解的方式教授問題求解和程序設計概念。本書使用多個小的、簡單的、激發興趣的例子來演示重要的概念。
本章小結迴顧學生應該理解和記住的重要主題,有助於鞏固該章所學的關鍵概念。
測試題測試題是在綫的,讓學生對編程概念和技術進行自我測試。
編程練習題為學生提供獨立應用所學新技能的機會。練習題的難度分為容易(沒有星號)、適中(*)、難(**)和具有挑戰性(***)四個級彆。學習程序設計的竅門就是實踐、實踐、再實踐。所以,本書提供瞭大量的編程練習題。
注意、提示、警告和設計指南貫穿全書,對程序開發的重要方麵提供有價值的建議和見解。
注意提供學習主題的附加信息,鞏固重要概念。
提示教授良好的程序設計風格和實踐經驗。
警告幫助學生避開程序設計錯誤的誤區。
評論四 作為一名已經工作瞭幾年,但感覺Java基礎有些不紮實的開發者,我一直在尋找一本能夠幫助我“查漏補缺”的書籍。這本書恰好滿足瞭我的需求。它的內容深度和廣度都恰到好處,既不會過於淺顯而讓人覺得浪費時間,也不會過於高深而勸退讀者。我最欣賞的是書中對一些“細節”的關注,比如各種數據類型的精度問題、整數溢齣的情況、字符串的不可變性以及其在內存中的具體錶現等等。這些看似微小的點,在實際開發中卻常常導緻難以察覺的bug,而這本書都給齣瞭清晰的解釋和避免這些問題的方法。書中關於Java虛擬機(JVM)的部分,雖然篇幅不多,但卻非常精煉,它為我理解Java程序的運行機製提供瞭重要的綫索,讓我明白代碼是如何被加載、編譯和執行的。此外,書中對一些常用的API進行瞭詳盡的介紹,例如日期時間API、網絡編程API等,這些都是日常開發中必不可少的工具。這本書就像一位經驗豐富的老兵,用他多年的實踐經驗,為我指明瞭Java開發的“坑”和“道”。
評分評論一 這本書絕對是我最近幾年閱讀過的最令人印象深刻的技術書籍之一。它不僅僅是一本“工具書”,更像是一位循循善誘的導師,帶領我深入理解Java的本質。從最基礎的變量、數據類型、運算符開始,作者就展現齣瞭極高的駕馭能力,將枯燥的概念以一種非常直觀、易懂的方式呈現齣來。我尤其欣賞書中對每一個概念的細緻講解,常常伴隨著精煉的代碼示例,這些示例不僅能夠立即驗證理論,更能激發我動手實踐的欲望。書中對於麵嚮對象編程的闡述更是達到瞭爐火純青的地步,無論是封裝、繼承還是多態,都被講解得透徹而又不失趣味。我不再僅僅是“復製代碼”,而是真正理解瞭為何要這樣做,以及不同設計模式背後的邏輯。而且,這本書的排版和設計也值得稱贊,清晰的章節劃分、恰當的圖錶運用,都極大地提升瞭閱讀體驗。即使是第一次接觸Java編程的新手,也能在這種循序漸進的引導下,建立起堅實的基礎。對於有一定編程經驗的讀者,這本書也能提供更深層次的洞察,幫助你優化代碼,寫齣更優雅、更高效的程序。我強烈推薦給所有想要學習Java或者希望提升Java技能的開發者。
評分評論五 這本書絕對是我在技術閱讀清單上最值得推薦的一本。它不僅僅是一本Java入門書籍,更像是一本“Java編程藝術”的指南。從一開始,我就被書中那種清晰、邏輯嚴密的敘述風格所吸引。作者並沒有簡單地羅列語法規則,而是將每一個概念都置於一個更大的編程框架中進行解釋,讓我能夠理解其在整個Java生態係統中的作用。我尤其喜歡書中對內存管理和垃圾迴收機製的講解,這部分內容往往是許多初學者感到睏惑的地方,但這本書用非常易於理解的方式,揭示瞭Java是如何自動管理內存的,以及我們應該如何編寫代碼來避免內存泄漏。書中還介紹瞭一些Java語言的高級特性,例如注解、枚舉以及lambda錶達式等,這些內容對於我提升代碼的現代化和效率非常有幫助。閱讀這本書的過程,就像在和一位經驗豐富的工程師進行一場深入的對話,他會耐心地解答你的每一個疑問,並引導你走嚮更高級的編程境界。這本書無疑是我在Java學習道路上的一筆寶貴財富。
評分評論三 這本Java教材絕對是我在學術道路上的一盞明燈。它以一種非常係統和嚴謹的方式,為我構建瞭完整的Java知識體係。我一直覺得,好的教材不僅僅是知識的搬運工,更應該是學習方法的引導者。這本書在這方麵做得非常齣色。作者在介紹每一個新特性時,都會追溯其齣現的曆史背景和設計哲學,這讓我能夠更深刻地理解Java語言的設計意圖,而不是死記硬背。例如,在講解泛型時,作者不僅介紹瞭如何使用,還詳細解釋瞭其解決類型擦除問題的機製,這對於我理解Java虛擬機的工作原理也大有裨益。書中對並發編程的討論,是我最為看重的內容之一。作者並沒有迴避這一復雜的主題,而是循序漸進地介紹瞭綫程的創建、同步機製(如synchronized關鍵字、Lock接口)以及綫程池的使用。通過書中大量的代碼示例和理論分析,我終於能夠擺脫過去對並發的恐懼,開始自信地編寫多綫程程序。而且,這本書的練習題質量也非常高,每一道題都緊密結閤瞭章節內容,能夠有效地鞏固所學知識,並為我後續的深入學習打下堅實的基礎。
評分評論二 說實話,一開始拿到這本書的時候,我對它的期望值並沒有那麼高,畢竟市麵上關於Java的書籍琳琅滿目,想要找到一本真正“有用”的實屬不易。然而,這本書完全顛覆瞭我的看法。它的內容組織方式非常巧妙,完全是從讀者的角度齣發,考慮到初學者可能會遇到的睏惑,並在恰當的時機給齣解決方案。書中對於異常處理機製的講解,讓我對如何編寫健壯的代碼有瞭全新的認識,不再是簡單的“try-catch”堆砌,而是理解瞭其背後的原理和最佳實踐。我特彆喜歡書中對於集閤框架的介紹,不僅僅羅列瞭List、Set、Map等接口和實現類,更深入地分析瞭它們各自的優缺點以及適用場景,這對於我進行實際項目開發時選擇閤適的數據結構非常有幫助。此外,書中對文件I/O的講解也相當詳盡,清晰地闡述瞭流的概念以及各種輸入輸齣流類的用法,這在處理數據持久化和網絡通信時至關重要。這本書最大的亮點在於,它並沒有僅僅停留在語法層麵,而是著重培養讀者的編程思維和解決問題的能力。每當我遇到一個新概念,作者總能通過生動形象的比喻或者實際場景的應用來解釋,讓我茅塞頓開。
評分跟老師推薦的一樣 沒買錯
評分好好好!!!
評分好好好!!!
評分好好好!!!
評分好好好!!!
評分好好好!!!
評分很厚 但是好像隻有一半內容
評分很厚 但是好像隻有一半內容
評分很厚 但是好像隻有一半內容
本站所有內容均為互聯網搜尋引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度,google,bing,sogou 等
© 2025 book.coffeedeals.club All Rights Reserved. 靜流書站 版權所有