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