內容簡介
本書結構新穎、概念清晰、面向套用,體現了作者提出的“程式設計=計算思維+語言藝術+工程方法”的教學思想。全書共分為4篇: 第1篇為面向對象啟步,用4個例子引導讀者逐步建立面向對象的思維方式和培養基本的設計能力,將Java基本語法貫穿其中;第2篇為面向抽象的結構最佳化,在介紹了抽象類和接口這兩個基本機制後,用一個故事引入了面向對象程式設計原則,接著用設計模式舉例加深對面向對象結構最佳化必要性的認識,為進一步學習設計模式打下基礎,最後介紹了反射技術;第3篇為基於API的開發,包括
圖形用戶界面、
網路編程、JDBC、JavaBean、程式文檔化、程式配置和打包與發布;第4篇為Java高級技術,包括
多執行緒技術、泛型編程和數據結構接口。通過這4篇可以達到夯實基礎、面向套用、領略全貌的教學效果,並適應不同層次的教學需求。
本書採用問題體系,具有零起點、快起動、立意新、重內涵的特點,可作為高等學校有關專業的程式設計課程的教材,也適合培訓和自學。
圖書目錄
新概念Java程式設計大學教程(第2版)
第1篇面向對象程式設計啟步第1單元職員類3
1.1從現實世界中的對象到類模型3
1.1.1程式=模型+表現3
1.1.2現實世界中的對象分析4
1.1.3職員類的UML描述5
1.1.4職員類的Java語言描述5
1.1.5職員類的Java代碼說明6
1.2類的套用與測試8
1.2.1對象引用及其創建8
1.2.2構造器與this()9
1.2.3對象成員的訪問與this11
1.2.4主方法與主類12
1.2.5類檔案與包14
1.3Java程式開發16
1.3.2JDK16
1.3.3Eclipse開發環境18
1.4知識連結24
1.4.1Java語言及其特點24
1.4.2Java數據類型26
1.4.3字面值27
1.4.4基本類型的轉換29
1.4.5Java關鍵字與標識符32
1.4.6流與標準I/O流對象33
習題135第2單元計算器類38
2.1計算器類的定義38
2.1.1計算器建模38
2.1.2Calculator類的Java描述39
2.2Calculator類的測試39
2.2.1測試數據設計39
2.2.2規避整除風險——Calculator類改進之一40
2.3異常處理——Calculator類改進之二42
2.3.1Java異常處理概述42
2.3.2Java異常處理的基本形式42
2.3.3用throws向上層拋出異常44
2.3.4用throw直接拋出異常45
2.3.5Java提供的主要異常類47
2.4用選擇結構確定計算類型——Calculator類改進之三47
2.4.1用if…else實現calculate()方法47
2.4.2關係操作符49
2.4.3用switch結構實現calculate()方法50
2.5用
靜態成員變數存儲中間結果——Calculator類改進之四52
2.5.1靜態成員變數的性質52
2.5.2帶有靜態成員變數的Calculator類定義52
2.6知識連結54
2.6.1Java表達式54
2.6.2靜態方法——類方法55
2.6.3初始化塊與靜態初始化塊57
2.6.4String類60
2.6.5正則表達式61
2.6.6Scanner類63
習題264第3單元素數序列產生器72
3.1問題描述與對象建模72
3.1.1素數序列產生器建模72
3.1.2getPrimeSequence()方法的基本思路72
3.2使用isPrime()判定素數的PrimeGenerator類的實現73
3.2.1採用while結構的getPrimeSequence()方法73
3.2.2採用do…while結構的getPrimeSequence()方法75
3.2.3採用for結構的getPrimeSequence()方法75
3.2.4重複結構中的continue語句76
3.2.5採用for結構的isPrime()方法76
3.2.6將isPrime()定義為靜態方法77
3.2.7不用isPrime()判定素數的PrimeGenerator類的實現78
3.3知識連結79
3.3.1變數的訪問屬性79
3.3.2變數的作用域79
3.3.3Java數據實體的生命期80
3.3.4基本類型的包裝81
習題383第4單元撲克遊戲90
4.1數組與撲克牌的表示和存儲90
4.1.1數組的概念90
4.1.2數組的聲明與記憶體分配90
4.1.3數組的初始化92
4.1.4匿名數組93
4.2數組元素的訪問93
4.2.1用普通循環結構訪問數組元素94
4.2.2用增強for遍歷數組元素94
4.3洗牌95
4.3.1隨機數與Random類95
4.3.2洗牌方法設計96
4.3.3含有洗牌方法的撲克遊戲類設計98
4.4撲克的發牌與二維數組99
4.4.1基本的發牌算法99
4.4.2用二維數組表示玩家手中的牌100
4.4.3使用二維數組的發牌方法102
4.4.4含有洗牌、發牌方法的撲克遊戲類設計102
4.5知識連結104
4.5.1數組實用類Arrays104
4.5.2java.util.Vector類105
4.5.4Math類108
習題4109第2篇面向抽象的結構最佳化第5單元學生研究生115
5.1學生類研究生類層次結構115
5.1.1由Student類派生GradStudent類115
5.1.2super關鍵字 117
5.1.3final關鍵字119
5.2Java的訪問許可權控制119
5.2.1類成員的訪問許可權控制119
5.2.2類的訪問許可權控制120
5.2.3private構造器120
5.3類層次中的類型轉換121
5.3.1類層次中的賦值兼容規則121
5.3.3類型轉換與類型測試122
5.4方法覆蓋與隱藏123
5.4.1派生類實例方法覆蓋基類中原型相同的實例方法123
5.4.2用@Override標註覆蓋124
5.4.3派生類靜態方法隱藏基類中原型相同的靜態方法126
5.4.4JVM的綁定機制127
5.5知識連結128
5.5.1Object類128
5.5.2@Deprecated與@SuppressWarnings131
5.5.3Java異常類和錯誤類體系135
習題5137第6單元抽象類與接口145
6.1圓、三角形和矩形145
6.1.13個獨立的類: Circle、Rectangle和Triangle145
6.1.2枚舉147
6.2抽象類148
6.2.1由具體類抽象出抽象類148
6.2.2由抽象類派生出實例類150
6.2.3抽象類小結153
6.3接口153
6.3.1接口及其特點153
6.3.2接口的實現類154
6.3.3關於接口的進一步討論156
6.4知識連結157
6.4.1Java構件修飾符小結157
6.4.2對象克隆158
習題6160第7單元面向對象程式架構最佳化規則164
7.0引言164
7.1從可重用說起: 合成/聚合優先原則165
7.1.1繼承重用的特點166
7.1.2合成/聚合重用及其特點166
7.1.3合成/聚合優先原則167
7.2從可維護性說起: 開閉原則168
7.2.1軟體的可維護性和可擴展性168
7.2.2開閉原則169
7.3面向抽象編程170
7.3.1具體與抽象170
7.3.3面向接口原則170
7.4單一職責原則175
7.4.1對象的職責175
7.4.2單一職責原則的概念176
7.5不要和陌生人說話181
7.5.2廣義迪米特法則182
習題7183
第8單元設計模式186
8.1設計模式概述186
8.2設計模式舉例——訴訟代理問題186
8.2.1無律師的涉訟程式設計186
8.2.2請律師代理的涉訟程式設計187
8.2.3關於代理模式189
8.3設計模式舉例——商場行銷問題190
8.3.1不用策略模式的商場行銷解決方案190
8.3.2策略模式的定義192
8.3.3採用策略模式的商場行銷解決方案193
8.4設計模式舉例——圖形對象的創建問題197
8.4.1簡單工廠模式197
8.4.2工廠方法模式202
8.4.3策略模式與簡單工廠模式結合207
8.5知識連結209
8.5.1類檔案與類載入209
8.5.2Class對象210
8.5.3反射API213
8.5.4使用反射的工廠模式215
8.5.5使用反射+配置檔案的工廠模式216
習題8218第3篇基於API的套用開發第9單元
圖形用戶界面開發223
9.1圖形用戶界面概述223
9.1.1組件與容器223
9.1.2布局管理器與坐標系225
9.1.3事件與事件監聽器227
9.1.4AWT、Swing、SWT和JFace228
9.1.5Swing程式設計的一般流程229
9.2Swing組件229
9.2.1Swing工具包229
9.2.2Swing組件體系與分類230
9.2.3Swing容器232
9.2.4Swing布局管理器235
9.3事件處理239
9.3.1事件及其分類239
9.3.2事件監聽接口240
9.3.3事件監聽適配器243
9.4嵌套類及其在事件處理中的套用246
9.4.1嵌套類及其分類246
9.4.2實名內部類246
9.4.3匿名內部類248
習題9250第10單元Java 網路程式設計251
10.1IP位址與InetAddress類251
10.1.1IP協定與IP位址251
10.1.2InetAddress類251
10.2Java Socket概述253
10.2.1Socket的概念253
10.2.2客戶端/伺服器工作模式253
10.3面向TCP的Java Socket程式設計254
10.3.1Socket類和ServerSocket類254
10.3.2TCP Socket通信過程255
10.3.3TCP Socket程式設計257
10.4面向UDP的Java程式設計260
10.4.1DatagramPacket類261
10.4.2DatagramSocket類261
10.4.3UDP Socket程式設計263
10.5網路資源訪問266
10.5.1URI、URL和URN266
10.5.2URL類267
10.5.3URLConnection類268
10.6知識連結268
10.6.1位元組流與字元流268
10.6.2緩衝流與轉換流273
10.6.3PrintWriter類275
習題10276第11單元JDBC278
11.1JDBC概述278
11.1.1JDBC的組成與工作過程278
11.1.2JDBC API及其對JDBC過程的支持278
11.2載入JDBC驅動280
11.2.1JDBC資料庫驅動程式的類型280
11.2.2JDBC驅動類名與JDBC驅動下載282
11.2.3DriverManager類282
11.2.4註冊Driver284
11.3連線數據源286
11.3.1數據源描述規則——JDBC URL286
11.3.3連線過程中的異常處理290
11.4創建SQL工作空間進行資料庫操作291
11.4.1SQL291
11.4.2創建SQL工作空間293
11.4.3用Statement實例封裝SQL語句293
11.5處理結果集295
11.5.1結果集游標管理295
11.5.2getXxx()方法295
11.5.3updateXxx()方法296
11.5.4關閉資料庫連線296
11.5.5JDBC資料庫查詢實例296
11.6PreparedStatement接口299
11.6.1用PreparedStatement實例封裝SQL語句的特點299
11.6.2PreparedStatement接口的主要方法299
11.6.3PreparedStatement對象操作SQL語句的步驟300
11.6.4Java日期數據303
11.7事務處理304
11.7.1事務的概念304
11.7.2Connection類中有關事務處理的方法304
11.7.3JDBC事務處理程式的基本結構305
11.8DAO模式307
11.8.1DAO概述307
11.8.2DAO模式的基本結構309
11.8.3DAO程式舉例312
習題11318第12單元JavaBean320
12.1JavaBean概述320
12.1.1軟體組件與JavaBean320
12.1.2JavaBean結構321
12.1.3JavaBean規範323
12.2開發JavaBean323
12.2.1JavaBean API323
12.2.2JavaBean開發工具324
習題12326第13單元程式文檔化、程式配置與程式發布328
13.1Javadoc328
13.1.1Javadoc及其結構328
13.1.2Javadoc標籤328
13.1.3Javadoc套用規範330
13.1.4Javadoc命令332
13.2自定義Annotation333
13.2.1Annotation的基本定義格式333
13.2.2向Annotation注入數據334
13.2.3通過反射提取Annotation中的數據335
13.2.4用Annotation+反射設計DAO基類336
13.3Java程式配置342
13.3.1程式配置與程式配置檔案342
13.3.2.properties檔案343
13.3.3XML配置檔案345
13.3.4基於InputStream輸入流的配置檔案的讀取346
13.3.5基於資源綁定的配置檔案讀取353
13.4Java程式的打包與發布354
13.4.1Java程式的打包與JAR檔案包354
13.4.2manifest檔案354
13.4.3JAR命令357
13.4.4在Eclipse環境中創建可執行JAR包359
13.4.5在MyEclipse環境中創建可執行JAR包361
習題13361
14.1泛型基礎365
14.1.1問題的提出365
14.1.2泛型方法367
14.1.3多泛型類368
14.2泛型語法擴展369
14.2.1泛型通配符369
14.2.2泛型設限370
14.2.3泛型嵌套370
14.3實例——利用泛型和反射機制抽象DAO371
習題14373第15單元Java多執行緒375
15.1Java多執行緒概述375
15.1.1進程與執行緒375
15.1.2Java執行緒的生命周期376
15.1.3Java多執行緒程式實例: 室友叫醒380
15.1.4執行緒調度與執行緒優先權384
15.1.5知識連結: JVM運行時數據區384
15.2java.lang.Thread類386
15.2.1Thread類的構造器386
15.2.2Thread類中的優先權別靜態常量387
15.2.3Thread類中影響執行緒狀態的方法387
15.2.4Thread類中的一般方法388
15.2.5Thread類從Object繼承的方法388
15.3多執行緒管理388
15.3.1多執行緒同步共享資源388
15.3.2執行緒死鎖問題390
15.3.3執行緒組390
習題15391第16單元Java數據結構和接口397
16.1數據的邏輯結構與物理結構397
16.1.1數據的邏輯結構397
16.1.2數據的物理結構398
16.1.3Java數據結構API400
16.2接口及其套用401
16.2.2List接口及其實現402
16.2.3Set接口及其實現404
16.3聚集的標準輸出406
16.3.1Iterator接口406
16.3.2foreach407
16.4.1Map接口的定義與方法408
16.4.2Map.Entry接口408
16.4.3HashMap類和TreeMap類409
習題16411附錄413
附錄A符號413
A.1Java主要操作符的優先權和結合性413
A.2Javadoc標籤413
附錄BJava運行時異常類和錯誤類414
B.1RuntimeException類414
B.2Error類415
附錄CJava常用工具包416參考文獻418