本書(shū)是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)容。本書(shū)通過(guò)示例講解問(wèn)題求解技巧,提供大量的程序清單,每章配有豐富的復(fù)習(xí)題和編程練習(xí)題,幫助讀者掌握編程技術(shù),并學(xué)會(huì)應(yīng)用所學(xué)技術(shù)解決實(shí)際開(kāi)發(fā)中遇到的問(wèn)題;A(chǔ)篇主要介紹基本程序設(shè)計(jì)、語(yǔ)法結(jié)構(gòu)、面向?qū)ο蟪绦蛟O(shè)計(jì)、繼承和多態(tài)、異常處理和文本I/O、抽象類(lèi)和接口等內(nèi)容。本書(shū)可作為高等院校計(jì)算機(jī)相關(guān)專(zhuān)業(yè)程序設(shè)計(jì)課程的教材,也可作為Java語(yǔ)言及編程愛(ài)好者的參考資料。
許多讀者就本書(shū)之前的版本給出了很多反饋,這些評(píng)論和建議極大地改進(jìn)了本書(shū)。這一版在表述、組織、示例、練習(xí)題以及附錄方面都有大幅改進(jìn)。 本書(shū)采用基礎(chǔ)優(yōu)先的方法,在設(shè)計(jì)用戶自定義類(lèi)之前,首先介紹基本的程序設(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)備。
本書(shū)以問(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ù)以支持編寫(xiě)解決問(wèn)題的程序。為了支持以問(wèn)題驅(qū)動(dòng)的方式來(lái)教授程序設(shè)計(jì),本書(shū)提供了大量不同難度的問(wèn)題來(lái)激發(fā)學(xué)生的積極性。為了吸引各個(gè)專(zhuān)業(yè)的學(xué)生來(lái)學(xué)習(xí),這些問(wèn)題涵蓋很多應(yīng)用領(lǐng)域,包括數(shù)學(xué)、科學(xué)、商業(yè)、金融、游戲、動(dòng)畫(huà)以及多媒體等。 本書(shū)將程序設(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)。 本書(shū)廣泛應(yīng)用于全球眾多大學(xué)的程序設(shè)計(jì)入門(mén)、數(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ì)的第一門(mén)課程(通常稱(chēng)為CS1)。
本書(shū)還有一個(gè)AP版本,適合學(xué)習(xí)AP計(jì)算機(jī)科學(xué)(AP Computer Science)課程的高中生使用。 教授編程的最好途徑是通過(guò)示例,而學(xué)習(xí)編程的唯一途徑是通過(guò)動(dòng)手練習(xí)。本書(shū)通過(guò)示例對(duì)基本概念進(jìn)行講解,并提供大量不同難度的練習(xí)題供學(xué)生進(jìn)行練習(xí)。在我們的程序設(shè)計(jì)課程中,每次課后都布置了編程練習(xí)。 我們的目標(biāo)是編寫(xiě)一本可以通過(guò)各種應(yīng)用場(chǎng)景中的有趣示例來(lái)教授問(wèn)題求解和程序設(shè)計(jì)的教材。如果你有任何關(guān)于如何改進(jìn)本書(shū)的意見(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ū)設(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,并改寫(xiě)了示例。示例和練習(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)在書(shū)中的額外習(xí)題,這些習(xí)題僅供教師使用。 可以訪問(wèn)本書(shū)配套網(wǎng)站www.pearsonhighered.com/liang,了解這一版與前一版的關(guān)聯(lián)以及全部的新特征。
教學(xué)特色 本書(shū)使用以下要素組織素材,以幫助讀者高效學(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ì)概念。本書(shū)使用多個(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ì)的竅門(mén)就是實(shí)踐、實(shí)踐、再實(shí)踐。所以,本書(shū)提供了大量的編程練習(xí)題。教師資源網(wǎng)站還為教師提供了額外的200多道帶有答案的編程練習(xí)題。 注意、提示、警告和設(shè)計(jì)指南:貫穿全書(shū),對(duì)程序開(kāi)發(fā)的重要方面提供有價(jià)值的建議和見(jiàn)解。 注意:提供學(xué)習(xí)主題的附加信息,鞏固重要概念。 提示:教授良好的程序設(shè)計(jì)風(fēng)格和實(shí)踐經(jīng)驗(yàn)。
作者簡(jiǎn)介 梁勇(Y. Daniel Liang) 現(xiàn)為阿姆斯特朗亞特蘭大州立大學(xué)計(jì)算機(jī)科學(xué)系教授。之前曾是普渡大學(xué)計(jì)算機(jī)科學(xué)系副教授,并兩次獲得普渡大學(xué)杰出研究獎(jiǎng)。他所編寫(xiě)的Java教程在美國(guó)大學(xué)Java課程中采用率極高,同時(shí)他還兼任Prentice Hall Java系列叢書(shū)的編輯。他是“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)用專(zhuān)業(yè),2011~2012年在美國(guó)佛羅里達(dá)大學(xué)作訪問(wèn)學(xué)者。承擔(dān)多門(mén)本科專(zhuān)業(yè)課程、通識(shí)教育課程以及工程碩士課程,這些課程被評(píng)為校精品課程、上海市重點(diǎn)建設(shè)課程、IBM-教育部精品課程等。
出版者的話
中文版序
譯者序
前言
第1章 計(jì)算機(jī)、程序和Java概述 1 1.1 引言 1 1.2 什么是計(jì)算機(jī) 2 1.2.1 中央處理器 2 1.2.2 比特和字節(jié) 3 1.2.3 內(nèi)存 3 1.2.4 存儲(chǔ)設(shè)備 4 1.2.5 輸入和輸出設(shè)備 5 1.2.6 通信設(shè)備 5 1.3 編程語(yǔ)言 6 1.3.1 機(jī)器語(yǔ)言 6 1.3.2 匯編語(yǔ)言 6 1.3.3 高級(jí)語(yǔ)言 7 1.4 操作系統(tǒng) 8 1.4.1 控制和監(jiān)視系統(tǒng)活動(dòng) 8 1.4.2 分配和調(diào)配系統(tǒng)資源 9 1.4.3 調(diào)度操作 9 1.5 Java的特性和應(yīng)用 9 1.6 Java語(yǔ)言規(guī)范、API、JDK、JRE和IDE 10 1.7 一個(gè)簡(jiǎn)單的Java程序 11 1.8 創(chuàng)建、編譯和執(zhí)行Java程序 13 1.9 程序設(shè)計(jì)風(fēng)格和文檔 16 1.9.1 正確的注釋和注釋風(fēng)格 16 1.9.2 正確的縮進(jìn)和空白 17 1.9.3 塊的風(fēng)格 17 1.10 程序設(shè)計(jì)錯(cuò)誤 18 1.10.1 語(yǔ)法錯(cuò)誤 18 1.10.2 運(yùn)行時(shí)錯(cuò)誤 18 1.10.3 邏輯錯(cuò)誤 19 1.10.4 常見(jiàn)錯(cuò)誤 19 1.11 使用NetBeans開(kāi)發(fā)Java程序 20 1.11.1 創(chuàng)建Java項(xiàng)目 21 1.11.2 創(chuàng)建Java類(lèi) 22 1.11.3 編譯和運(yùn)行類(lèi) 22 1.12 使用Eclipse開(kāi)發(fā)Java程序 23 1.12.1 創(chuàng)建Java項(xiàng)目 23 1.12.2 創(chuàng)建Java類(lèi) 24 1.12.3 編譯和運(yùn)行類(lèi) 25 關(guān)鍵術(shù)語(yǔ) 25 本章小結(jié) 26 測(cè)試題 27 編程練習(xí)題 27
第2章 基本程序設(shè)計(jì) 29 2.1 引言 29 2.2 編寫(xiě)簡(jiǎn)單的程序 29 2.3 從控制臺(tái)讀取輸入 32 2.4 標(biāo)識(shí)符 35 2.5 變量 35 2.6 賦值語(yǔ)句和賦值表達(dá)式 37 2.7 命名常量 38 2.8 命名習(xí)慣 39 2.9 數(shù)值數(shù)據(jù)類(lèi)型和操作 39 2.9.1 從鍵盤(pán)讀取數(shù)值 40 2.9.2 數(shù)值操作符 41 2.9.3 指數(shù)運(yùn)算 42 2.10 數(shù)值型字面值 43 2.10.1 整型字面值 43 2.10.2 浮點(diǎn)型字面值 43 2.10.3 科學(xué)記數(shù)法 44 2.11 JShell 44 2.12 表達(dá)式求值和操作符優(yōu)先級(jí) 46 2.13 示例學(xué)習(xí):顯示當(dāng)前時(shí)間 48 2.14 增強(qiáng)賦值操作符 49 2.15 自增和自減操作符 50 2.16 數(shù)值類(lèi)型轉(zhuǎn)換 52 2.17 軟件開(kāi)發(fā)過(guò)程 54 2.18 示例學(xué)習(xí):計(jì)算貨幣單位 58 2.19 常見(jiàn)錯(cuò)誤和陷阱 60 關(guān)鍵術(shù)語(yǔ) 62 本章小結(jié) 62 測(cè)試題 63 編程練習(xí)題 63
第3章 選擇 68 3.1 引言 68 3.2 boolean數(shù)據(jù)類(lèi)型、值和表達(dá)式 68 3.3 if語(yǔ)句 70 3.4 雙分支if-else語(yǔ)句 72 3.5 嵌套的if語(yǔ)句和多分支if-else語(yǔ)句 73 3.6 常見(jiàn)錯(cuò)誤和陷阱 75 3.7 產(chǎn)生隨機(jī)數(shù) 79 3.8 示例學(xué)習(xí):計(jì)算體重指數(shù) 80 3.9 示例學(xué)習(xí):計(jì)算稅率 82 3.10 邏輯操作符 84 3.11 示例學(xué)習(xí):判斷閏年 88 3.12 示例學(xué)習(xí):彩票 89 3.13 switch語(yǔ)句 90 3.14 條件操作符 93 3.15 操作符的優(yōu)先級(jí)和結(jié)合規(guī)則 95 3.16 調(diào)試 96 關(guān)鍵術(shù)語(yǔ) 96 本章小結(jié) 97 測(cè)試題 97 編程練習(xí)題 97
第4章 數(shù)學(xué)函數(shù)、字符和字符串 106 4.1 引言 106 4.2 常用數(shù)學(xué)函數(shù) 107 4.2.1 三角函數(shù)方法 107 4.2.2 指數(shù)函數(shù)方法 107 4.2.3 舍入方法 108 4.2.4 min、max和abs方法 108 4.2.5 random方法 109 4.2.6 示例學(xué)習(xí):計(jì)算三角形的角度 109 4.3 字符數(shù)據(jù)類(lèi)型和操作 111 4.3.1 Unicode和ASCII碼 111 4.3.2 特殊字符的轉(zhuǎn)義序列 112 4.3.3 字符型數(shù)據(jù)與數(shù)值型數(shù)據(jù)之間的類(lèi)型轉(zhuǎn)換 113 4.3.4 比較和測(cè)試字符 114 4.4 String類(lèi)型 115 4.4.1 獲取字符串長(zhǎng)度 116 4.4.2 從字符串中獲取字符 116 4.4.3 連接字符串 117 4.4.4 轉(zhuǎn)換字符串 118 4.4.5 從控制臺(tái)讀取字符串 118 4.4.6 從控制臺(tái)讀取字符 119 4.4.7 字符串比較 119 4.4.8 獲得子字符串 121 4.4.9 查找字符串中的字符或者子串 121 4.4.10 字符串和數(shù)值間的轉(zhuǎn)換 122 4.5 示例學(xué)習(xí) 124 4.5.1 猜測(cè)生日 124 4.5.2 將十六進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù) 127 4.5.3 使用字符串修改彩票程序 129 4.6 格式化控制臺(tái)輸出 130 關(guān)鍵術(shù)語(yǔ) 134 本章小結(jié) 134 測(cè)試題 134 編程練習(xí)題 134
第5章 循環(huán) 140 5.1 引言 140 5.2 while循環(huán) 141 5.3 示例學(xué)習(xí):猜數(shù)字 143 5.4 循環(huán)設(shè)計(jì)策略 146 5.5 使用用戶確認(rèn)或標(biāo)記值控制循環(huán) 148 5.6 do-while循環(huán) 151 5.7 for循環(huán) 153 5.8 采用哪種循環(huán) 156 5.9 嵌套循環(huán) 158 5.10 最小化數(shù)值錯(cuò)誤 160 5.11 示例學(xué)習(xí) 161 5.11.1 求最大公約數(shù) 161 5.11.2 預(yù)測(cè)未來(lái)學(xué)費(fèi) 163 5.11.3 將十進(jìn)制數(shù)轉(zhuǎn)換為十六進(jìn)制數(shù) 163 5.12 關(guān)鍵字break和continue 165 5.13 示例學(xué)習(xí):判斷回文 168 5.14 示例學(xué)習(xí):顯示素?cái)?shù) 170