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