本書作為一本詳盡的Java語言學(xué)習(xí)指南,緊密貼合JDK 17,并選用IntelliJ IDEA作為開發(fā)工具,全方位涵蓋從Java基礎(chǔ)入門、Java語法基礎(chǔ),到面向?qū)ο蟪绦蛟O(shè)計、異常處理、Java API、集合、I/O流、泛型、反射、注解、多線程、JDBC技術(shù)及項目實戰(zhàn)等一系列的核心知識點。本書在內(nèi)容設(shè)計上循序漸進,幫助讀者逐步構(gòu)建起完整的Java知識體系。本書不僅包含豐富的理論知識,還通過多個綜合案例進行講解,讓讀者能夠?qū)⑺鶎W(xué)知識應(yīng)用于實際開發(fā)場景中,從而獲得寶貴的實戰(zhàn)經(jīng)驗和技巧。同時,本書緊跟時代步伐,創(chuàng)新性地融入 AI 輔助編程理念,讀者可掃碼書中二維碼來獲取豐富的 AI 賦能資源。本書既可作為職業(yè)院校、本科院校計算機相關(guān)專業(yè)的教學(xué)用書,也可作為Java技術(shù)開發(fā)人員的參考用書。無論是Java語言的初學(xué)者,還是有一定經(jīng)驗的開發(fā)者,本書都可為其提供有力的學(xué)習(xí)支持,幫助其為未來的職業(yè)發(fā)展打下堅實的基礎(chǔ)。
蔣輝,男,1983年7月生,漢族,中共黨員,碩士,副教授,天津理工大學(xué)計算機科學(xué)與工程學(xué)院碩士研究生導(dǎo)師(兼職),天津仁愛學(xué)院智算工程學(xué)院副院長,天津市級計算機實驗教學(xué)示范中心主任,學(xué)院數(shù)據(jù)科學(xué)與知識工程科研團隊負責(zé)人。
第1章 Java基礎(chǔ)入門 1
1.1 Java語言的簡介 2
1.1.1 Java語言的由來 2
1.1.2 Java虛擬機 2
1.1.3 Java語言的垃圾回收
機制 3
1.2 JDK 17的安裝與使用 3
1.2.1 JDK 17的安裝 4
1.2.2 Java程序的運行過程 4
1.2.3 第一個Java程序 5
1.3 安裝并使用相關(guān)工具 5
1.3.1 構(gòu)建工具Maven 5
1.3.2 開發(fā)工具IntelliJ IDEA 9
小結(jié) 11
選擇題 11
經(jīng)典面試題 12
跟我上機 12
第2章 Java語法基礎(chǔ)(上) 13
2.1 注釋 14
2.1.1 單行注釋 14
2.1.2 多行注釋 14
2.1.3 文檔注釋 14
2.2 變量和常量 15
2.2.1 什么是變量 15
2.2.2 標(biāo)識符命名規(guī)則和
規(guī)范 15
2.2.3 變量的使用 16
2.2.4 什么是常量 16
2.2.5 常量的分類 16
2.2.6 常量在程序中的應(yīng)用 16
2.3 數(shù)據(jù)類型 17
2.3.1 基本數(shù)據(jù)類型 17
2.3.2 包裝類 19
2.3.3 引用數(shù)據(jù)類型 20
2.4 運算符 21
2.4.1 運算符的分類 21
2.4.2 運算符的優(yōu)先級和
結(jié)合性 22
2.4.3 其他運算符 23
2.5 控制語句 23
2.5.1 if條件語句 24
2.5.2 switch語句 25
2.5.3 case穿透 26
2.5.4 switch新特性和yield
關(guān)鍵字 26
2.5.5 循環(huán)語句 27
2.5.6 中斷語句
(跳轉(zhuǎn)語句) 29
2.6 Java語言中的關(guān)鍵字 31
小結(jié) 31
選擇題 31
經(jīng)典面試題 32
跟我上機 32
第3章 Java語法基礎(chǔ)(下) 33
3.1 數(shù)組 34
3.1.1 一維數(shù)組 34
3.1.2 二維數(shù)組 35
3.2 方法 37
3.2.1 方法的用途 38
3.2.2 方法的格式和調(diào)用 38
3.2.3 方法重載 39
3.3 String字符串及常用方法 40
3.3.1 基本概念 40
3.3.2 字符串的創(chuàng)建 42
3.3.3 String類的常用方法 43
3.3.4 String類型與基本數(shù)據(jù)
類型間的轉(zhuǎn)換 44
3.3.5 格式化字符串 45
小結(jié) 46
選擇題 46
經(jīng)典面試題 47
跟我上機 47
第4章 面向?qū)ο蟪绦蛟O(shè)計(上) 48
4.1 類與對象 49
4.1.1 面向?qū)ο蟮乃枷?49
4.1.2 類的定義 49
4.1.3 對象的創(chuàng)建與使用 49
4.1.4 對象的引用傳遞 50
4.1.5 訪問控制 50
4.2 封裝性 52
4.2.1 為什么要封裝 52
4.2.2 如何實現(xiàn)封裝 52
4.3 構(gòu)造方法 54
4.3.1 定義構(gòu)造方法 54
4.3.2 構(gòu)造方法的重載 55
4.4 this關(guān)鍵字 56
4.4.1 使用this關(guān)鍵字來引用
本類中的屬性 56
4.4.2 使用this關(guān)鍵字來引用
成員方法 57
4.4.3 使用this關(guān)鍵字來引用
本類的構(gòu)造方法 57
4.5 代碼塊 58
4.5.1 普通代碼塊 59
4.5.2 構(gòu)造塊 59
4.6 static關(guān)鍵字 60
4.6.1 靜態(tài)屬性 61
4.6.2 靜態(tài)方法 61
4.6.3 靜態(tài)代碼塊 61
4.7 final關(guān)鍵字 62
4.7.1 使用final關(guān)鍵字修飾
類名 62
4.7.2 使用final關(guān)鍵字修飾
方法名 63
小結(jié) 65
選擇題 65
經(jīng)典面試題 66
跟我上機 66
第5章 面向?qū)ο蟪绦蛟O(shè)計(下) 67
5.1 繼承 68
5.1.1 繼承的定義 68
5.1.2 重寫 69
5.1.3 使用super和this
關(guān)鍵字 70
5.2 多態(tài) 73
5.2.1 編譯時多態(tài)
(靜態(tài)綁定) 73
5.2.2 運行時多態(tài)
(動態(tài)綁定) 74
5.2.3 重寫和重載的區(qū)別 74
5.3 抽象類 75
5.3.1 抽象類的定義 75
5.3.2 抽象類和抽象方法的
特征 76
5.4 接口 77
5.4.1 接口的定義 77
5.4.2 接口的實現(xiàn) 78
5.4.3 接口的繼承 78
5.4.4 接口在實際開發(fā)環(huán)境中的
應(yīng)用 78
5.4.5 抽象類與接口的區(qū)別 80
5.5 內(nèi)部類 80
5.5.1 內(nèi)部類的使用場景 80
5.5.2 成員內(nèi)部類 81
5.5.3 靜態(tài)內(nèi)部類 81
5.5.4 局部內(nèi)部類 81
5.5.5 匿名內(nèi)部類 82
小結(jié) 83
選擇題 83
經(jīng)典面試題 83
跟我上機 84
第6章 異常處理 85
6.1 異常的定義 86
6.2 異常的類型 86
6.3 異常處理 89
6.3.1 try-catch語句塊 89
6.3.2 try-catch-finally語句塊 90
6.3.3 throws關(guān)鍵字 90
6.3.4 throw關(guān)鍵字 91
6.3.5 throw和throws關(guān)鍵字的
區(qū)別 92
6.4 自定義異常 92
6.5 使用斷言 95
小結(jié) 96
選擇題 96
經(jīng)典面試題 97
跟我上機 97
第7章 Java API 98
7.1 Object類 99
7.1.1 Object類的概述 99
7.1.2 Object類的常用方法 99
7.2 Arrays類 100
7.2.1 Arrays類的概述 100
7.2.2 Arrays類的常用方法 100
7.3 System類與Runtime類 102
7.3.1 System類 102
7.3.2 Runtime類 103
7.4 Math類與Random類 104
7.4.1 Math類 104
7.4.2 Random類 105
7.5 日期時間類 106
7.5.1 LocalDate類 106
7.5.2 LocalTime類 107
7.5.3 LocalDateTime類 108
7.5.4 Period類 108
7.5.5 Duration類 109
7.5.6 DateTimeFormatter類 110
小結(jié) 111
選擇題 111
經(jīng)典面試題 112
跟我上機 112
第8章 集合 113
8.1 初識集合 114
8.2 Collection接口 115
8.2.1 Collection接口的常用
方法 115
8.2.2 Collection接口遍歷
元素 115
8.2.3 List接口 117
8.2.4 Set接口 119
8.2.5 Map接口 121
8.3 Collections工具類 123
8.3.1 排序操作 123
8.3.2 查找和替換 125
8.4 Lambda表達式 127
小結(jié) 128
選擇題 129
經(jīng)典面試題 129
跟我上機 129
第9章 I/O流 130
9.1 File類 131
9.1.1 File類概述 131
9.1.2 創(chuàng)建、刪除操作 131
9.1.3 判斷、獲取文件信息 131
9.1.4 目錄操作 132
9.2 字符集 133
9.2.1 常用的字符集 133
9.2.2 字符集的編碼和解碼
操作 134
9.3 I/O流的分類 135
9.3.1 字節(jié)流的使用 136
9.3.2 字符流的使用 138
9.3.3 緩沖流 139
9.3.4 轉(zhuǎn)換流 142
9.4 對象的序列化與反序列化 143
9.4.1 對象的序列化 144
9.4.2 對象的反序列化 144
9.5 打印流 145
9.6 I/O框架 146
9.7 Java NIO 148
9.7.1 NIO與I/O包 148
9.7.2 NIO包的主要組成
部分 149
小結(jié) 150
選擇題 151
經(jīng)典面試題 151
跟我上機 151
第10章 泛型、反射與注解 152
10.1 泛型 153
10.1.1 什么是泛型 153
10.1.2 使用和編寫泛型 153
10.1.3 通配符 156
10.2 反射 158
10.2.1 Class類 158
10.2.2 訪問字段 160
10.2.3 調(diào)用方法 161
10.2.4 調(diào)用構(gòu)造方法 162
10.2.5 獲取繼承關(guān)系 163
10.2.6 動態(tài)代理 163
10.3 注解 165
10.3.1 使用注解 166
10.3.2 定義注解 166
10.3.3 處理注解 167
10.4 綜合案例 169
小結(jié) 170
選擇題 170
經(jīng)典面試題 171
跟我上機 171
第11章 多線程 172
11.1 多線程基礎(chǔ) 173
11.2 線程的實現(xiàn)方式 173
11.2.1 繼承Thread類 173
11.2.2 實現(xiàn)Runnable接口 174
11.2.3 使用線程池 175
11.3 線程的狀態(tài) 176
11.3.1 線程的狀態(tài)及生命
周期 176
11.3.2 線程的狀態(tài)轉(zhuǎn)換 177
11.4 線程的常用方法 177
11.4.1 sleep方法 178
11.4.2 join方法 178
11.4.3 yield方法 178
11.4.4 wait和notify方法 178
11.4.5 interrupt和stop
方法 179
11.4.6 setPriority (int newPriority)
和getPriority方法 180
11.4.7 setDaemon方法 180
11.5 進階多線程 184
11.5.1 多線程引發(fā)問題的解決
方法 185
11.5.2 線程同步與鎖機制 185
11.5.3 線程安全 186
小結(jié) 188
選擇題 188
經(jīng)典面試題 189
跟我上機 189
第12章 JDBC技術(shù) 190
12.1 數(shù)據(jù)庫編程基礎(chǔ) 191
12.1.1 JDBC數(shù)據(jù)庫應(yīng)用
模型 191
12.1.2 使用JDBC驅(qū)動連接
數(shù)據(jù)庫 192
12.2 JDBC的常用類和接口 194
12.2.1 Driver接口 195
12.2.2 DriverManager類 195
12.2.3 Connection接口 196
12.2.4 Statement接口 196
12.2.5 PreparedStatement
接口 196
12.2.6 CallableStatement
接口 197
12.2.7 ResultSet接口 197
12.3 數(shù)據(jù)庫基本操作 198
12.3.1 數(shù)據(jù)插入操作 198
12.3.2 數(shù)據(jù)刪除操作 198
12.3.3 數(shù)據(jù)更新操作 199
12.3.4 數(shù)據(jù)查詢操作 199
12.3.5 編譯預(yù)處理 201
12.4 事務(wù)處理 205
12.4.1 事務(wù)概述 205
12.4.2 常用事務(wù)處理方法 206
小結(jié) 209
選擇題 209
經(jīng)典面試題 209
跟我上機 210
第13章 項目實戰(zhàn)——斗地主小游戲 211
13.1 項目概述 212
13.1.1 項目流程分析 212
13.1.2 項目開發(fā)環(huán)境 214
13.2 準備工作 214
13.2.1 創(chuàng)建項目 214
13.2.2 添加依賴 215
13.3 開始編程 217
13.3.1 定義接口 217
13.3.2 編寫主程序 218
13.3.3 初始化階段 220
13.3.4 發(fā)牌階段 223
13.3.5 搶地主階段 224
13.3.6 玩家出牌階段 225
13.3.7 結(jié)算階段 229
小結(jié) 229
經(jīng)典面試題 230