Java程序設計與實踐(微課版)
鄭如濱 汪誌華
商品描述
Java是一門流行的面向對象程序設計語言,在Web開發、移動應用程序開發中都有廣泛的應用,學習Java編程可以培養使用面向對象思維解決問題的能力、培養計算思維以及提高編程實踐能力。
本書以Java 11為主要版本,介紹Java基礎語法及面向對象的編程思想,並在此基礎上,闡述集合框架、異常處理、流與文件、並發編程、數據庫編程等重要內容。本書包含大量的實例、代碼示例及線上編程題集等,可以幫助讀者較好地理解Java的實際應用。
本書內容豐富,講解由淺入深,註重理論聯系實際,適用於計算機類專業的編程教學,也適合計算機編程愛好者自學使用。
作者簡介
鄭如濱 常年講授《數據結構》、《Java語言程序設計》、《Python語言程序設計》課程。主持建設了福建省《Java語言程序設計》精品在線在線課程。《Java語言程序設計》雨課件榮獲教育部在線教育研究中心2019年智慧教學課件“雨課件”稱號。
目錄大綱
Java基礎
第1章 緒論 1
1.1 Java的應用、開發生態與發展
歷史 1
1.1.1 Java的應用 1
1.1.2 Java的開發生態 3
1.1.3 Java的發展歷史 4
1.2 Java的特點與優勢 5
1.3 第一個Java程序 6
1.4 Java程序開發步驟 8
1.5 Java開發與運行環境 11
1.5.1 JVM、JRE與JDK 11
1.5.2 Java開發環境安裝 12
1.5.3 編譯與運行帶命令行參數的
Java程序 14
1.5.4 Eclipse集成開發環境 15
1.5.5 IDEA集成開發環境 20
1.6 Java編程基本規範與註釋 23
1.7 本章小結 25
1.8 習題 25
1.9 實踐任務自檢清單 27
第2章 Java基礎語法 28
2.1 變量與常量、數據類型與
運算符 28
2.1.1 變量與常量 28
2.1.2 數據類型 30
2.1.3 運算符 32
2.1.4 類型轉換 37
2.2 程序結構 39
2.2.1 if-else選擇結構 39
2.2.2 switch選擇結構 42
2.2.3 for循環結構 45
2.2.4 while循環結構 47
2.2.5 打斷循環:break、continue 49
2.2.6 循環小案例 51
2.3 存儲大量數據:數組 52
2.3.1 數組基礎 52
2.3.2 數組常見操作 54
2.3.3 多維數組 57
2.3.4 數組工具類:Arrays 59
2.4 代碼的復用:方法 60
2.4.1 方法的定義 60
2.4.2 方法的重載 62
2.4.3 方法的遞歸調用 64
2.5 引用數據類型:字符串 66
2.5.1 字符串基礎 66
2.5.2 String類的常用方法 67
2.5.3 String與StringBuilder 70
2.6 引用數據類型:包裝類 71
2.6.1 包裝類常見方法 72
2.6.2 包裝類常見屬性 73
2.6.3 包裝類對象、null與包裝類的
使用場景 73
2.7 引用數據類型:數組列表 74
2.8 案例:學生成績管理 75
2.9 本章小結 78
2.10 習題 79
2.11 實踐任務自檢清單 81
Java面向對象
第3章 類與對象 83
3.1 面向過程與面向對象 83
3.2 面向對象入門 84
3.2.1 基本概念 84
3.2.2 類與對象 86
3.2.3 根據需要定義類 86
3.2.4 命名規範 86
3.3 指向對象的引用 87
3.3.1 引用數據類型變量與引用 87
3.3.2 null引用 87
3.3.3 對象的相等性比較 89
3.3.4 引用數據類型變量作為方法
參數 89
3.4 使用類進行面向對象程序設計與
封裝 91
3.4.1 使用類進行面向對象程序
設計 91
3.4.2 封裝 93
3.4.3 setter/getter方法與this 94
3.5 對象的創建與初始化 95
3.5.1 對象的初始化 95
3.5.2 使用構造方法來初始化對象 96
3.5.3 private構造方法:不允許
創建對象 98
3.5.4 使用初始化塊初始化對象 98
3.5.5 對象銷毀與垃圾收集 99
3.6 使用static修飾屬性、方法與
初始化塊 100
3.7 final 103
3.7.1 使用final修飾變量與屬性 103
3.7.2 final的使用時機與常量命名
規範 104
3.8 使用包管理類 104
3.8.1 包與模塊系統概述 105
3.8.2 使用包中的類 105
3.8.3 創建包與包的命名 107
3.8.4 類路徑、JAR文件與項目
構建 107
3.9 案例:識別購物車問題中的類 109
3.10 Java類庫代碼分析與使用:
Math類、String類與包裝類 113
3.10.1 Math類 113
3.10.2 String類 114
3.10.3 包裝類(以Integer類
為例) 115
3.11 本章小結 117
3.12 習題 117
3.13 實踐任務自檢清單 120
第4章 繼承與多態 121
4.1 代碼復用 121
4.2 繼承基本概念 122
4.2.1 父類、子類、繼承與is-a
關系 122
4.2.2 所有類的父類:Object 125
4.2.3 覆蓋:子類對父類方法的
繼承與改造 127
4.2.4 屬性的隱藏與訪問:使用
super關鍵字 130
4.2.5 使用super調用父類構造
方法 131
4.3 繼承與多態 132
4.3.1 向上轉型與動態綁定 132
4.3.2 多態性與面向抽象編程 134
4.3.3 繼承與多態的總結 135
4.4 類型轉換與instanceof 136
4.4.1 子類與父類之間的類型
轉換 136
4.4.2 使用instanceof進行安全的
類型轉換 137
4.5 訪問修飾符 137
4.5.1 類級訪問修飾 138
4.5.2 成員級訪問修飾 138
4.5.3 protected與繼承 138
4.5.4 使用訪問修飾符的最佳
實踐 140
4.6 不可被修改、不可被繼承:使用
final關鍵字 141
4.6.1 使用final修飾類與方法 141
4.6.2 final與不可變類 142
4.7 抽象類及抽象方法:abstract 143
4.8 Java類庫代碼分析與使用:
Number與Random 145
4.8.1 數值相關類的父類:
Number 145
4.8.2 隨機數類:Random 146
4.9 本章小結 148
4.10 習題 149
4.11 實踐任務自檢清單 152
第5章 接口與嵌套類 153
5.1 接口基本概念 153
5.1.1 現實世界中的接口 153
5.1.2 接口及其實現類 154
5.1.3 接口的實現及其
UML類圖 155
5.1.4 接口、多態與面向接口
編程 156
5.2 接口的其他語法特性 157
5.2.1 實現多個接口 157
5.2.2 擴展接口 158
5.2.3 instanceof與接口 158
5.2.4 接口常量、靜態方法與私有
方法 159
5.2.5 接口的默認方法 159
5.3 常用接口 161
5.3.1 Comparable接口:讓排序
代碼更加通用 161
5.3.2 Comparator接口:讓排序
更加靈活 164
5.3.3 Cloneable接口:用於對象
克隆的標記接口 165
5.4 接口與抽象類的區別 168
5.5 嵌套類 169
5.5.1 非靜態嵌套類 169
5.5.2 靜態嵌套類 171
5.5.3 內部類:局部類 173
5.5.4 內部類:匿名類 174
5.6 案例:改造購物車 176
5.6.1 使用接口與嵌套類改造
購物車 176
5.6.2 進階:使用DAO模式改進
商品數據存儲功能 183
5.7 本章小結 188
5.8 習題 189
5.9 實踐任務自檢清單 191
Java進階
第6章 Java集合框架 193
6.1 泛型 194
6.2 List接口:保持順序,允許重復 195
6.2.1 ArrayList集合類 196
6.2.2 使用Iterator疊代器遍歷
List 200
6.2.3 使用for-each遍歷List 201
6.3 Set接口:保持唯一,高效去重 201
6.3.1 HashSet與hasCode()、
equals()方法 202
6.3.2 TreeSet與Comparable、
Comparator接口 204
6.4 Queue接口:有序排隊,出隊
入隊 207
6.4.1 Queue接口簡介 207
6.4.2 PriorityQueue接口簡介 208
6.4.3 Deque接口簡介 208
6.5 Map接口:鍵值映射,快速
查找 209
6.6 集合工具類:Collections 211
6.7 使用Java集合框架進行面向
對象設計 213
6.8 Java流式編程簡介 215
6.8.1 Lambda表達式 215
6.8.2 Stream流式編程 217
6.9 本章小結 220
6.10 習題 221
6.11 實踐任務自檢清單 223
第7章 異常處理 224
7.1 異常基本概念 224
7.1.1 初識異常 225
7.1.2 為什麼要使用異常處理
機制 227
7.1.3 Java程序中的常見異常 227
7.2 異常繼承體系與分類 228
7.3 異常處理機制 230
7.3.1 拋出異常 230
7.3.2 聲明異常 232
7.3.3 捕獲異常 232
7.3.4 finally與資源管理 234
7.3.5 try-with-resources語法與
AutoCloseable接口 235
7.4 自定義異常 237
7.5 異常處理註意事項 239
7.6 本章小結 240
7.7 習題 240
7.8 實踐任務自檢清單 242
第8章 Java I/O流與文件操作 243
8.1 I/O流 244
8.1.1 I/O流的分類 244
8.1.2 I/O流的基本使用 245
8.1.3 在流編程中使用try-with-
resources釋放資源 246
8.2 字節流 247
8.2.1 FileInputStream 248
8.2.2 FileOutputStream 248
8.3 字符流 250
8.3.1 字符編碼 250
8.3.2 FileReader與FileWriter 251
8.3.3 轉換流 252
8.4 緩沖流 253
8.5 格式化文本處理 256
8.5.1 使用Scanner掃描格式化
文本 256
8.5.2 使用PrintWriter格式化輸出
文本 257
8.5.3 標準輸入輸出與控制臺輸入
輸出 259
8.6 處理二進制數據 261
8.6.1 數據流 261
8.6.2 對象流與序列化 262
8.6.3 組合過濾流編程模式 264
8.7 文件基本操作 265
8.7.1 File類簡介 265
8.7.2 Path接口與Paths類 266
8.7.3 使用Files類進行文件操作 266
8.8 本章小結 270
8.9 習題 271
8.10 實踐任務自檢清單 272
第9章 Java並發編程 274
9.1 並發編程基本概念 274
9.1.1 基本概念 274
9.1.2 為什麼需要並發編程 275
9.1.3 進程與線程 275
9.1.4 Java對並發編程的支持 276
9.1.5 多線程程序 277
9.2 任務與線程 278
9.2.1 任務與線程概述 278
9.2.2 Thread類與Runnable接口 278
9.2.3 Thread類及其常用方法 280
9.2.4 線程的狀態 281
9.2.5 線程調度 283
9.2.6 中斷線程 288
9.2.7 守護線程 290
9.2.8 線程優先級 291
9.3 同步:互斥訪問 292
9.3.1 資源共享帶來的問題 292
9.3.2 synchronized關鍵字 294
9.4 同步:線程間的協作 296
9.5 本章小結 300
9.6 習題 300
9.7 實踐任務自檢清單 302
Java應用
第10章 JDBC數據庫編程 303
10.1 關系數據庫與SQL基礎 303
10.1.1 關系數據庫 303
10.1.2 SQL 304
10.1.3 SQL的基本使用 305
10.1.4 MySQL數據庫的使用 308
10.1.5 MySQL數據庫中的數據
類型 308
10.2 JDBC基礎 309
10.3 JDBC程序:數據查詢 310
10.3.1 加載驅動程序 312
10.3.2 連接數據庫:Connection 312
10.3.3 聲明與執行SQL語句:
Statement 312
10.3.4 處理查詢結果:ResultSet 313
10.3.5 關閉連接 315
10.3.6 在項目中使用java.sql
模塊 315
10.4 使用Statement進行增、刪、改
操作 316
10.4.1 executeUpdate()方法 316
10.4.2 插入記錄並獲取所插入
記錄的主鍵值 317
10.4.3 執行各種SQL語句:
execute()方法 318
10.5 預處理:PreparedStatement 318
10.6 批量處理 320
10.7 事務處理 321
10.8 本章小結 324
10.9 習題 324
10.10 實踐任務自檢清單 326