內容簡介
本書詳細介紹了Java面向對象的核心編程思想和方法,特別注重程式設計的實用性,使讀者具備運用面向對象的方法分析和解決實際問題的能力。
本書主要內容包括Java編程基礎、面向對象編程原理、接口、包、泛型的基本概念、鍊表、棧、散列、字元串處理、異常處理、輸入和輸出、多執行緒、小程式、Swing 圖形界面設計、事件處理、資料庫增刪改等操作方法,以及資料庫編程綜合舉例等,非常適合Java初學者閱讀。此外,本書還突出了Java與C/C++的異同點,從而非常適合具備C/C++編程經驗,又想轉向Java編程的讀者閱讀。
本書語言流暢、實例豐富,講解了Java程式設計的核心內容。全部代碼都在JDK 7.0環境下調試通過,並配有大量的習題,同時在指定網站提供了該書的電子教案和程式示例源碼,特別適合高等院校用作講授Java 語言編程和面向對象程式設計的教材。
前言
Java程式設計是高等學校計算機類和電子信息類學科各專業的核心專業基礎課程,是培養學生面向對象程式設計能力的主幹課程之一,在計算機學科的教學中非常重要。
1995年5月Sun Microsystems公司推出的Java語言是一種令人振奮的新型語言,它具有面向對象、平台無關、可移植性強、安全、支持分散式等諸多特徵,特別適合網路編程。目前,Java語言已經成為高校學生學習面向對象程式設計的必選語言。
2004年9月,Sun公司發布了J2SE 1.5,是Java語言發展史上的一個里程碑,同時將J2SE 1.5更名為J2SE 5.0。2005年6月,JavaOne大會召開,Sun公司將Java版本及其平台更名,取消了其中的數字“2”,J2EE更名為Java EE,J2SE更名為Java SE,J2ME更名為Java ME,JDK 1.6更名為Java SE6。2009年4月,世界一流的資料庫軟體商Oracle公司收購了Sun公司,我們在本書中稱Java是Oracle公司的產品。
從程式設計語言的發展歷史來看,Java語言是在C++語言之上推出的新一代語言,其語法與C++語法相似,但剔除了C++中易於出錯的成分。Java增加了諸如記憶體自動回收之類的新功能,刪除了C++中令人費解的、不常用的成分,如指針和運算符重載等。Java從問世以來,很快流行於全世界,並獲得了極大成功。目前,許多軟體項目已選擇Java語言作為其程式語言,特別是計算機網路方面的軟體。
本書前三版受到了大量讀者(高校教師、大學生、程式設計師等)的熱烈歡迎,他們在使用的過程中,給作者提出了一些很好的意見和建議,在此,作者表示深深的感謝。
在本書再版的過程中,張鳳林修訂了本書的第1~4章,其餘的由皮德常修訂,全書由皮德常通稿。作者的研究生張偉、王延達等人為本書做了大量的資料收集和程式驗證工作。
本書與前版相比的改進之處
(1) 在程式編排上,採用了“程式舉例→程式運行結果→程式解析”統一風格,使讀者能一目了然地找到關鍵點。(2) 增加了泛型程式設計。泛型程式設計意味著編寫的代碼可以被很多不同類型的對象重用,它使得Java程式具有更強的可移植性。
(3) 增加了針對資料庫的編程以及綜合套用設計,給出了一個針對Access資料庫編程的綜合舉例。為讀者採用Java語言進行課程設計和項目研發打下了堅實的基礎。
(4) 將GUI布局管理器與事件處理進行了組合;增加了8.6節Java中的檔案新特性、9.3節執行緒的基本操作,以及12.4節資料庫操作中的常用接口和類,這些都是新版Java的內容。
(5) 依據最新版JDK 7.0,新版教材增刪了部分內容。針對Java語言近幾年的進展,新教材與時俱進,與前面的JDK 6.0相比,本書根據JDK 7.0的變化,增刪改了許多細微的知識點,並採用醒目的標註方式給出了解釋。
本書特點
1) 抓重要概念
Java編程屬高等院校計算機相關專業的學生要學習的一門專業課,一般安排在C/C++課程之後學習,理論教學的學時往往比較少,本科教學大多是36學時,大專教學是48學時。在如此少的學時內,教師不可能講授完Java的所有知識,只能抓住重點內容進行介紹。針對這種情況,本書突出了Java與C/C++的不同之處,對這些語言的共性點不作詳細介紹,僅僅講授Java的核心內容,這不但便於讀者學習和掌握,同時也便於教師講解。
2) 捨棄次要內容
考慮到Java課程的學時安排,以及Java與C/C++之間的關係,本書對Java開發工具的套用、基本數據類型、運算符、控制語句和類庫,都沒有作過多的討論。例如,Java中的基本數據類型、運算符及控制語句等內容與C/C++類似,因而只是作了簡單的介紹;另外,由於Java類庫十分龐大,因此本書僅對常用的類庫進行了介紹。
3) 力求培養學生的思考能力
本書就Java的一些實現技術進行了討論和分析,並介紹了實現內幕。例如,作者結合自己的理解,分析了實例變數和方法的多態性問題(見4.9節);結合String和StringBuffer類,分析了“+”號操作的實現內幕(見6.3.3節)。這些內容對培養學生的思考能力提供了一定的幫助,有助於培養他們勤于思考,勇於實踐,敢於創新的能力。
4) 以最新的Java SE為標準
本書採用最新版本的JDK 7 U65(簡稱JDK 7)和非常優秀的NetBeans IDE 8.0作為Java程式設計的開發環境,讀者均可從Oracle網站免費下載。
NetBeans IDE 是一個可用於 Windows、Mac、Linux 和 Solaris平台上的集成開發環境,通過該環境讀者可以使用Java平台以及JavaFX、JavaScript和C/C++等語言快速創建Web、企業、桌面和Mobile應用程式。
5) 突出與C/C++的異同點
如前所述,Java課程往往安排在C/C++課程之後。為了便於讀者對Java的理解和掌握,本書在內容編排上突出了Java與C/C++的異同點,以免讀者誤解Java的知識點,做到快速掌握Java編程的核心思想。
6) 力求通俗易懂
編寫本書的目的是讓讀者通過自學或在教師的指導下,學會運用Java進行面向對象的程式設計。因此,本書圍繞如何進行Java編程展開。為了便於讀者學習,作者力求使本書的語言通俗易懂,將複雜的概念採用淺顯的語言來講述,便於讀者理解和掌握。
本書排版
(1) 每章開始均點明本章要講解的內容和學習要求。
(2) 每章結束時,都進行了小結,給出了該章內容的概括性描述,並對該章的知識點進行了歸納。
(3) 每章安排的習題都具有很強的操作性,讀者可通過計算機進行練習。
(4) 書中重要的內容採用黑體標記,特別重要的內容採用下面加點的方式標記。
(5) 本書強調程式的可讀性。書中的程式全部採用統一的程式設計風格。例如,類名、方法名和變數名的定義做到“見名知義”;左大括弧和右大括弧對應,並採用縮排格式組織程式代碼;此外,對程式中的語句儘可能多地進行了注釋。
(6) 強調程式的可移植性,不以某個Java開發工具為標準,而是以最新JDK 7.0為標準。
(7) 本書包含了大量的程式示例,並給出了運行結果。凡是程式開頭帶有程式編號的程式,都是完整的程式,可以直接在計算機上編譯運行。
(8) 本書採用了醒目的標記來顯示知識點。這些標記包括“注意”和“思考”,它們穿插在全書中,能幫助讀者儘快找到重要的信息。這些標記的含義如下:
【注意】值得讀者關注的地方,它們往往是容易混淆的知識點。
【思考】提出問題,引導讀者思考,培養思考能力。創新從“問號”開始。
圖書目錄
第1章Java語言簡介
1.1Java語言的發展歷程1
1.2Java語言的特點2
1.2.1簡單性2
1.2.2面向對象3
1.2.3分布性3
1.2.4解釋執行3
1.2.5健壯性3
1.2.6安全性4
1.2.7結構中立4
1.2.8可移植性4
1.2.9高效性5
1.2.10多執行緒5
1.2.11動態性5
1.3Java類庫的概念5
1.4網路瀏覽器7
1.5Java開發工具7
1.6Java程式分類9
1.6.1使用NetBeans運行Java應用程式9
1.6.2使用NetBeans運行Java Applet小程式10
1.7對Java程式的解釋11
1.7.1程式注釋方法11
1.7.2對Java應用程式的解釋12
1.7.3對Java小程式的解釋13
1.7.4對HTML檔案的解釋14
1.8編寫Java程式的風格要求14
本章小結15
思考和練習15
第2章數據類型、運算符和表達式
2.1常量16
2.2變數17
2.2.1整型變數182.2.2字元型變數19
2.2.3浮點型變數19
2.2.4布爾型變數20
2.2.5對原子類型變數生存空間的討論21
2.3變數賦值問題21
2.4數組22
2.4.1一維數組22
2.4.2二維數組24
2.4.3數組初始化25
2.5Java中的參數傳遞方式26
2.6Java的運算符28
2.6.1算術運算符28
2.6.2關係運算符28
2.6.3邏輯運算符29
2.6.4位運算符30
2.6.5三元條件運算符31
2.6.6+運算符32
本章小結32
思考和練習33
第3章控制語句
3.1分支語句34
3.1.1if語句34
3.1.2switch語句36
3.2循環控制語句40
3.2.1while語句40
3.2.2dowhile語句40
3.2.3for語句41
3.3break語句和continue語句42
3.3.1不帶標號的break語句和continue語句42
3.3.2帶標號的break語句和continue語句43
本章小結45
思考和練習45
第4章Java的類
4.1類與對象47
4.1.1類與對象的區別47
4.1.2Java和C編程思想的區別48
4.1.3如何定義類48
4.1.4對象和引用49
4.2方法50
4.3實例變數和局部變數51
4.4構造函式53
4.5方法重載55
4.6關鍵字this56
4.6.1指代對象57
4.6.2指代構造函式59
4.7繼承60
4.7.1繼承的概念60
4.7.2關鍵字super62
4.7.3再論構造函式63
4.8方法的覆蓋64
4.8.1覆蓋與重載的區別64
4.8.2方法的動態調用66
4.9多態性不適合繼承鏈中的實例變數68
4.10finalize與垃圾自動回收70
4.11static72
4.11.1static變數72
4.11.2static方法74
4.12關鍵字final75
4.12.1final數據75
4.12.2final方法76
4.12.3final類77
4.13組合與繼承77
4.14抽象類和抽象方法79
4.15對象的類型轉換81
4.15.1向上類型轉換81
4.15.2向下類型轉換82
4.16訪問許可權限制83
4.16.1默認修飾符844.16.2public成員84
4.16.3private成員85
4.16.4protected成員85
4.17應用程式從鍵盤輸入數據舉例87
本章小結89
思考和練習89
第5章接口、包與泛型
5.1接口90
5.1.1接口的定義和套用90
5.1.2接口和抽象類的異同點96
5.2包96
5.2.1package語句96
5.2.2import語句97
5.2.3包套用舉例98
5.3泛型100
5.3.1泛型類的聲明101
5.3.2泛型的一般套用102
5.3.3鍊表103
5.3.4棧105
5.3.5散列映射107
本章小結109
思考和練習109
第6章字元串處理
6.1字元串的分類110
6.2String類110
6.2.1字元串常量111
6.2.2創建String類對象112
6.2.3String類的常用方法115
6.2.4Java應用程式的命令行參數121
6.3StringBuffer類122
6.3.1創建StringBuffer類對象122
6.3.2StringBuffer類的常用方法123
6.3.3String類中“+”操作的技術內幕1266.4套用舉例127
本章小結130
思考和練習130
第7章異常處理
7.1異常的層次結構132
7.2異常處理語句133
7.2.1try和catch語句134
7.2.2finally語句137
7.2.3throw語句138
7.2.4throws語句140
7.3自定義異常類142
7.4異常處理常用調試方法143
本章小結145
思考和練習145
第8章輸入與輸出處理
8.1流的層次結構146
8.2File類147
8.3InputStream類和OutputStream類148
8.3.1InputStream類的常用方法148
8.3.2OutputStream類的常用方法149
8.3.3FileInputStream類149
8.3.4FileOutputStream類151
8.3.5DataInputStream類和DataOutputStream類152
8.4RandomAccessFile類153
8.5對象流和對象序列化158
8.5.1對象流的概念158
8.5.2對象序列化159
8.6Java中的檔案新特性161
8.6.1檔案路徑操作162
8.6.2遍歷檔案和目錄162
8.6.3獲取檔案屬性163
8.7IOException類164
本章小結164
思考和練習164
第9章多執行緒
9.1Java中的多執行緒的基本概念165
9.2執行緒類166
9.2.1多執行緒編程中常用的常量和方法166
9.2.2執行緒的生命周期167
9.2.3創建多執行緒的方法168
9.3執行緒的基本操作171
9.3.1執行緒的啟動171
9.3.2執行緒的休眠172
9.3.3執行緒的停止173
9.4資源的協調與同步174
9.4.1執行緒調度模型174
9.4.2資源衝突175
9.4.3同步方法176
9.5執行緒間通信178
本章小結181
思考和練習181
第10章小程式
10.1小程式的基本知識182
10.1.1小程式與應用程式的區別182
10.1.2小程式標籤的語法格式183
10.2小程式的生命周期184
10.3小程式常用方法188
10.3.1常用的輸出方法188
10.3.2輸出中的顏色控制189
10.4常用組件191
10.4.1組件和容器的關係192
10.4.2按鈕193
10.4.3標籤194
10.4.4文本框195
10.4.5文本域196
10.4.6選擇框198
10.4.7下拉列表200
10.4.8列表201
本章小結203
思考和練習203
第11章Swing圖形界面設計
11.1Swing常用容器204
11.1.1框架204
11.1.2面板206
11.2布局管理器207
11.2.1FlowLayout布局207
11.2.2BorderLayout布局209
11.2.3GridLayout布局212
11.2.4CardLayout布局213
11.3委託事件處理模型217
11.4組件事件處理217
11.4.1JButton事件處理218
11.4.2JTextField和JPasswordField事件處理219
11.4.3JCheckBox和JRadioButton事件處理222
11.4.4JComboBox事件處理225
11.4.5JList事件處理227
11.5滑鼠事件處理229
11.6Adapter類232
11.7鍵盤事件處理233
11.8事件處理套用舉例235
11.8.1舞動的字元235
11.8.2播放聲音剪輯238
11.8.3網路瀏覽器240
本章小結242
思考和練習242
第12章資料庫程式設計
12.1資料庫簡介243
12.2SQL語句244
12.2.1定義表244
12.2.2查詢244
12.2.3插入244
12.2.4刪除245
12.2.5修改245
12.3資料庫連線24512.3.1JDBC簡介245
12.3.2JDBC驅動程式246
12.3.3創建數據源246
12.4常用的資料庫接口和類248
12.4.1Connection248
12.4.2Statement249
12.4.3ResultSet249
12.5資料庫編程中的基本操作249
12.5.1資料庫編程的基本過程249
12.5.2資料庫查詢250
12.5.3插入記錄251
12.5.4修改記錄252
12.5.5刪除記錄253
12.5.6建立表254
12.5.7獲取表中指定屬性的名稱和類型255
12.6資料庫編程綜合舉例257
本章小結270
思考和練習270
參考文獻