《Java程序設(shè)計(jì)教程(第3版普通高等教育十二五國(guó)家級(jí)規(guī)劃教材)》講解Java程序設(shè)計(jì)知識(shí)及其編程方法,包括Java語(yǔ)言的基礎(chǔ)語(yǔ)法、結(jié)構(gòu)化程序設(shè)計(jì)、面向?qū)ο蟪绦蛟O(shè)計(jì)、數(shù)組、字符串、向量、哈希表、泛型、枚舉、異常處理、文件和數(shù)據(jù)流、圖形用戶界面設(shè)計(jì)、小應(yīng)用程序、線程、編程規(guī)范、網(wǎng)絡(luò)程序設(shè)計(jì)、多媒體和圖形學(xué)程序設(shè)計(jì)以及數(shù)據(jù)庫(kù)程序設(shè)計(jì)等。
《Java程序設(shè)計(jì)教程(第3版普通高等教育十二五國(guó)家級(jí)規(guī)劃教材)》的章節(jié)編排與內(nèi)容以人們學(xué)習(xí)與認(rèn)知過(guò)程為基礎(chǔ),與公司的實(shí)際需求相匹配。內(nèi)容力求簡(jiǎn)明,每章都附有習(xí)題,而且在附錄中包含了圖、表、例程以及類和接口的頁(yè)碼索引,在正文中采用特殊字體突出中心詞,希望讀者在輕松和歡樂(lè)之中迅速地了解并掌握J(rèn)ava程序設(shè)計(jì)的知識(shí)和方法,能應(yīng)用到實(shí)踐中去。
本書內(nèi)容豐富,結(jié)構(gòu)合理,語(yǔ)言簡(jiǎn)練,而且提供了豐富的例程,既可以作為計(jì)算機(jī)專業(yè)和非計(jì)算機(jī)專業(yè)的基礎(chǔ)教材以及Sun公司的SCJP(Java程序員認(rèn)證)考試的輔導(dǎo)教材,也可以作為需要使用Java語(yǔ)言的工程人員和科技工作者的自學(xué)參考書。
現(xiàn)代科學(xué)技術(shù)正在迅猛地發(fā)展著,計(jì)算機(jī)信息技術(shù)在其中發(fā)揮著巨大的作用。計(jì)算機(jī)技術(shù)已經(jīng)滲透到各行各業(yè),并推動(dòng)著這些行業(yè)迅速發(fā)展。因此,如何盡快地掌握計(jì)算機(jī)知識(shí),學(xué)好一門計(jì)算機(jī)語(yǔ)言,已經(jīng)成為一個(gè)比較普遍面臨的基本問(wèn)題。本書就是在這種背景下編寫的。
首先,Java語(yǔ)言本身是可以滿足這種需求的一種計(jì)算機(jī)語(yǔ)言。它比C++計(jì)算機(jī)語(yǔ)言簡(jiǎn)單,去掉了在C++語(yǔ)言中一些不易理解或容易出錯(cuò)的概念和語(yǔ)法。此外,因?yàn)镴ava是一種較新的計(jì)算機(jī)語(yǔ)言,所以它在面向?qū)ο蠛投嗑程特性上比其他現(xiàn)有計(jì)算機(jī)語(yǔ)言更為純粹一些。同時(shí),Java語(yǔ)言在網(wǎng)絡(luò)、平臺(tái)無(wú)關(guān)性和安全性方面的優(yōu)點(diǎn)也比其他計(jì)算機(jī)語(yǔ)言(如C++語(yǔ)言)更為突出。而且,學(xué)習(xí)Java程序設(shè)計(jì),應(yīng)用Java語(yǔ)言實(shí)現(xiàn)算法也比較容易,從而節(jié)省編程時(shí)間。同時(shí),編寫出來(lái)的Java代碼比較容易得到復(fù)用和移植。
最初Java程序設(shè)計(jì)教材是應(yīng)選修我主講的“Java程序設(shè)計(jì)”課程的同學(xué)要求而編寫的。在2003—2004年期間,共有三百多名清華大學(xué)本科生選修該課程。其中很多同學(xué)通過(guò)清華大學(xué)的教學(xué)評(píng)估系統(tǒng)以及給我寫E-mail等方式強(qiáng)烈要求我編寫一本Java程序設(shè)計(jì)教材。為此,我編寫了該教材(雍俊海. Java程序設(shè)計(jì). 北京:清華大學(xué)出版社,2004)。
我希望該教材能夠給讀者帶來(lái)盡可能多的益處。對(duì)于學(xué)習(xí)而言,首先最重要的應(yīng)當(dāng)是對(duì)學(xué)習(xí)方法的引導(dǎo)。學(xué)習(xí)每門課程都有其內(nèi)在的學(xué)習(xí)規(guī)律。順應(yīng)其規(guī)律,采用正確的學(xué)習(xí)方法一般將會(huì)產(chǎn)生良好的學(xué)習(xí)效果。對(duì)于有些初學(xué)者而言,在最開始學(xué)習(xí)的時(shí)候,要把握學(xué)習(xí)規(guī)律常常有難度;要按學(xué)習(xí)規(guī)律進(jìn)行學(xué)習(xí),常常會(huì)有很多來(lái)自自身的阻力。如果能夠克服上述不利因素并加以堅(jiān)持,相信會(huì)有事半功倍的效果。希望教材能夠?yàn)檫m應(yīng)這些學(xué)習(xí)規(guī)律添加一些輔助的約束力,從而幫助初學(xué)者克服阻力。
學(xué)習(xí)首先應(yīng)當(dāng)是“學(xué)以致用”。為此,我常常利用各種機(jī)會(huì)調(diào)研軟件公司對(duì)Java程序設(shè)計(jì)的實(shí)際需求。如果能夠從應(yīng)用出發(fā)進(jìn)行學(xué)習(xí),那么應(yīng)當(dāng)會(huì)提高學(xué)習(xí)的效率。另外,學(xué)習(xí)過(guò)程的關(guān)鍵應(yīng)當(dāng)是實(shí)踐。教材是實(shí)踐的一種輔助工具。為此,本教材比較詳細(xì)地講解了Java語(yǔ)言編程環(huán)境的建立過(guò)程。希望讀者在開始學(xué)習(xí)Java語(yǔ)言的時(shí)候能夠建立起Java語(yǔ)言編程環(huán)境。
在教材每章的后面都有習(xí)題。對(duì)教材中的習(xí)題,都沒(méi)有提供答案,真誠(chéng)希望這些習(xí)題能夠給讀者增加一些自主性思考和實(shí)踐練習(xí)的機(jī)會(huì),意味著應(yīng)當(dāng)通過(guò)自己的思考去理解Java語(yǔ)言并求解問(wèn)題,而且同時(shí)應(yīng)當(dāng)不要拘泥于某一種答案,即可以采用多種不同的方法求解相同的問(wèn)題。這似乎會(huì)增加學(xué)習(xí)時(shí)間和學(xué)習(xí)難度,但實(shí)際上一般都會(huì)迅速提高學(xué)習(xí)的效率。在剛開始的時(shí)候,有些讀者可能會(huì)不太習(xí)慣,但是如果能堅(jiān)持,那么會(huì)迅速降低后續(xù)學(xué)習(xí)的難度,而且會(huì)對(duì)Java語(yǔ)言的掌握變得更加牢固。另外,希望讀者能夠理解習(xí)題編寫的初衷,即它的主要目的是加強(qiáng)具有自主性思考的實(shí)踐,而不是習(xí)題答案本身。希望讀者能夠經(jīng)?偨Y(jié)實(shí)踐過(guò)程的收獲,享受其中的成就感,即使無(wú)法最終求解問(wèn)題。因?yàn)榻滩奶峁┑牧?xí)題偏少,所以我還整理了一本習(xí)題集《Java程序設(shè)計(jì)習(xí)題集(含參考答案)》。這本習(xí)題集對(duì)判斷正誤題、填空題和選擇題基本上都給出了答案,但只給出少量編程題的答案。這本習(xí)題集應(yīng)當(dāng)是本教材的一個(gè)有益補(bǔ)充。如果讀者需要閱讀編程樣例,那么教材已經(jīng)提供了158個(gè)例程,而且在建立Java語(yǔ)言編程環(huán)境之后,在Java系統(tǒng)的安裝目錄中也包含了一些例程。
在進(jìn)行編程實(shí)踐的時(shí)候,常常應(yīng)當(dāng)查閱在線幫助文檔,而不是各種教材或參考書。這對(duì)很多初學(xué)者來(lái)說(shuō)有很大的難度,難度主要來(lái)自于自身的惰性,F(xiàn)在越來(lái)越多的在線幫助文檔已經(jīng)有了相應(yīng)的中文版本。即使直接使用英文的在線幫助文檔,它的詞匯量也不大,而且語(yǔ)法結(jié)構(gòu)比較簡(jiǎn)單。另外,理解這些詞匯的關(guān)鍵是實(shí)踐,即通過(guò)實(shí)踐理解或加深理解各種中文或英文術(shù)語(yǔ)。為了強(qiáng)化讀者對(duì)在線幫助文檔的使用,在2004年出版的那本教材中,基本上未將在線幫助文檔的內(nèi)容寫入,而希望讀者對(duì)照在線幫助文檔進(jìn)行教材的閱讀。當(dāng)然,它的一個(gè)負(fù)面作用是閱讀教材的速度會(huì)變慢。但這種“慢”屬于“磨刀不誤砍柴工”,會(huì)給以后的工作或?qū)W習(xí)帶來(lái)較大的益處,實(shí)際上一般都會(huì)提高工作與學(xué)習(xí)的整體效率。在本教材中,應(yīng)很多讀者的要求,將這些本來(lái)應(yīng)當(dāng)屬于在線幫助文檔的內(nèi)容添加到教材中,但是強(qiáng)烈希望讀者不僅不要忽略在線幫助文檔,而且應(yīng)當(dāng)將重視的程度提高到足夠的高度。當(dāng)然,本教材不是簡(jiǎn)單地去翻譯在線幫助文檔,而是在該文檔的基礎(chǔ)上增加編程原理、經(jīng)驗(yàn)和技巧的介紹,而且在內(nèi)容上與在線幫助文檔相比力求準(zhǔn)確、簡(jiǎn)潔、易于理解。
本教材是在2004年版本的基礎(chǔ)上編寫而成的,除了添加相關(guān)的在線幫助文檔內(nèi)容之外,還增加了泛型、枚舉、向量、哈希表、二維表格、后臺(tái)線程、安全網(wǎng)絡(luò)程序設(shè)計(jì)和像素處理等內(nèi)容,并對(duì)數(shù)據(jù)庫(kù)程序設(shè)計(jì)等章節(jié)全部重新進(jìn)行改寫,使得教材內(nèi)容更加全面,體現(xiàn)出一定的手冊(cè)特點(diǎn)。另外,為了方便讀者查找教材知識(shí)點(diǎn)和中心內(nèi)容,通過(guò)加黑加粗加框的方式強(qiáng)調(diào)各個(gè)部分內(nèi)容的中心詞以及各個(gè)基本概念或定義的核心詞,并在附錄中添加了圖、表、例程以及類和接口的頁(yè)碼索引。同時(shí)本教材繼承了2004年版本的一些特點(diǎn),例如考慮了如何方便讀者自學(xué),希望各章內(nèi)容的相關(guān)性盡可能地小。所有例程都在Java 1.7版本(也稱為7.0版本)上編譯運(yùn)行。
本書既可以作為計(jì)算機(jī)專業(yè)和非計(jì)算機(jī)專業(yè)的基礎(chǔ)教材,也可以作為需要使用計(jì)算機(jī)的工程人員和科技工作者的自學(xué)參考書。本書在編寫與出版的過(guò)程中得到了許多朋友的幫助,這里一并表示誠(chéng)摯的謝意。其中,讀者與選修我所負(fù)責(zé)課程的同學(xué)起到了非常重要的作用,他們的建議和批評(píng)意見(jiàn)是教材發(fā)生變化的最重要的外在因素,這里再次對(duì)他們表示誠(chéng)摯的謝意。清華大學(xué)的研究生杜敏、范懷宇、高揚(yáng)、高躍、李勇、林鴻維、劉倩欣、劉曙、劉永賓、盧新來(lái)、潘峰、宋征軒、孫學(xué)衛(wèi)、佟強(qiáng)、汪亞君、王天興、王維勃、王治中、夏雨、許嵩罡、余忠冕、喻曉峰、張佳、張楠、張怡文和趙宏星等同學(xué)參與了本書的校對(duì)工作。本書也凝聚了他們的勞動(dòng)結(jié)晶。歡迎廣大讀者特別是講授此課程的教師對(duì)本教材進(jìn)行批評(píng)和指正。我真誠(chéng)希望這本教材能夠給讀者帶來(lái)輕松和快樂(lè),而我也會(huì)不斷為此努力。真誠(chéng)歡迎各種建設(shè)性意見(jiàn)。
清華大學(xué)出版社的網(wǎng)站http://www.tup.tsinghua.edu.cn可以下載與本教材相關(guān)的一些資料:①在本教材中用到的所有例程;②本教材的課件,該課件可能會(huì)不斷更新。
雍俊海于清華園
2013年8月
雍俊海:清華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)系學(xué)士、碩士和博士,美國(guó)肯塔基大學(xué)計(jì)算機(jī)系博士后,F(xiàn)為清華大學(xué)軟件學(xué)院教授和博士生導(dǎo)師。主要研究方向?yàn)橛?jì)算機(jī)輔助幾何設(shè)計(jì)、計(jì)算機(jī)圖形學(xué)和計(jì)算機(jī)動(dòng)畫。目前負(fù)責(zé)清華大學(xué)計(jì)算機(jī)動(dòng)畫精品課程。2004年入選教育部“新世紀(jì)優(yōu)秀人才支持計(jì)劃”,2005年獲得教育部自然科學(xué)一等獎(jiǎng),2006年獲得國(guó)家杰出青年科學(xué)基金、清華大學(xué)青年教師教學(xué)優(yōu)秀獎(jiǎng),2007年被授予清華大學(xué)研究生“良師益友”稱號(hào),2008年獲得霍英東教育基金會(huì)高等院校青年教師基金。
第1章 緒論
1.1 歷史簡(jiǎn)介
1.2 特點(diǎn)
1.3 開發(fā)環(huán)境的建立
1.4 Java程序及其執(zhí)行過(guò)程
1.4.1 開發(fā)Java程序的工作流程
1.4.2 Java程序的工作原理
1.5 本章小結(jié)
習(xí)題
第2章 結(jié)構(gòu)化程序設(shè)計(jì)
2.1 標(biāo)識(shí)符和關(guān)鍵字
2.2 基本數(shù)據(jù)類型、直接量和變量
2.2.1 基本數(shù)據(jù)類型
2.2.2 直接量
2.2.3 變量 第1章 緒論
1.1 歷史簡(jiǎn)介
1.2 特點(diǎn)
1.3 開發(fā)環(huán)境的建立
1.4 Java程序及其執(zhí)行過(guò)程
1.4.1 開發(fā)Java程序的工作流程
1.4.2 Java程序的工作原理
1.5 本章小結(jié)
習(xí)題
第2章 結(jié)構(gòu)化程序設(shè)計(jì)
2.1 標(biāo)識(shí)符和關(guān)鍵字
2.2 基本數(shù)據(jù)類型、直接量和變量
2.2.1 基本數(shù)據(jù)類型
2.2.2 直接量
2.2.3 變量
2.3 運(yùn)算符
2.3.1 算術(shù)運(yùn)算符
2.3.2 關(guān)系運(yùn)算符
2.3.3 布爾邏輯運(yùn)算符
2.3.4 位運(yùn)算符
2.3.5 賦值類運(yùn)算符
2.3.6 條件運(yùn)算符
2.3.7 其他運(yùn)算符
2.4 控制結(jié)構(gòu)
2.4.1 if語(yǔ)句和if-else語(yǔ)句
2.4.2 switch語(yǔ)句
2.4.3 for語(yǔ)句
2.4.4 while語(yǔ)句
2.4.5 do-while語(yǔ)句
2.4.6 break語(yǔ)句
2.4.7 continue語(yǔ)句
2.5 結(jié)構(gòu)化程序設(shè)計(jì)
2.6 本章小結(jié)
習(xí)題
第3章 面向?qū)ο蟪绦蛟O(shè)計(jì)
3.1 類、域、方法和實(shí)例對(duì)象
3.2 繼承性
3.3 多態(tài)性
3.3.1 靜態(tài)多態(tài)性
3.3.2 動(dòng)態(tài)多態(tài)性
3.4 包
3.5 封裝性
3.6 修飾詞abstract、static和final
3.6.1 修飾詞abstract
3.6.2 修飾詞static
3.6.3 修飾詞final
3.7 接口
3.8 內(nèi)部類
3.9 變量作用域范圍與參數(shù)傳遞方式
3.9.1 變量作用域范圍
3.9.2 方法調(diào)用的值傳遞方式
3.10 面向?qū)ο蟪绦蛟O(shè)計(jì)基本思想
3.11 本章小結(jié)
習(xí)題
第4章 數(shù)組、字符串、向量與哈希表
……
第5章 泛型、枚舉與for語(yǔ)句的簡(jiǎn)化寫法
第6章 異常處理、遞歸和單體程序設(shè)計(jì)方法
第7章 文件與數(shù)據(jù)流
第8章 Swing圖形用戶界面程序設(shè)計(jì)
第9章 小應(yīng)用程序
第10章 編程規(guī)范和程序調(diào)試
第11章 多線程程序設(shè)計(jì)
第12章 網(wǎng)絡(luò)程序設(shè)計(jì)
第13章 多媒體與圖形學(xué)程序設(shè)計(jì)
第14章 數(shù)據(jù)庫(kù)程序設(shè)計(jì)