Java語(yǔ)言程序設(shè)計(jì)(進(jìn)階篇)(原書第12版)
定 價(jià):139 元
叢書名:計(jì)算機(jī)科學(xué)叢書
- 作者:[美]梁勇(Y. Daniel Liang)
- 出版時(shí)間:2021/9/1
- ISBN:9787111689355
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:TP312.8
- 頁(yè)碼:
- 紙張:膠版紙
- 版次:
- 開(kāi)本:16開(kāi)
本書是Java語(yǔ)言的經(jīng)典教材,中文版分為基礎(chǔ)篇和進(jìn)階篇,主要介紹程序設(shè)計(jì)基礎(chǔ)、面向?qū)ο蟪绦蛟O(shè)計(jì)、GUI程序設(shè)計(jì)、數(shù)據(jù)結(jié)構(gòu)和算法、高級(jí)Java程序設(shè)計(jì)等內(nèi)容。本書通過(guò)示例講解問(wèn)題求解技巧,提供大量的程序清單,每章配有豐富的復(fù)習(xí)題和編程練習(xí)題,幫助讀者掌握編程技術(shù),并學(xué)會(huì)應(yīng)用所學(xué)技術(shù)解決實(shí)際開(kāi)發(fā)中遇到的問(wèn)題。進(jìn)階篇主要討論數(shù)據(jù)結(jié)構(gòu)和算法,包括線性表、棧、隊(duì)列、規(guī)則集、映射、排序、樹(shù)和圖等內(nèi)容。本書可作為高等院校計(jì)算機(jī)相關(guān)專業(yè)程序設(shè)計(jì)課程的教材,也可作為Java語(yǔ)言及編程愛(ài)好者的參考資料。
許多讀者就本書之前的版本給出了很多反饋,這些評(píng)論和建議極大地改進(jìn)了本書。這一版在表述、組織、示例、練習(xí)題以及附錄方面都有大幅改進(jìn)。
本書采用基礎(chǔ)優(yōu)先的方法,在設(shè)計(jì)用戶自定義類之前,首先介紹基本的程序設(shè)計(jì)概念和技術(shù)。選擇語(yǔ)句、循環(huán)、方法和數(shù)組這樣的基本概念與技術(shù)是程序設(shè)計(jì)的基礎(chǔ),打好這些基礎(chǔ)將幫助學(xué)生為進(jìn)一步學(xué)習(xí)面向?qū)ο蟪绦蛟O(shè)計(jì)和高級(jí)Java程序設(shè)計(jì)做好準(zhǔn)備。
本書以問(wèn)題驅(qū)動(dòng)的方式來(lái)教授程序設(shè)計(jì),將重點(diǎn)放在問(wèn)題的解決而不是語(yǔ)法上。我們通過(guò)使用在各種應(yīng)用場(chǎng)景中引發(fā)思考的問(wèn)題,使程序設(shè)計(jì)的介紹變得更加有趣。前面章節(jié)的主線放在問(wèn)題的解決上,引入合適的語(yǔ)法和庫(kù)以支持編寫解決問(wèn)題的程序。為了支持以問(wèn)題驅(qū)動(dòng)的方式來(lái)教授程序設(shè)計(jì),本書提供了大量不同難度的問(wèn)題來(lái)激發(fā)學(xué)生的積極性。為了吸引各個(gè)專業(yè)的學(xué)生來(lái)學(xué)習(xí),這些問(wèn)題涵蓋很多應(yīng)用領(lǐng)域,包括數(shù)學(xué)、科學(xué)、商業(yè)、金融、游戲、動(dòng)畫以及多媒體等。
本書將程序設(shè)計(jì)、數(shù)據(jù)結(jié)構(gòu)和算法無(wú)縫整合在一起,采用一種實(shí)用的方式來(lái)教授數(shù)據(jù)結(jié)構(gòu)。首先介紹如何使用各種數(shù)據(jù)結(jié)構(gòu)來(lái)開(kāi)發(fā)高效的算法,然后演示如何實(shí)現(xiàn)這些數(shù)據(jù)結(jié)構(gòu)。通過(guò)實(shí)現(xiàn),學(xué)生可以深入理解數(shù)據(jù)結(jié)構(gòu)的效率,以及如何和何時(shí)使用某種數(shù)據(jù)結(jié)構(gòu)。后,我們?cè)O(shè)計(jì)和實(shí)現(xiàn)了針對(duì)樹(shù)和圖的用戶自定義數(shù)據(jù)結(jié)構(gòu)。
本書廣泛應(yīng)用于全球眾多大學(xué)的程序設(shè)計(jì)入門、數(shù)據(jù)結(jié)構(gòu)和算法課程中。完全版包括程序設(shè)計(jì)基礎(chǔ)、面向?qū)ο蟪绦蛟O(shè)計(jì)、GUI程序設(shè)計(jì)、數(shù)據(jù)結(jié)構(gòu)、算法、并行、網(wǎng)絡(luò)、數(shù)據(jù)庫(kù)和Web程序設(shè)計(jì)。這個(gè)版本旨在把學(xué)生培養(yǎng)成精通Java的程序員。基礎(chǔ)篇包含完全版的前18章內(nèi)容,可用于程序設(shè)計(jì)的門課程(通常稱為CS1)。本書還有一個(gè)AP版本,適合學(xué)習(xí)AP計(jì)算機(jī)科學(xué)(AP Computer Science)課程的高中生使用。
教授編程的好途徑是通過(guò)示例,而學(xué)習(xí)編程的途徑是通過(guò)動(dòng)手練習(xí)。本書通過(guò)示例對(duì)基本概念進(jìn)行講解,并提供大量不同難度的練習(xí)題供學(xué)生進(jìn)行練習(xí)。在我們的程序設(shè)計(jì)課程中,每次課后都布置了編程練習(xí)。
我們的目標(biāo)是編寫一本可以通過(guò)各種應(yīng)用場(chǎng)景中的有趣示例來(lái)教授問(wèn)題求解和程序設(shè)計(jì)的教材。如果你有任何關(guān)于如何改進(jìn)本書的意見(jiàn)或建議,請(qǐng)給我發(fā)郵件。
ACM/IEEE課程體系2013版和ABET課程評(píng)價(jià)
新的ACM/IEEE計(jì)算機(jī)科學(xué)課程體系2013版將知識(shí)體系組織成18個(gè)知識(shí)領(lǐng)域。為了幫助教師基于本書設(shè)計(jì)課程,我們提供了示例教學(xué)大綱來(lái)確定知識(shí)領(lǐng)域和知識(shí)單元。作為一個(gè)常規(guī)的定制示例,示例教學(xué)大綱用于三學(xué)期的課程系列。示例教學(xué)大綱可以從教師資源配套網(wǎng)站獲取。
許多讀者來(lái)自ABET認(rèn)證計(jì)劃。ABET認(rèn)證的一個(gè)關(guān)鍵組成部分是,通過(guò)針對(duì)課程效果的持續(xù)課程評(píng)價(jià)確定學(xué)習(xí)中的薄弱環(huán)節(jié)。我們?cè)诮處熧Y源配套網(wǎng)站中提供了課程效果示例,以及用于檢驗(yàn)課程效果的樣卷。
本版新增內(nèi)容
本版對(duì)各個(gè)細(xì)節(jié)都進(jìn)行了全面修訂,以更清晰地呈現(xiàn)知識(shí)、示例和練習(xí)題。本版的主要改進(jìn)如下:
更新至Java 9、10和11。使用Java 9、10和11版本中的新特性對(duì)示例進(jìn)行了改進(jìn)和簡(jiǎn)化。
GUI相關(guān)章節(jié)更新到JavaFX 11,并改寫了示例。示例和練習(xí)題中的用戶界面現(xiàn)在可以改變尺寸并且居中顯示。
數(shù)據(jù)結(jié)構(gòu)相關(guān)章節(jié)中,更多的示例和練習(xí)題采用lambda表達(dá)式來(lái)簡(jiǎn)化編程。
Comparable和Comparator都被用于比較Heap、PriorityQueue、BST以及AVLTree中的元素。這樣與Java API保持一致,更加實(shí)用、靈活。
第22章引入了字符串匹配算法。
添加了視頻注解。
提供了沒(méi)有出現(xiàn)在書中的額外習(xí)題,這些習(xí)題僅供教師使用。
可以訪問(wèn)本書配套網(wǎng)站www.pearsonhighered.com/liang,了解這一版與前一版的關(guān)聯(lián)以及全部的新特性。
教學(xué)特色
本書使用以下要素組織素材,以幫助讀者高效學(xué)習(xí):
教學(xué)目標(biāo):在每章開(kāi)始列出學(xué)生應(yīng)該掌握的內(nèi)容,學(xué)完這章后,學(xué)生能夠判斷自己是否達(dá)到這些目標(biāo)。
引言:提出引發(fā)思考的問(wèn)題以展開(kāi)討論,激發(fā)讀者深入探討相關(guān)內(nèi)容的積極性。
要點(diǎn)提示:突出每節(jié)中涵蓋的重要概念。
復(fù)習(xí)題:幫助學(xué)生復(fù)習(xí)每節(jié)相關(guān)內(nèi)容并評(píng)估掌握的程度。
問(wèn)題和示例學(xué)習(xí):通過(guò)精心挑選示例,以易于理解的方式教授問(wèn)題求解和程序設(shè)計(jì)概念。本書使用多個(gè)短小的、簡(jiǎn)單的、激發(fā)興趣的例子來(lái)演示重要的概念。
本章小結(jié):回顧學(xué)生應(yīng)該理解和記住的重要主題,有助于鞏固所學(xué)的關(guān)鍵概念。
測(cè)試題:可以在線訪問(wèn),按章節(jié)組織,讓學(xué)生可以就編程概念和技術(shù)進(jìn)行自我測(cè)試。
編程練習(xí)題:按章節(jié)組織,為學(xué)生提供自主應(yīng)用所學(xué)新技能的機(jī)會(huì)。練習(xí)題的難度分為容易(沒(méi)有星號(hào))、適度(*)、難(**)和具有挑戰(zhàn)性(***)四個(gè)級(jí)別。學(xué)習(xí)程序設(shè)計(jì)的竅門就是“實(shí)踐,實(shí)踐,再實(shí)踐”。所以,本書提供了大量的編程練習(xí)題。教師資源網(wǎng)站還為教師提供了額外的200多道帶有答案的編程練習(xí)題。
注意、提示、警告和設(shè)計(jì)指南:貫穿全書,對(duì)程序開(kāi)發(fā)的重要方面提供有價(jià)值的建議和見(jiàn)解。
注意:提供學(xué)習(xí)主題的附加信息,鞏固重要概念。
提示:教授良好的程序設(shè)計(jì)風(fēng)格和實(shí)踐經(jīng)驗(yàn)。
警告:幫助學(xué)生避開(kāi)程序設(shè)計(jì)誤區(qū)。
設(shè)計(jì)指南
【有更新】
作者簡(jiǎn)介
梁勇(Y. Daniel Liang) 現(xiàn)為阿姆斯特朗亞特蘭大州立大學(xué)計(jì)算機(jī)科學(xué)系教授。之前曾是普渡大學(xué)計(jì)算機(jī)科學(xué)系副教授,并兩次獲得普渡大學(xué)杰出研究獎(jiǎng)。他所編寫的Java教程在美國(guó)大學(xué)Java課程中采用率極高,同時(shí)他還兼任Prentice Hall Java系列叢書的編輯。他是“Java Champion”榮譽(yù)得主,并在世界各地為在校學(xué)生和程序員做Java程序設(shè)計(jì)方法及技術(shù)方面的講座。
【有更新】
譯者簡(jiǎn)介
戴開(kāi)宇 復(fù)旦大學(xué)軟件學(xué)院教師,工程碩士導(dǎo)師,中國(guó)計(jì)算機(jī)學(xué)會(huì)會(huì)員。博士畢業(yè)于上海交通大學(xué)計(jì)算機(jī)應(yīng)用專業(yè),2011~2012年在美國(guó)佛羅里達(dá)大學(xué)作訪問(wèn)學(xué)者。承擔(dān)多門本科專業(yè)課程、通識(shí)教育課程以及工程碩士課程,這些課程被評(píng)為校精品課程、上海市重點(diǎn)建設(shè)課程、IBM-教育部精品課程等。
中文版序
譯者序
前言
第19章 泛型 1
19.1 引言 1
19.2 動(dòng)機(jī)和優(yōu)點(diǎn) 1
19.3 定義泛型類和接口 4
19.4 泛型方法 5
19.5 示例學(xué)習(xí):對(duì)一個(gè)對(duì)象數(shù)組進(jìn)行排序 7
19.6 原生類型和向后兼容 8
19.7 通配泛型 10
19.8 泛型的擦除和限制 12
19.9 示例學(xué)習(xí):泛型矩陣類 15
關(guān)鍵術(shù)語(yǔ) 19
本章小結(jié) 19
測(cè)試題 20
編程練習(xí)題 20
第20章 線性表、棧、隊(duì)列和優(yōu)先隊(duì)列 22
20.1 引言 22
20.2 集合 23
20.3 迭代器 26
20.4 使用forEach方法 27
20.5 線性表 28
20.5.1 List接口中的通用方法 28
20.5.2 ArrayList和LinkedList類 30
20.6 Comparator接口 32
20.7 用于線性表和集合的靜態(tài)方法 36
20.8 示例學(xué)習(xí):彈球 40
20.9 向量類和棧類 43
20.10 隊(duì)列和優(yōu)先隊(duì)列 44
20.10.1 Queue接口 44
20.10.2 雙端隊(duì)列Deque和鏈表LinkedList 45
20.11 示例學(xué)習(xí):表達(dá)式求值 47
關(guān)鍵術(shù)語(yǔ) 51
本章小結(jié) 51
測(cè)試題 52
編程練習(xí)題 52
第21章 規(guī)則集和映射 57
21.1 引言 57
21.2 規(guī)則集 57
21.2.1 HashSet 58
21.2.2 LinkedHashSet 61
21.2.3 TreeSet 62
21.3 比較規(guī)則集和線性表的性能 65
21.4 示例學(xué)習(xí):關(guān)鍵字計(jì)數(shù) 67
21.5 映射 69
21.6 示例學(xué)習(xí):?jiǎn)卧~的出現(xiàn)次數(shù) 73
21.7 單例與不可變的集合和映射 75
關(guān)鍵術(shù)語(yǔ) 76
本章小結(jié) 76
測(cè)試題 77
編程練習(xí)題 77
第22章 開(kāi)發(fā)高效算法 79
22.1 引言 79
22.2 使用大O表示法來(lái)衡量算法效率 79
22.3 示例:確定大O 81
22.4 分析算法的時(shí)間復(fù)雜度 85
22.4.1 分析二分查找算法 85
22.4.2 分析選擇排序算法 85
22.4.3 分析漢諾塔問(wèn)題 85
22.4.4 常用的遞推關(guān)系 86
22.4.5 比較常用的增長(zhǎng)函數(shù) 86
22.5 使用動(dòng)態(tài)編程求斐波那契數(shù) 87
22.6 使用歐幾里得算法求公約數(shù) 89
22.7 求素?cái)?shù)的高效算法 93
22.8 使用分治法尋找近點(diǎn)對(duì) 98
22.9 使用回溯法解決八皇后問(wèn)題 101
22.10 計(jì)算幾何:尋找凸包 103
22.10.1 卷包裹算法 104
22.10.2 格雷厄姆算法 105
22.11 字符串匹配 106
22.11.1 暴力算法 106
22.11.2 Boyer-Moore算法 107
22.11.3 Knuth-Morris-Pratt算法 109
關(guān)鍵術(shù)語(yǔ) 112
本章小結(jié) 112
測(cè)試題 113
編程練習(xí)題 113
第23章 排序 120
23.1 引言 120
23.2 插入排序 121
23.3 冒泡排序 123
23.4 歸并排序 125
23.5 快速排序 128
23.6 堆排序 132
23.6.1 堆的存儲(chǔ) 133
23.6.2 添加一個(gè)新結(jié)點(diǎn) 133
23.6.3 刪除根結(jié)點(diǎn) 134
23.6.4 Heap類 135
23.6.5 使用Heap類進(jìn)行排序 137
23.6.6 堆排序的時(shí)間復(fù)雜度 138
23.7 桶排序和基數(shù)排序 139
23.8 外部排序 141
23.8.1 實(shí)現(xiàn)階段Ⅰ 143
23.8.2 實(shí)現(xiàn)階段Ⅱ 143
23.8.3 結(jié)合兩個(gè)階段 145
23.8.4 外部排序復(fù)雜度 148
關(guān)鍵術(shù)語(yǔ) 148
本章小結(jié) 148
測(cè)試題 149
編程練習(xí)題 149
第24章 實(shí)現(xiàn)線性表、棧、隊(duì)列和優(yōu)先隊(duì)列 153
24.1 引言 153
24.2 線性表的通用操作 153
24.3 數(shù)組線性表 156
24.4 鏈表 163
24.4.1 結(jié)點(diǎn) 163
24.4.2 MyLinkedList類 165
24.4.3 實(shí)現(xiàn)MyLinkedList 166
24.4.4 MyArrayList和MyLinkedList 174
24.4.5 鏈表的變體 174
24.5 棧和隊(duì)列 176
24.6 優(yōu)先隊(duì)列 179
本章小結(jié) 180
測(cè)試題 181
編程練習(xí)題 181
第25章 二叉搜索樹(shù) 183
25.1 引言 183
25.2 二叉搜索樹(shù)基礎(chǔ) 183
25.3 表示二叉搜索樹(shù) 184
25.4 查找一個(gè)元素 185
25.5 在BST中插入一個(gè)元素 185
25.6 樹(shù)的遍歷 187
25.7 BST類 188
25.8 刪除BST中的一個(gè)元素 197
25.9 樹(shù)的可視化和MVC 202
25.10 迭代器 205
25.11 示例學(xué)習(xí):數(shù)據(jù)壓縮 207
關(guān)鍵術(shù)語(yǔ) 211
本章小結(jié) 211
測(cè)試題 212
編程練習(xí)題 212
第26章 AVL樹(shù) 216
26.1 引言 216
26.2 重新平衡樹(shù) 217
26.3 為AVL樹(shù)設(shè)計(jì)類 219
26.4 重寫insert方法 220
26.5 實(shí)現(xiàn)旋轉(zhuǎn) 221
26.6 實(shí)現(xiàn)delete方法 221
26.7 AVLTree類 222
26.8 測(cè)試 AVLTree類 227
26.9 AVL樹(shù)的時(shí)間復(fù)雜度分析 230