本書基于TOPCARES-CDIO工程化教育理念,以“貪吃蛇游戲”作為案例進(jìn)行項(xiàng)目驅(qū)動,圍繞項(xiàng)目開發(fā)所需知識進(jìn)行內(nèi)容組織,在保證實(shí)用性的同時兼顧知識的系統(tǒng)性。全書共分為 5 個單元,前 4 個單元系統(tǒng)論述了Java基礎(chǔ)語法(包括變量和表達(dá)式、程序控制結(jié)構(gòu)、字符串和數(shù)組)、面向?qū)ο蟪绦蛟O(shè)計的概念(包括特征和原則、類定義語法、繼承和多態(tài)、抽象類和接口、枚舉和泛型等)、Java Swing圖形化界面編程技術(shù)、Java常用類(包括正則表達(dá)式、集合類、Java I/O、數(shù)據(jù)庫訪問技術(shù)等);第5單元按工程化方式完整實(shí)現(xiàn)了“貪吃蛇游戲”的項(xiàng)目,對前面的知識進(jìn)行了綜合應(yīng)用。本書適合作為高等院校計算機(jī)及相關(guān)專業(yè)本科教材,也可作為相關(guān)培訓(xùn)機(jī)構(gòu)的培訓(xùn)教材,以及對 Java開發(fā)技術(shù)感興趣人員的參考書。
賀敏,男,副教授,就職于成都東軟學(xué)院,主持"Java語言程序設(shè)計基礎(chǔ)”課程改革與創(chuàng)新研究(省部級),主要教授面向?qū)ο蟪绦蛟O(shè)計等課程
第1單元 Java基礎(chǔ)語法
第1章 緒論 3
1.1 Java概述 3
1.1.1 Java的起源和發(fā)展 3
1.1.2 Java語言特點(diǎn) 4
1.1.3 Java運(yùn)行機(jī)制 5
1.2 面向?qū)ο笏枷?6
1.3 綜合項(xiàng)目概述 6
本章小結(jié) 7
習(xí)題 7
第2章 結(jié)構(gòu)化基礎(chǔ)語法 8
2.1 Java程序組成 8
2.1.1 注釋 9
2.1.2 程序入口點(diǎn) 10
2.1.3 程序組織 10
2.1.4 程序錯誤 11
2.1.5 代碼規(guī)范 12
2.1.6 使用IDE 12
2.2 數(shù)據(jù)類型和變量 14
2.2.1 基本類型和引用類型 14
2.2.2 基本類型 14
2.2.3 變量 16
2.2.4 類型轉(zhuǎn)換 17
2.3 表達(dá)式和語句 18
2.3.1 算術(shù)運(yùn)算 18
2.3.2 關(guān)系運(yùn)算 19
2.3.3 條件運(yùn)算 20
2.3.4 賦值運(yùn)算 21
2.3.5 運(yùn)算符優(yōu)先級 21
2.3.6 位運(yùn)算 22
2.3.7 其他運(yùn)算 23
本章小結(jié) 24
習(xí)題 24
第3章 字符串和數(shù)組 25
3.1 字符串 25
3.1.1 字符串的創(chuàng)建 25
3.1.2 格式化字符串 26
3.1.3 字符串和基本類型轉(zhuǎn)換 26
3.1.4 字符串常用方法 27
3.2 數(shù)組 28
3.2.1 數(shù)組的定義 28
3.2.2 數(shù)組元素的訪問 29
3.2.3 多維數(shù)組 29
本章小結(jié) 29
習(xí)題 29
第4章 程序控制結(jié)構(gòu) 31
4.1 分支結(jié)構(gòu) 31
4.1.1 if-else分支 31
4.1.2 switch分支 34
4.2 循環(huán)結(jié)構(gòu) 35
4.2.1 while循環(huán) 36
4.2.2 do-while循環(huán) 37
4.2.3 for循環(huán) 37
4.3 跳轉(zhuǎn)語句 39
4.3.1 break語句 39
4.3.2 continue語句 40
4.4 遞歸調(diào)用 41
4.5 綜合應(yīng)用 42
4.5.1 二分查找算法 42
4.5.2 九宮算術(shù) 43
4.5.3 Excel地址轉(zhuǎn)換 45
4.5.4 約瑟夫環(huán) 46
4.6 單元項(xiàng)目 48
4.6.1 項(xiàng)目概述 48
4.6.2 設(shè)計與實(shí)現(xiàn) 48
本章小結(jié) 50
習(xí)題 51
第2單元 Java面向?qū)ο?
第5章 面向?qū)ο笏枷爰霸瓌t 55
5.1 面向?qū)ο笏枷胩卣?55
5.2 面向?qū)ο笏枷朐瓌t 57
5.3 OOP引例 58
本章小結(jié) 61
習(xí)題 62
第6章 類定義語法 63
6.1 成員訪問控制 63
6.2 數(shù)據(jù)相關(guān)成員 64
6.2.1 成員變量 64
6.2.2 構(gòu)造方法 64
6.2.3 get/set訪問器 65
6.3 方法定義 66
6.3.1 方法構(gòu)成 66
6.3.2 方法重載 69
6.3.3 可變參數(shù) 70
6.4 類成員 71
6.4.1 類和對象 71
6.4.2 類成員定義 72
本章小結(jié) 74
習(xí)題 74
第7章 面向?qū)ο蟾呒壐拍?76
7.1 繼承和多態(tài) 76
7.1.1 繼承 76
7.1.2 對象的類型轉(zhuǎn)換 78
7.1.3 多態(tài) 79
7.1.4 Object類 82
7.2 抽象類和接口 89
7.2.1 抽象類 89
7.2.2 接口 90
7.2.3 抽象類和接口的區(qū)別 92
7.3 內(nèi)部類 94
7.3.1 頂層類成員 94
7.3.2 局部內(nèi)部類 96
7.3.3 內(nèi)部類與多重繼承 97
7.4 枚舉類型 98
7.4.1 枚舉的定義 98
7.4.2 枚舉的實(shí)現(xiàn)原理 98
7.4.3 枚舉的使用 100
7.5 泛型編程 102
7.5.1 泛型類型 102
7.5.2 類型擦除 104
7.5.3 類型限制 105
7.5.4 泛型方法 107
7.6 類的組織:包 108
7.6.1 包的概念與意義 108
7.6.2 包的定義與使用 108
7.6.3 靜態(tài)導(dǎo)入 109
7.7 單元項(xiàng)目 109
7.7.1 項(xiàng)目概述 109
7.7.2 設(shè)計與實(shí)現(xiàn) 110
本章小結(jié) 117
習(xí)題 117
第3單元 GUI編程
第8章 Java Swing技術(shù) 121
8.1 Swing技術(shù)簡介 121
8.1.1 Swing概述 121
8.1.2 GUI程序的創(chuàng)建 122
8.1.3 窗口坐標(biāo)體系 124
8.1.4 界面風(fēng)格 124
8.1.5 模式窗口與非模式窗口 125
8.2 常用容器 126
8.2.1 頂層容器 126
8.2.2 中間容器 129
8.3 常用布局 131
8.3.1 BorderLayout邊界布局 131
8.3.2 FlowLayout流式布局 133
8.3.3 CardLayout卡片布局 134
8.3.4 GridLayout網(wǎng)格布局 134
8.3.5 BoxLayout箱式布局 135
8.3.6 GridBagLayout非規(guī)則網(wǎng)格布局 137
8.3.7 絕對布局 140
8.4 事件監(jiān)聽和處理 142
8.4.1 事件處理機(jī)制 142
8.4.2 鍵盤事件處理 144
8.4.3 鼠標(biāo)事件處理 147
8.4.4 窗口事件處理 151
8.5 常用UI元素 153
8.5.1 輔助元素 154
8.5.2 常用組件 156
8.5.3 通用對話框 161
8.5.4 菜單欄 167
8.5.5 系統(tǒng)托盤 169
8.6 自動化任務(wù) 171
8.6.1 模擬鼠標(biāo)鍵盤 171
8.6.2 屏幕截圖 174
本章小結(jié) 176
習(xí)題 177
第9章 Java繪圖技術(shù) 178
9.1 界面繪圖機(jī)制 178
9.1.1 繪制過程 178
9.1.2 雙緩沖技術(shù) 179
9.1.3 繪圖與動畫 179
9.2 Graphics的使用 181
9.2.1 幾何圖形繪制和填充 181
9.2.2 字符串繪制 185
9.2.3 圖片繪制 191
9.3 單元項(xiàng)目 194
9.3.1 GUI計算器 194
9.3.2 簡易繪圖軟件 198
本章小結(jié) 208
習(xí)題 208
第4單元 Java常用技術(shù)
第10章 字符串與正則表達(dá)式 213
10.1 再論字符串 213
10.1.1 字符串的不變性 213
10.1.2 StringBuilder類 215
10.1.3 字符串其他常用操作 217
10.2 正則表達(dá)式 219
10.2.1 正則符號 219
10.2.2 正則驗(yàn)證與匹配 221
10.2.3 支持正則的字符串方法 225
本章小結(jié) 227
習(xí)題 227
第11章 Java集合框架 229
11.1 集合框架概述 229
11.2 常用集合類 231
11.2.1 ArrayList類 231
11.2.2 LinkedList類 233
11.2.3 HashMap類 236
11.2.4 HashSet類 240
11.3 集合工具類 240
11.3.1 Arrays類 240
11.3.2 Collections類 242
本章小結(jié) 242
習(xí)題 242
第12章 文件與I/O流 244
12.1 文件 244
12.1.1 創(chuàng)建文件對象 245
12.1.2 操作文件對象 245
12.2 I/O流概述 247
12.2.1 流的概念與分類 247
12.2.2 流的套接 247
12.3 字符流讀/寫 248
12.3.1 字符閱讀流 248
12.3.2 字符書寫流 249
12.4 字節(jié)流讀/寫 250
12.4.1 字節(jié)輸入流 250
12.4.2 字節(jié)輸出流 252
12.4.3 標(biāo)準(zhǔn)輸入/輸出 257
12.5 對象序列化 258
12.5.1 序列化技術(shù)概述 258
12.5.2 序列化與反序列化 258
12.5.3 序列化的限制 261
12.6 單元項(xiàng)目 262
12.6.1 項(xiàng)目概述 262
12.6.2 設(shè)計與實(shí)現(xiàn) 263
本章小結(jié) 267
習(xí)題 267
第13章 數(shù)據(jù)庫訪問技術(shù)JDBC 269
13.1 JDBC基本概念 269
13.2 JDBC驅(qū)動程序類型 270
13.3 搭建數(shù)據(jù)庫環(huán)境 271
13.3.1 安裝MySQL數(shù)據(jù)庫 271
13.3.2 建立數(shù)據(jù)表 271
13.3.3 配置JDBC驅(qū)動 271
13.3.4 接口Driver和類
DriverManager 272
13.3.5 編寫驅(qū)動測試程序 273
13.4 數(shù)據(jù)庫訪問 274
13.4.1 注冊數(shù)據(jù)庫驅(qū)動 274
13.4.2 創(chuàng)建連接對象 274
13.4.3 創(chuàng)建SQL對象 275
13.4.4 執(zhí)行SQL語句 275
13.4.5 訪問結(jié)果集對象 276
13.5 數(shù)據(jù)庫操作 277
13.5.1 在Swing窗口中顯示結(jié)果集 278
13.5.2 元數(shù)據(jù) 280
13.5.3 PreparedStatement對象 281
13.6 事務(wù)處理 282
13.6.1 事務(wù) 282
13.6.2 保存點(diǎn) 284
本章小結(jié) 285
習(xí)題 285
第5單元 課程項(xiàng)目實(shí)踐
第14章 課程項(xiàng)目—貪吃蛇游戲 289
14.1 項(xiàng)目功能描述 289
14.2 項(xiàng)目設(shè)計與實(shí)現(xiàn) 289
14.2.1 搭建游戲框架 289
14.2.2 GameImage類實(shí)現(xiàn) 290
14.2.3 DigitImage類實(shí)現(xiàn) 292
14.2.4 GameConfig類實(shí)現(xiàn) 292
14.2.5 Node類實(shí)現(xiàn) 294
14.2.6 Snake類實(shí)現(xiàn) 295
14.2.7 事件機(jī)制模擬 297
14.2.8 GameServer類實(shí)現(xiàn) 298
14.2.9 PanelInfo類實(shí)現(xiàn) 299
14.2.10 PanelGame類實(shí)現(xiàn) 301
14.2.11 國際化與本地化 301
14.2.12 MenuGame類實(shí)現(xiàn) 302
14.2.13 FrameGame類實(shí)現(xiàn) 304
14.2.14 PlayerController類實(shí)現(xiàn) 305
14.2.15 GameController類實(shí)現(xiàn) 305
14.2.16 GameEntry類實(shí)現(xiàn) 307
14.3 課程項(xiàng)目總結(jié) 308
附錄A 《勸學(xué)篇》 309
附錄B 編碼規(guī)范 311
附錄C JDK版本特性 314