本書共4部分:第一部分和第三部分為Java程序設計基本技能,第二部分和第四部分為Java語言實訓內容。在教學安排上,教師可以打亂基本技能的編寫順序,通過項目驅動的形式進行基本技能的講解,即在第二部分簡易計算器項目基礎上,進行第一部分內容的融合與展開;在第四部分局域網聊天工具項目基礎上,進行第三部分內容的融合與展開。
本書既可作為計算機及相關專業的Java語言課程的教材,也可作為工程人員和科技工作者的自學參考書。
1. 以項目為主線。 2. 理論、實驗和實訓融合。 3. 面向應用型本科、獨立學院,以及部分高職高專學生。
苑俊英,2011年至今,中山大學南方學院電子通信與軟件工程系教師,美國項目管理協會(PMI) 項目管理專業人員(PMP)。
目 錄
第一部分 Java程序設計基本技能(一)
第1章 Java的特點、基本內容和編程環境 2
1.1 Java語言的歷史和特點 2
1.1.1 Java語言的發展歷史 2
1.1.2 Java語言的特點 2
1.2 本書基本內容與教學思路 4
1.3 Java開發環境介紹 4
1.3.1 環境搭建 4
1.3.2 程序調試技術 14
1.4 項目開發模板 14
1.4.1 增量開發簡介 14
1.4.2 本書項目開發采用的模板 15
實驗01——開發環境搭建與使用 16
習題 17 目 錄
第一部分 Java程序設計基本技能(一)
第1章 Java的特點、基本內容和編程環境 2
1.1 Java語言的歷史和特點 2
1.1.1 Java語言的發展歷史 2
1.1.2 Java語言的特點 2
1.2 本書基本內容與教學思路 4
1.3 Java開發環境介紹 4
1.3.1 環境搭建 4
1.3.2 程序調試技術 14
1.4 項目開發模板 14
1.4.1 增量開發簡介 14
1.4.2 本書項目開發采用的模板 15
實驗01——開發環境搭建與使用 16
習題 17
第2章 Java應用基礎 18
2.1 標識符和關鍵字 18
2.2 數據類型 19
2.2.1 基本數據類型 19
2.2.2 復合數據類型 20
2.2.3 枚舉類型 20
2.2.4 類型轉換 21
2.3 變量和常量 22
2.3.1 常量 22
2.3.2 變量 23
2.4 運算符和表達式 26
2.4.1 賦值運算符 26
2.4.2 算術運算符 26
2.4.3 關系運算符 27
2.4.4 條件運算符 27
2.4.5 邏輯運算符 27
2.4.6 位運算符 28
2.4.7 其他運算符 28
2.4.8 運算的優先級和結合性 29
2.4.9 表達式 29
2.5 程序控制結構 32
2.5.1 選擇結構 32
2.5.2 循環結構 36
2.5.3 跳轉語句 40
2.6 本章小結 42
習題 42
第3章 面向對象編程 44
3.1 對象和類 44
3.2 句柄 48
3.3 方法的調用和參數的傳遞 48
3.4 類的繼承和多態 55
3.4.1 繼承 55
3.4.2 多態 60
3.5 包和接口 62
3.6 內部類與匿名的內部類 67
3.7 本章小結 68
習題 68
第4章 數組、字符串、向量和泛型 69
4.1 數組 69
4.1.1 一維數組 69
4.1.2 多維數組 73
4.2 增強的for循環 75
4.3 字符串和字符串緩沖區 76
4.3.1 String 77
4.3.2 StringBuffer 79
4.4 向量 81
4.5 集合-數組鏈表ArrayList 83
4.6 泛型 85
4.6.1 使用泛型的原因 85
4.6.2 泛型在集合類中的使用 86
4.6.3 定義泛型類和泛型接口 86
4.7 枚舉 88
4.8 本章小結 89
習題 89
第5章 圖形用戶界面 91
5.1 Swing概述 91
5.1.1 Swing組件 91
5.1.2 Swing容器 93
5.1.3 基于Swing的JavaGUI設計思路 97
5.2 布局管理器 97
5.2.1 FlowLayout流式布局管理器 97
5.2.2 GridLayout網格布局管理器 99
5.2.3 BorderLayout邊界布局管理器 100
5.2.4 CardLayout卡片布局管理器 101
5.2.5 GridBagLayout網格袋布局管理器 102
5.2.6 BoxLayout盒式布局管理器 103
5.3 事件處理 104
5.3.1 Java事件處理機制 105
5.3.2 鼠標事件處理 106
5.3.3 按鈕動作事件處理 108
5.4 高級圖形用戶界面 111
5.4.1 菜單 111
5.4.2 表格 122
5.4.3 樹 123
5.5 本章小結 125
習題 125
第二部分 JavaGUI實訓——簡易計算器
第6章 標準型計算器 128
6.1 需求分析與項目目標 128
6.1.1 需求分析 128
6.1.2 項目目標 132
6.2 功能分析與軟件設計 132
6.2.1 功能分析 132
6.2.2 軟件設計 133
6.2.3 四則運算過程 134
6.3 標準型計算機增量項目開發計劃 135
6.4 增量6-1:顯示界面 136
6.4.1 Java GUI程序設計過程 136
6.4.2 增量6-1的編程實現 137
6.4.3 增量6-1的程序分析——GUI界面編程模板分析 139
6.4.4 Java圖形界面的程序編碼流程 140
6.4.5 圖形設計:Swing容器 140
6.4.6 圖形設計:Swing基本組件——文本框JTextField 142
6.4.7 圖形設計:Swing基本組件——按鈕JButton 144
6.5 增量6-2:處理數字和運算符輸入 146
6.5.1 按鈕的事件響應 146
6.5.2 使用字符串數組鏈表記錄輸入內容 147
6.5.3 增量6-2的編程實現 148
6.6 增量6-3:四則運算(1) 150
6.6.1 用startCaculation方法實現四則運算過程 150
6.6.2 增量6-3的編程實現 150
6.7 增量6-4:四則運算(2) 151
6.8 增量6-5:處理回退鍵輸入和清空鍵輸入 152
6.9 四則運算的另一種算法 153
6.10 總結回顧與知識擴展 154
實驗02——(標準型)計算器:實現增量6-1(2學時) 154
實驗03——(標準型)計算器:實現增量6-2(2學時) 155
實驗04——(標準型)計算器:實現增量6-3(2學時) 156
實驗05——(標準型)計算器:實現增量6-4(2學時) 156
實驗06(標準型)——計算器:實現增量6-5和界面優化(2學時) 157
實驗07——(標準型)計算器:程序優化(2學時) 158
習題 159
第7章 科學型計算器 160
7.1 需求分析與項目目標 160
7.1.1 需求分析 160
7.1.2 項目目標 162
7.2 功能分析與軟件設計 162
7.3 增量項目開發 163
7.3.1 增量7-1:直接實現科學計算器 163
7.3.2 增量7-2:通過繼承實現科學計算器 164
實驗08——直接實現科學計算器(2學時) 167
實驗09——通過繼承實現科學計算器(2學時) 168
7.4 總結回顧與知識擴展 168
第8章 復合型計算器 170
8.1 需求分析與項目目標 170
8.1.1 需求分析 171
8.1.2 項目目標 174
8.2 功能分析與軟件設計 174
8.3 技術準備與增量項目開發 174
8.4 復合型計算器增量開發計劃 174
8.5 增量8-1:復合計算器I型和II型 175
8.6 增量8-2:復合計算器III型 177
8.7 增量8-3:復合計算器Ⅳ型 177
實驗10——實現復合型計算器(三選一)(2學時) 177
8.9 總結回顧 178
第三部分 Java程序設計基本技能(二)
第9章 異常處理 180
9.1 異常與錯誤 180
9.2 異常的處理方式 181
9.2.1 捕獲異常 181
9.2.2 聲明拋出異常 183
9.3 異常的使用原則 183
9.3.1 在可能出現異常的情況下使用異常 184
9.3.2 不要不處理捕獲的異常 184
9.3.3 不要不指定具體的異常代碼 184
9.3.4 不要把每一條語句都用try…catch封裝 184
9.3.5 異常聲明的數量 185
9.4 斷言 185
9.5 本章小結 187
習題 187
第10章 文件與數據流 188
10.1 流的概念 188
10.2 字節流 188
10.2.1 InputStream和OutputStream 188
10.2.2 文件字節流 190
10.2.3 字節數組流 192
10.2.4 數據流 193
10.2.5 緩沖字節流 195
10.2.6 標準輸入輸出流 197
10.3 字符流 198
10.3.1 Reader和Writer 198
10.3.2 文件字符流 199
10.3.3 字符數組流 201
10.3.4 緩沖字符流 202
10.3.5 PrintWrite 203
10.3.6 字符與字節相互轉換流 204
10.4 隨機訪問文件 205
10.5 對象序列化 206
10.6 文件 208
10.7 本章小結 211
習題 211
第11章 網絡編程 212
11.1 計算機網絡基本知識 212
11.1.1 TCP/IP 212
11.1.2 網絡地址 212
11.1.3 端口 213
11.1.4 套接字 213
11.1.5 URL 213
11.1.6 UDP 213
11.2 URL類 213
11.2.1 創建URL對象 214
11.2.2 讀取頁面信息 214
11.2.3 創建一個到URL的連接 215
11.3 InetAddress類 217
11.3.1 獲取本地主機的IP地址 217
11.3.2 獲取Internet給定的主機和IP地址 217
11.4 TCP Socket通信 218
11.4.1 實現客戶端的Socket類 218
11.4.2 實現服務器端的ServerSocket類 219
11.4.3 TCP Socket通信示例 219
11.5 UDP通信 221
11.5.1 數據報包DatagramPacket類 222
11.5.2 收發數據報DatagramSocket類 223
11.5.3 基于UDP通信舉例 224
11.6 本章小結 225
習題 225
第12章 多線程 226
12.1 線程的基本概念 226
12.2 線程的創建 226
12.2.1 繼承Thread類 226
12.2.2 實現Runnable接口 228
12.3 線程的狀態與線程調度 229
12.4 線程同步 233
12.4.1 線程同步的實例 234
12.4.2 線程同步方法1:使用synchronized方法 235
12.4.3 線程同步方法2:使用synchronized數據 237
12.4.4 線程同步方法3:使用class同步 237
12.5 線程間通信 238
12.6 多線程中的死鎖問題 240
12.6.1 死鎖問題的產生的例子 240
12.6.2 死鎖問題常用解決方法 242
12.7 本章小結 243
習題 243
第13章 Java數據庫編程技術 244
13.1 SQL基本知識 244
13.1.1 SQL基本語句 244
13.1.2 SQL中基本數據類型 245
13.1.3 SQL數據庫創建過程 246
13.2 JDBC基本知識 246
13.2.1 java.sql軟件包 246
13.2.2 JDBC數據庫訪問過程 247
13.3 MySQL與Java數據庫開發 248
13.3.1 使用JDBC實現與MySQL5.0數據庫的開發 248
13.2.2 通過JDBC實現MySQL數據庫開發的一般過程 252
13.3 本章小結 253
習題 253
第四部分 網絡通信與數據庫實訓——局域網聊天工具
第14章 點到點(P2P)聊天工具的例子:網絡通信 257
14.1 需求分析與項目目標 257
14.1.1 需求分析 257
14.1.2 用例分析 258
14.1.3 需求列表 260
14.1.4 項目目標 260
14.2 功能分析與軟件設計 260
14.2.1 界面設計 261
14.2.2 文本聊天功能 262
14.2.3 文件傳輸功能 262
14.2.4 網絡通信功能 262
14.2.5 增量開發計劃 265
14.3 增量項目開發 266
14.3.1 增量14-1:實現聊天器界面 266
14.3.2 增量14-2:實現文本聊天 266
14.3.3 增量14-3:實現文件傳輸過程 271
實驗11——增量14-1:實現聊天器界面(2學時) 273
實驗12——增量14-2:實現文本聊天(3學時) 274
實驗13——增量14-3:實現文件傳輸(3學時) 275
14.5 總結回顧與知識擴展 277
習題 277
第15章 基于C/S結構的聊天工具I: 多線程技術 278
15.1 C/S模式與多線程技術的知識準備 278
15.1.1 服務器/客戶端(C/S)模式 278
15.1.2 多線程技術 285
15.2 需求分析與項目目標 287
15.2.1 需求分析 287
15.2.2 項目目標 292
15.3 功能分析與軟件設計 293
15.3.1 C/S模式中客戶端軟件設計 293
15.3.2 C/S模式中服務器軟件設計 295
15.3.3 C/S模式中的通信協議 297
15.3.4 增量開發計劃 298
15.4 增量15-1:采用多線程技術分離服務器與客戶端代碼 299
15.5 增量15-2:采用JTable實現好友列表、用戶列表 300
15.6 增量15-3:實現服務器端的用戶管理功能 304
15.7 增量15-4:實現C/S結構中客戶端之間的聊天功能 307
15.8 增量15-5:實現C/S結構中的群聊功能 309
15.9 總結回顧與知識擴展 310
實驗14——增量15-1:使用多線程技術分離服務器與
客戶端代碼(2學時) 310
實驗15——增量15-2:采用JTable實現好友列表(4學時) 314
實驗16——增量15-3:實現C/S結構中端的用戶管理(4學時) 316
實驗17——增量15-4:實現C/S結構中客戶端之間的聊天功能(4學時) 317
實驗18——增量15-5:實現C/S結構中的群聊功能(2學時) 319
習題 321
第16章 基于的C/S結構聊天工具II: 數據庫技術 322
16.1 需求分析與項目目標 322
16.1.1 需求分析 322
16.1.2 需求列表 322
16.2 功能分析與軟件設計 323
16.2.1 登錄驗證功能 323
16.2.2 用戶數據下載功能 324
16.2.3 用戶信息數據表的設計 326
16.2.4 服務器與數據庫中用戶信息數據表的接口設計 329
16.2.5 增量計劃 331
16.3 增量16-1:采用數據庫保存用戶數據 331
16.4 增量16-2:實現服務器數據初始化與用戶注冊/登錄 334
16.4.1 建立服務器與數據庫的連接 335
16.4.2 服務器數據初始化 335
16.4.3 用戶注冊/登錄功能 337
16.5 增量16-3:實現用戶數據下載功能 339
16.6 總結回顧與知識擴展 341
實驗19——增量16-1:采用數據庫保存用戶數據(3學時) 341
實驗20——增量16-2:實現數據庫初始化與用戶注冊/登錄(3學時) 342
實驗21——增量16-3:實現用戶數據下載功能(3學時) 344
習題 345