本書從程序設計的角度來介紹Java語言,闡述如何應用Java語言設計出有Java特色的應用程序。全書共分三篇,*篇為Java基礎,介紹Java的開發環境、程序開發過程、基本的語法、語句,重點介紹應用Java語言進行簡單Java程序的開發過程,強調程序的設計過程和調試過程;第二篇為Java面向對象程序設計,介紹應用Java語言的類、對象、接口來設計面向對象的Java程序,通過一個個實例展示什么是面向對象程序設計,如何設計有Java特色的面向對象程序,并給出了有Java語言特色的簡單框架程序;第三篇為Java應用開發,給出了多個Java應用實例,這些實例采用層層推進、模塊組合的方式,從簡單的功能開始,逐步增加內容,*后完成一個有一定規模且實用的基于網絡的學生成績查詢管理系統。
本書內容淺顯易懂,按照問題來組織內容,每章解決一個問題,圍繞這個問題來設計程序,講解所用到的相關知識,讓讀者通過實例學習Java程序設計,逐步培養Java程序設計思路。本書既可以作為高等學校學生學習Java程序設計的教材,也可以作為自學Java語言讀者的參考書。
1. 突出程序設計的學習。本書重點是應用Java語言進行程序設計。本書精選大量的實例程序,通過具體程序來學習Java語言。書中結合實例介紹常見的Java語法和基礎知識,屏蔽掉不常用的語法,重點放在應用這些知識點來設計程序上。2. 強調實踐能力培養。Java語言實踐能力包括兩個方面,一是編寫程序能力,二是調試程序能力。本書按照學習習慣進行組織,首先從問題出發給出示例程序和結果;然后在學習示例程序基礎上指導學習者完成一個類似的訓練程序;完成訓練程序后學習者可以自己完成實做程序,檢驗學習效果,如果遇到問題可以再回過頭來仔細研讀示例程序和訓練程序。本書突出程序調試能力的培養,給出每個程序的編譯過程和運行結果,講解常見的錯誤和處理方法,希望學習者能夠逐步學會修改程序中錯誤,得到正確結果,學會調試程序。3. 重點學習面向對象程序設計。本書給出的實例突出面向對象的封裝、繼承和多態特征,強調Java語言特色,讓學習者學到有面向對象味道的程序,如框架實例。4. 注重學習過程的深入淺出。本書實例簡單易學,從*基本的實例開始,不斷改進和完善,*后形成更為完整和復雜的程序,易于學習和模仿。在介紹實例程序的同時,講解程序的實現機理并進行深入探討,方便學習者從根本上理解程序。5. 關注編程規范。一個優秀的程序員寫出的程序不僅能夠運行,還應該符合規范。因此本書強調編寫程序的規范性,書中的實例程序也是按照規范編寫,方便學習者養成良好的程序設計習慣。6. 本教材為教育部產學合作協同育人項目Java程序設計指定教材,項目的MOOC網址:http://mooc.ncist.edu.cn/。
前言
本書從程序設計的角度介紹如何應用Java語言編寫程序,全書共計25章,每一章都按照問題的解決過程進行組織,重點講述程序設計的過程。本書不是系統地介紹Java語言的語法和知識點,而是重點講解設計程序中最常用的語法和知識點。本書的重點是使讀者學會如何應用Java語言來設計程序,而非Java語言本身。在學習Java語言的過程中,經常會遇到下面三個問題: 第一個問題是怎樣能夠自己獨立編寫Java程序并得到運行結果?第二個問題是如何編寫出有別于其他語言的具有Java自身特點的程序?第三個問題是如何編寫出有一定規模的Java程序?第一個問題是學習各種語言都會遇到的問題,學習者能夠學會語言的語法和知識,但是不知道怎樣編寫程序,也不知道如何修改程序中的錯誤以得到正確的運行結果。本書的第一部分重點介紹設計程序的過程,包括程序的編寫、編譯和運行過程以及常見錯誤的分析和修改,讓學習者不斷地編寫程序、編譯程序、運行程序,最后能夠獨立完成程序的編寫與調試。因此本書第一篇在內容安排上重點介紹如何設計程序,給出程序的運行過程,列出常見問題,讓學習者可以逐步學會獨立完成程序,通過看到自己程序的正確結果逐步培養學習Java語言的興趣和自信心。第二個問題更加重要,多數學校都是先開設C語言課程,再開設Java課程,因此在學習Java的時候很容易產生一個錯覺,覺得Java語法和C語言很像,二者應該差不多。但實際上兩者差別很大,C語言是從處理流程來組織程序,而Java語言是從對象角度組織程序。C語言的核心和精華是函數和指針,Java語言的核心是封裝、繼承和多態。學習Java語言的基礎是類,主要是如何組織一個類,處理流程只是類內方法的任務。因此本書第二篇從對象的角度來組織實例,從基礎知識程序平滑地過渡到類的設計,并帶領學習者逐步學習面向對象編程的思想,最后能夠設計出有面向對象味道和特色的程序,例如框架程序。第三個問題也很重要,實際的軟件項目的規模都非常大,幾十萬行程序很常見,簡單演示程序與大程序之間在組織、設計和實現上都有很大區別。因此需要在學習Java語言時,能夠嘗試編一些大一點的程序,逐步了解和掌握如何開發有一定規模的程序。本書第三部分設計了多個實例,這些實例相互關聯,逐步深入,經過不斷擴充和完善,最后形成一個比較大的程序。另外本書還強調程序設計的規范,要求學習者不僅能夠寫出可以運行的程序,還應讓程序代碼符合規范。〖1〗Java基礎與應用前言[3]〖3〗本書內容上組織成三篇。第一篇是Java基礎,包括第1~6章,從設計一個最簡單的Java程序開始,學習Java程序的編輯、編譯和運行過程;學習Java語言的基本語法,包括類型、變量、表達式;學習Java語言的基本語句,分支結構和循環結構;學習Java語言的數組;學習如何設計Java方法,進行方法提取。第二篇是面向對象程序設計,包括第6~20章,講解Java語言中類的定義和組成;對象實例化過程;類的封裝和Java類的構成;類的組合關系和類的繼承關系;繼承的實現方法;類的靜態屬性和靜態方法;對象多態的實現;抽象類和接口的定義與應用,最后給出一個體現面向對象特色的框架程序實例。第三篇是Java應用開發,包括第21~25章,學習如何應用Java語言來開發規模更大的程序,從學生成績排序開始講起,介紹基本的排序方法和應用集合類提供的排序方法實現排序;接下來介紹如何保存學生的信息,分別實現了保存到文件和數據庫兩種方法,并實現了對存儲后的數據的讀取和修改;為了更直觀地查看學生信息和成績,進一步提供了圖形界面的學生成績管理;最后提供了基于網絡應用的客戶機/服務器結構的學生成績管理,并改進為多線程的學生成績查詢,這5章的內容既相互獨立,又相互關聯,層層推進,最后形成一個具有一定實用性的學生成績管理系統。本書前20章按照同一個模式組織,各章分為示例程序、相關知識、訓練程序、拓展知識和實做程序五個部分。示例程序從提出問題開始,給出解決問題的程序和運行結果。接下來在相關知識中介紹本章用到的Java語法和知識點。在此基礎上給出一個相似的問題,參考示例程序進行分析,設計出程序。隨后給出的拓展知識是提高部分,適合想深入學習Java程序設計的讀者,主要是對Java語言的實現機理和相關內容的深入探討,讀者也可以跳過這一節。最后給出實做程序,讓讀者在學習本章內容的基礎上進行實際程序設計練習,檢驗自己的學習情況。后5章主要是從軟件開發的角度進行介紹,并給出了一些程序的拓展點,讀者可以在理解程序的基礎上進行拓展,完善程序功能。本書的全部程序都已在JDK1.6環境下編譯通過,每一章的示例程序、訓練程序、相關知識和拓展知識中的程序段都有對應的實例。本書講解的大量實例是逐步改進的,每一次改進的程序分別放在不同的章節目錄下,實做程序都給出了參考實現,所有程序都已經編譯通過并運行正確。本書為任課教師提供配套的教學資源,包括電子教案、本書用到的軟件、實例程序和參考實做程序。需要的讀者可以從出版社網站www.tup.com.cn下載。另外本書作者提供了一個QQ群: 275116341,歡迎使用教材的教師加入,一起探討教材及相關問題。本書第1~10章由郭慧編寫,第11~20章由王養廷編寫,第21~25章由李永飛編寫,全書由王養廷負責統稿。對本書的不足和錯誤之處,懇請讀者批評和指正。
作者2017年1月
目錄
第一篇Java基礎
第1章第一個Java程序/3
1.1示例程序3
1.1.1HelloWorld程序3
1.1.2HelloWorld程序
分析4
1.2相關知識4
1.2.1下載安裝工具包5
1.2.2配置5
1.2.3編輯程序7
1.2.4編譯運行程序7
1.3訓練程序8
1.3.1程序分析8
1.3.2參考程序8
1.3.3程序調試9
1.4拓展知識10
1.4.1開發工具10
1.4.2Java API文檔10
1.4.3編碼規范11
1.5實做程序12
第2章顯示學生成績/14
2.1示例程序14
2.1.1顯示學生信息14
2.1.2引入變量15
2.1.3增加注釋15
2.2相關知識17
2.2.1標識符和關鍵字17
2.2.2數據類型和變量17
2.2.3運算符和表達式19
2.3訓練程序21
2.3.1程序分析21
2.3.2參考程序21
2.4拓展知識23
2.4.1Java虛擬機23
2.4.2變量存儲23
2.4.3變量類型轉換24
2.5實做程序24
第3章學生成績分級/27
3.1示例程序27
3.1.1顯示考試結果27
3.1.2輸入學生成績28
3.2相關知識30
3.2.1基本語句30
3.2.2條件分支語句31
3.2.3多分支語句32
3.3訓練程序32
3.3.1程序分析33
3.3.2參考程序33
3.4拓展知識34
3.4.1分支語句討論34
3.4.2數據合法性檢查35
3.5實做程序37
第4章計算平均成績/40
4.1示例程序40
4.1.1計算平均成績40
4.1.2引入常量41
4.1.3未知人數42
4.2相關知識45
4.2.1for循環語句45
4.2.2while循環語句45
4.3訓練程序46
4.3.1程序分析46
4.3.2參考程序46
4.4拓展知識47
4.4.1循環語句討論47
4.4.2循環邊界檢查48
4.5實做程序49
第5章顯示班級成績單/53
5.1示例程序53
5.1.1班級平均成績53
5.1.2顯示最高成績54
5.2相關知識56
5.2.1一維數組56
5.2.2多維數組56
5.3訓練程序57
5.3.1程序分析57
5.3.2參考程序57
5.4拓展知識58
5.4.1數組討論58
5.4.2數組的存儲59
5.5實做程序60
第6章顯示學生基本信息/62
6.1示例程序62
6.1.1程序實現62
6.1.2處理部分提取63
6.1.3讀入部分提取64
6.2相關知識65
6.2.1Java方法65
6.2.2參數傳遞66
6.3訓練程序67
6.3.1程序分析68
6.3.2參考程序68
6.4拓展知識69
6.4.1方法重構69
6.4.2方法存儲69
6.5實做程序69
〖1〗Java基礎與應用目錄[3]〖3〗第二篇面向對象程序設計
第7章簡單Student類/73
7.1示例程序73
7.1.1顯示學生信息73
7.1.2增加測試類75
7.2相關知識76
7.2.1Java類定義76
7.2.2類的方法77
7.3訓練程序78
7.3.1程序分析78
7.3.2參考程序78
7.4拓展知識79
7.4.1為什么引入類79
7.4.2變量作用域80
7.5實做程序81
第8章Student類對象/82
8.1示例程序82
8.1.1訪問控制權限82
8.1.2添加構造方法83
8.2相關知識85
8.2.1構造方法85
8.2.2訪問權限控制86
8.2.3類的組成部分87
8.3訓練程序88
8.3.1程序分析88
8.3.2參考程序88
8.4拓展知識89
8.4.1對象存儲89
8.4.2對象相等91
8.5實做程序92
第9章完善Student類/94
9.1示例程序94
9.1.1添加置取方法94
9.1.2增加構造方法96
9.1.3完整的Student類97
9.2相關知識99
9.2.1置取方法99
9.2.2對象this101
9.3訓練程序102
9.3.1程序分析103
9.3.2參考程序103
9.4拓展知識105
9.4.1類的封裝105
9.4.2置取方法討論106
9.4.3參數傳遞深入
討論106
9.5實做程序108
第10章Student類組合/111
10.1示例程序111
10.1.1MobilePhone類
111
10.1.2增加機主屬性113
10.2相關知識115
10.2.1對象屬性115
10.2.2類的組合關系116
10.3訓練程序117
10.3.1程序分析117
10.3.2參考程序117
10.4拓展知識119
10.4.1組合討論119
10.4.2組合與封裝120
10.5實做程序124
第11章Student類方法重載/125
11.1示例程序125
11.1.1構造方法重載125
11.1.2普通方法重載126
11.2相關知識128
11.3訓練程序129
11.3.1程序分析129
11.3.2參考程序129
11.4拓展知識131
11.5實做程序132
第12章Student類實例
計數/13412.1示例程序134
12.1.1顯示實例順序134
12.1.2獲得學生對象
個數135
12.2相關知識137
12.2.1靜態屬性與實例
屬性137
12.2.2再論對象創建
過程138
12.3訓練程序139
12.3.1程序分析139
12.3.2參考程序139
12.4拓展知識140
12.4.1屬性與局部
變量140
12.4.2靜態屬性與方法
存儲141
12.4.3單個實例142
12.5實做程序143
第13章泛化類Person/145
13.1示例程序145
13.1.1泛化類Person145
13.1.2子類Student146
13.1.3Student對象
初始化147
13.2相關知識148
13.2.1類的繼承148
13.2.2super對象149
13.3訓練程序150
13.3.1程序分析150
13.3.2參考程序150
13.4拓展知識151
13.4.1調用構造方法151
13.4.2繼承與組合153
13.5實做程序155
第14章對象多態/157
14.1示例程序157
14.1.1重寫display
方法157
14.1.2向上轉型159
14.2相關知識160
14.2.1方法重寫160
14.2.2對象上轉型161
14.3訓練程序162
14.3.1程序分析163
14.3.2參考程序163
14.4拓展知識165
14.4.1動態綁定165
14.4.2多態討論166
14.5實做程序168
第15章抽象類/169
15.1示例程序169
15.1.1方法抽象169
15.1.2抽象方法display
169
15.2相關知識171
15.2.1抽象類定義171
15.2.2抽象類說明172
15.3訓練程序172
15.3.1程序分析173
15.3.2參考程序173
15.4拓展知識175
15.5實做程序176
第16章接口設計/177
16.1示例程序177
16.1.1定義接口MoveAble
177
16.1.2應用MoveAble
實現多態179
16.2相關知識180
16.2.1接口定義180
16.2.2接口與抽象類
比較182
16.3訓練程序184
16.3.1程序分析185
16.3.2參考程序185
16.4拓展知識187
16.4.1接口討論187
16.4.2接口應用188
16.5實做程序189
第17章異常處理/191
17.1示例程序191
17.1.1程序異常實例191
17.1.2受檢異常193
17.2相關知識194
17.2.1異常處理結構194
17.2.2常見異常類195
17.3訓練程序196
17.3.1程序分析196
17.3.2參考程序196
17.4拓展知識198
17.4.1異常處理討論198
17.4.2防御性編程199
17.5實做程序202
第18章包結構設計/204
18.1示例程序204
18.1.1按包組織程序204
18.1.2導入手機類206
18.2相關知識208
18.2.1包定義208
18.2.2其他包中類的
引用209
18.3訓練程序210
18.3.1程序分析210
18.3.2參考程序210
18.4拓展知識212
18.4.1Java基礎類
庫包212
18.4.2包的設計213
18.5實做程序214
第19章簡單框架設計/215
19.1示例程序215
19.1.1簡單框架215
19.1.2增加功能218
19.2相關知識219
19.2.1多態與框架219
19.2.2依賴關系220
19.3訓練程序220
19.3.1程序分析221
19.3.2參考程序221
19.4拓展知識224
19.4.1框架設計224
19.4.2框架設計討論225
19.5實做程序226
第20章帶配置文件的框架/228
20.1示例程序228
20.1.1裝入Person類228
20.1.2顯示名字230
20.2相關知識232
20.2.1反射機制232
20.2.2反射機制應用233
20.3訓練程序233
20.3.1程序分析233
20.3.2參考程序234
20.4拓展知識237
20.4.1反射機制討論237
20.4.2配置文件238
20.5實做程序238
第三篇Java應用開發
第21章學生成績排序輸出/243
21.1開發任務243
21.2程序實現及分析244
21.2.1數組排序244
21.2.2List排序248
21.2.3List自動排序252
21.2.4通用輸出256
21.3集合相關類庫262
21.3.1Collection與
Collections263
21.3.2List與ArrayList
264
21.3.3Map與HashMap
265
21.3.4Set與TreeSet266
21.4實做程序268
第22章學生信息保存/270
22.1開發任務270
22.2程序實現及分析270
22.2.1文件保存功能271
22.2.2數據庫保存
功能275
22.2.3重構程序結構280
22.3文件操作相關類庫281
22.3.1I/O流281
22.3.2I/O操作步驟283
22.4數據庫操作286
22.4.1數據庫操作
概述286
22.4.2數據庫操作
步驟288
22.5實做程序290
第23章圖形界面成績管理/292
23.1開發任務292
23.2程序實現及分析294
23.2.1圖形用戶界面294
23.2.2成績管理功能298
23.3圖形界面基礎類庫311
23.3.1Java圖形界面311
23.3.2組件類313
23.3.3事件類與接口316
23.4實做程序317
第24章網上學生成績查詢/318
24.1開發任務318
24.2程序實現及分析319
24.2.1簡單網絡通信
功能319
24.2.2網絡查詢323
24.3網絡編程相關類庫329
24.3.1Socket編程概念
329
24.3.2Socket相關類330
24.4實做程序331
第25章多用戶查詢學生成績/333
25.1開發任務333
25.2程序實現及分析334
25.2.1簡單多線程
程序一334
25.2.2簡單多線程
程序二336
25.2.3多線程網絡
查詢339
25.3多線程相關類庫350
25.4實做程序352
附錄A安裝配置數據庫環境/353
附錄B推薦書目/360