基本信息
好好學Java:從零基礎到項目實戰
作者:歐陽燊
印次:1-1
ISBN:9787302554189
出版日期:2020.07.01
內容簡介
本書是一部
Java基礎開發教程,使用Java 11 版本,以IntelliJ IDEA為開發環境,從軟體工程的視角講解Java編程的各種知識,由淺入深,由理論到實戰,帶領讀者走進Java編程的廣袤世界。全書共分為17章。其中第1~6章介紹Java的常見數據類型及開發,包括基本變數類型、數組類型、包裝變數類型、字元串類型以及日期時間類型;第7~11章介紹面向對象的開發過程,包括面向對象的三要素(封裝、繼承、多態)、面向對象的擴展(嵌套、枚舉、抽象、接口)、面向對象的套用(容器、泛型、檔案IO)、面向對象的特殊處理(異常、反射、註解)以及基於面向對象的函式式編程;第12~14章介紹Java語言的界面編程,包括AWT、Swing、JavaFX三大圖形框架的辨陵鍵料編碼運用;
作者
歐陽燊,碩士,CSDN部落格專家,熟悉C/C++、Java、Android開發,著有《Android Studio開發實戰:從零基礎到App上線》。
目錄
第1章 Java開發環境搭建 1
1.1 JDK的安裝和配置 1
1.1.1 Java的發展歷程 1
1.1.2 下載和安裝JDK 2
1.1.3 配置環境變數 4
1.2 IntelliJ IDEA的安裝與配置 5
1.2.1 安裝IntelliJ IDEA 6
1.2.2 配置IntelliJ IDEA 7
1.2.3 運行第一個Java程式 9
1.3 Java虛擬機(JVM) 12
1.3.1 Java程式的運行機制 13
1.3.2 JVM的體系結構 13
1.3.3 JVM、JRE與套閥廈JDK的區別 15
1.4 Java編程的基本概念 16
1.4.1 Java的代碼結構 16
1.4.2 Java的特殊官吏 19
1.4.3 Java的度量衡 22
1.5 小結 25
第2章 數學運算 26
2.1 數值變數 26
2.1.1 數值變數的類型 26
2.1.2 特殊數字的表達 28
2.1.3 強制類型轉換 30
2.2 算術運算 32
2.2.1 四則運算符 32
2.2.2 賦值運算符 34
2.2.3 一元運算符 35
2.3 數學函式 37
2.3.1 取整函式 37
2.3.2 取隨機數 38
2.3.3 科學計算函式 38
2.3.4 三角函式 39
2.4 實戰練習 39
2.4.1 利用牛頓疊代法求平方根 39
2.4.2 利用割圓術求解圓周率 42
2.5 小結 46
清華大學出版社-圖書目錄
第3章 邏輯控制 47
3.1 邏輯運算 47
3.1.1 布爾酷達項類型及其運算 47
3.1.3 運算符的優先權順序 50
3.1.4 按位邏輯與短路邏輯 52
3.2 控制語句 53
3.2.1 條件分支 53
3.2.2 多路分支 54
3.2.3 while循環 56
3.2.4 for循環 58
3.3 數組 59
3.3.1 一維數組 60
3.3.2 二維數組 62
3.3.3 冒號的幾種用法 64
3.3.4 數組工具Arrays 67
3.4 實戰練習 71
3.4.1 求解“雞兔同籠”問題 71
3.4.2 求解“韓信點兵”問題 72
3.4.3 利用二乘厚探分查找法定位數組
元素 74
3.5 小結 77
第4章 方法與包裝 78
4.1 方法定義 78
4.1.1 方法的組成形式堡想腿笑 78
4.1.2 方法的輸入參數 80
4.1.3 方法蘭敬櫃的輸出參數 83
4.2 基本類型包裝 86
4.2.1 數值類型包裝 86
4.2.2 包裝變數的運算 88
4.2.3 布爾類型包裝 89
4.3 大數字類型 90
4.3.1 大整數BigInteger 90
4.3.2 大小數BigDecimal 91
4.4 實戰練習 93
4.4.1 通過方法遞歸實現階乘
函式 93
4.4.2 利用探促牛頓疊代法求大數
開方 95
4.4.3 利用大數字求更精確的
圓周率 97
4.5 小結 100
第5章 字元串與正則表達式 101
5.1 字元 101
5.1.1 字元類型 101
5.1.2 字元型與整型的相互轉化 102
5.1.3 字元包裝類型 104
5.2 字元串 105
5.2.1 字元串的賦值與轉換 105
5.2.2 字元串的格式化 107
5.2.3 其他常見的字元串方法 111
5.3.1 利用正則串分割字元串 113
5.3.2 利用正則表達式校驗
字元串 117
5.4 實戰練習 120
5.4.1 從地址串中解析收件人
信息 120
5.4.2 校驗身份證號碼的合法性 124
5.5 小結 128
第6章 日期時間 129
6.1 日期工具Date 129
6.1.1 日期工具的用法 129
6.1.2 日期時間的格式化 131
6.2 日曆工具Calendar 134
6.2.1 日曆工具的用法 134
6.2.2 日曆工具的常見套用 136
6.3 Java 8的本地日期時間工具 139
6.3.1 本地日期LocalDate和本地
時間LocalTime 139
6.3.2 本地日期時間與字元串的
互相轉換 142
6.4 實戰練習 144
6.4.1 從1582年問題淺談Date
工具的局限 144
6.4.2 利用本地日期時間實現
萬年曆 148
6.5 小結 150
第7章 類的三要素 151
7.1 類的封裝 151
7.1.1 類的成員定義 151
7.1.2 類的構造方法 156
7.1.3 this關鍵字的用法 157
7.2 類的繼承 159
7.2.1 類的簡單繼承 159
7.2.2 父類:關鍵字super的
用法 161
7.2.3 幾種開放性修飾符 164
7.3 類的多態 165
7.3.1 多態的發生場景 165
7.3.2 對象的類型檢查 167
7.3.3 終態:關鍵字final的用法 169
7.4 實戰練習:定義銀行的賬戶類 171
7.5 小結 177
第8章 特殊的類 178
8.1 類的嵌套 178
8.1.1 內部類和嵌套類 178
8.1.2 靜態:關鍵字static的
用法 181
8.1.3 枚舉類型 185
8.2 類的抽象 188
8.2.1 抽象類 188
8.2.2 簡單接口 190
8.2.3 Java 8之後的擴展接口 193
8.2.4 匿名內部類 195
8.3 函式式編程 198
8.3.1 Lambda表達式 198
8.3.2 函式式接口的定義 200
8.3.3 雙冒號標記的方法引用 202
8.3.4 靜態方法引用和實例方法
引用 206
8.4 實戰練習 210
8.4.1 實現建造者模式 210
8.4.2 實現單例模式 214
8.5 小結 218
第9章 容器與泛型 219
9.1 容器的種類 219
9.1.1 集合:HashSet和TreeSet 219
9.1.2 映射:HashMap和
TreeMap 224
9.1.3 清單:ArrayList和
LinkedList 226
9.2 泛型的規則 228
9.2.1 從泛型方法探究泛型的
起源 229
9.2.2 泛型類的定義及其運用 232
9.2.3 Java 8新增的幾種泛型
接口 234
9.3 容器的加工 240
9.3.1 容器與數組互轉 240
9.3.2 容器工具Collections 242
9.3.3 Java 8新增的流式處理 243
9.4 實戰練習 246
9.4.1 利用泛型實現通用的二分
查找算法 246
9.4.2 藉助容器實現兩種常見的
排隊算法 249
9.5 小結 253
第10章 類的進階用法 254
10.1 異常 254
10.1.1 常見的程式異常 254
10.1.2 記憶體溢出的兩種錯誤 257
10.1.3 異常的處理:扔出與捕捉 259
10.1.4 如何預防異常的產生 263
10.1.5 使用Optional規避空指針
異常 265
10.2 反射 269
10.2.1 面向對象的後門——
反射 269
10.2.2 利用反射技術操作私有
屬性 271
10.2.3 利用反射技術操作私有
方法 273
10.3 註解 275
10.3.1 如何使用系統自帶的
註解 276
10.3.2 註解的基本單元——
元註解 278
10.3.3 利用註解技術檢查空
指針 279
10.4 小結 283
第11章 檔案I/O處理 284
11.1 檔案讀寫 284
11.1.1 檔案與目錄的管理 284
11.1.2 字元流讀寫 286
11.1.3 緩衝區讀寫 290
11.1.4 隨機訪問檔案的讀寫 293
11.2 I/O輸入輸出流 295
11.2.1 檔案I/O位元組流 296
11.2.2 快取I/O位元組流 297
11.2.3 對象序列化 299
11.2.4 I/O流處理簡單的數據
壓縮 302
11.3 NIO檔案編程 304
11.3.1 檔案通道FileChannel 304
11.3.2 位元組快取ByteBuffer 307
11.3.3 檔案通道的性能優勢 309
11.3.4 路徑工具Paths和Files 311
11.4 實戰練習:檔案的分割與合併 314
11.5 小結 317
第12章 AWT界面編程 318
12.1 AWT的視窗面板 318
12.1.1 框架Frame 318
12.1.2 按鈕Button 320
12.1.3 布局Layout 322
12.2 AWT的文本控制項 324
12.2.1 標籤Label 324
12.2.2 輸入框TextField和
TextArea 328
12.2.3 選擇框Checkbox 330
12.3 AWT的圖像處理 332
12.3.1 自定義圖像視圖 332
12.3.2 繪圖工具Graphics 334
12.3.3 利用Graphics2D加工
圖像 337
12.4 實戰練習:生成驗證碼圖片 341
12.5 小結 344
第13章 Swing界面編程 345
13.1 Swing的基礎界面 345
13.1.1 框架JFrame和按鈕
JButton 345
13.1.2 標籤JLabel 347
13.1.3 利用標籤顯示圖像 349
13.2 Swing的簡單控制項 350
13.2.1 輸入框的種類 351
13.2.2 選擇框的種類 352
13.2.3 列表框的種類 355
13.3 Swing的高級控制項 359
13.3.1 表格JTable 359
13.3.2 基本對話框 361
13.3.3 檔案對話框 364
13.4 實戰練習 368
13.4.1 簡單的登錄界面 368
13.4.2 將Java代碼導出JAR包 371
13.5 小結 373
第14章 JavaFX界面編程 374
14.1 JavaFX的基本場景 374
14.1.1 JavaFX的初始配置 374
14.1.2 窗格Pane 377
14.1.3 按鈕Button和標籤Label 379
14.1.4 箱子HBox和VBox 382
14.2 JavaFX的常用控制項 385
14.2.1 輸入框的種類 385
14.2.2 選擇框的種類 388
14.2.3 列表與表格 393
14.2.4 對話框的種類 397
14.3 JavaFX的布局設計 403
14.3.1 FXML布局的基本格式 403
14.3.2 實現FXML對應的
控制器 407
14.3.3 FXML布局的伸展適配 409
14.4 實戰練習 412
14.4.1 房貸計算器(簡易版) 412
14.4.2 JavaFX導出可執行程式 417
14.4.3 房貸計算器(完整版) 420
14.5 小結 424
第15章 多執行緒 425
15.1 執行緒的調度 425
15.1.1 執行緒的基本用法 425
15.1.2 任務Runnable 430
15.1.3 過程Callable 433
15.1.4 定時器與定時任務 435
15.2 並發的控制 437
15.2.1 同步:關鍵字synchronized的
用法 437
15.2.2 通過加解鎖避免資源
衝突 440
15.2.3 信號量Semaphore的請求與
釋放 443
15.2.4 執行緒間的通信方式 447
15.3 執行緒池管理 451
15.3.1 普通執行緒池 451
15.3.2 定時器執行緒池 456
15.3.3 分治框架Fork/Join 459
15.4 實戰練習 463
15.4.1 秒表計時器 463
15.4.2 打地鼠遊戲 467
15.5 小結 473
第16章 網路通信 474
16.1 網路互動的數據格式 474
16.1.1 URL地址的組成格式 474
16.1.2 JSON串的解析 477
16.1.3 XML報文的解析 482
16.2 HTTP接口訪問 486
16.2.1 GET方式的HTTP調用 486
16.2.2 POST方式的HTTP調用 492
16.2.3 Java 11新增的HttpClient 495
16.2.4 HttpClient實現下載與上傳 499
16.3 套接字Socket通信 502
16.3.1 利用Socket傳輸文本 502
16.3.2 使用Socket傳輸檔案 507
16.3.3 採用UDP協定的Socket通信 510
16.3.4 利用HttpServer搭建簡易伺服器 512
16.4 實戰練習 514
16.4.1 HTTP測試工具 515
16.4.2 讓Java程式輸出日誌檔案 519
16.4.3 多人即時通信——仿QQ聊天 523
16.5 小結 534
第17章 資料庫操作 535
17.1 MySQL環境搭建 535
17.1.1 安裝MySQL資料庫 535
17.1.2 安裝MySQL工作檯 547
17.1.3 資料庫操縱語言SQL的用法 553
17.2 JDBC編程 557
17.2.1 JDBC的套用原理 557
17.2.2 通過JDBC管理資料庫 559
17.2.3 通過JDBC查詢數據記錄 562
17.2.4 預報告PreparedStatement 565
17.3 資料庫連線池 567
17.3.1 C3P0連線池 567
17.3.2 Druid連線池 569
17.4 實戰練習 572
17.4.1 代碼生成工具 572
17.4.2 讓Java程式讀取配置檔案 578
17.4.3 詩歌管理系統——古詩三百首 581
17.5 小結 589
附錄A 服務端工程的使用說明 590
A.1 下載並安裝Tomcat 590
A.2 給IDEA安裝Tomcat外掛程式 591
A.3 添加Tomcat的運行配置 592
A.4 啟動Tomcat伺服器 595
6.2.1 日曆工具的用法 134
6.2.2 日曆工具的常見套用 136
6.3 Java 8的本地日期時間工具 139
6.3.1 本地日期LocalDate和本地
時間LocalTime 139
6.3.2 本地日期時間與字元串的
互相轉換 142
6.4 實戰練習 144
6.4.1 從1582年問題淺談Date
工具的局限 144
6.4.2 利用本地日期時間實現
萬年曆 148
6.5 小結 150
第7章 類的三要素 151
7.1 類的封裝 151
7.1.1 類的成員定義 151
7.1.2 類的構造方法 156
7.1.3 this關鍵字的用法 157
7.2 類的繼承 159
7.2.1 類的簡單繼承 159
7.2.2 父類:關鍵字super的
用法 161
7.2.3 幾種開放性修飾符 164
7.3 類的多態 165
7.3.1 多態的發生場景 165
7.3.2 對象的類型檢查 167
7.3.3 終態:關鍵字final的用法 169
7.4 實戰練習:定義銀行的賬戶類 171
7.5 小結 177
第8章 特殊的類 178
8.1 類的嵌套 178
8.1.1 內部類和嵌套類 178
8.1.2 靜態:關鍵字static的
用法 181
8.1.3 枚舉類型 185
8.2 類的抽象 188
8.2.1 抽象類 188
8.2.2 簡單接口 190
8.2.3 Java 8之後的擴展接口 193
8.2.4 匿名內部類 195
8.3 函式式編程 198
8.3.1 Lambda表達式 198
8.3.2 函式式接口的定義 200
8.3.3 雙冒號標記的方法引用 202
8.3.4 靜態方法引用和實例方法
引用 206
8.4 實戰練習 210
8.4.1 實現建造者模式 210
8.4.2 實現單例模式 214
8.5 小結 218
第9章 容器與泛型 219
9.1 容器的種類 219
9.1.1 集合:HashSet和TreeSet 219
9.1.2 映射:HashMap和
TreeMap 224
9.1.3 清單:ArrayList和
LinkedList 226
9.2 泛型的規則 228
9.2.1 從泛型方法探究泛型的
起源 229
9.2.2 泛型類的定義及其運用 232
9.2.3 Java 8新增的幾種泛型
接口 234
9.3 容器的加工 240
9.3.1 容器與數組互轉 240
9.3.2 容器工具Collections 242
9.3.3 Java 8新增的流式處理 243
9.4 實戰練習 246
9.4.1 利用泛型實現通用的二分
查找算法 246
9.4.2 藉助容器實現兩種常見的
排隊算法 249
9.5 小結 253
第10章 類的進階用法 254
10.1 異常 254
10.1.1 常見的程式異常 254
10.1.2 記憶體溢出的兩種錯誤 257
10.1.3 異常的處理:扔出與捕捉 259
10.1.4 如何預防異常的產生 263
10.1.5 使用Optional規避空指針
異常 265
10.2 反射 269
10.2.1 面向對象的後門——
反射 269
10.2.2 利用反射技術操作私有
屬性 271
10.2.3 利用反射技術操作私有
方法 273
10.3 註解 275
10.3.1 如何使用系統自帶的
註解 276
10.3.2 註解的基本單元——
元註解 278
10.3.3 利用註解技術檢查空
指針 279
10.4 小結 283
第11章 檔案I/O處理 284
11.1 檔案讀寫 284
11.1.1 檔案與目錄的管理 284
11.1.2 字元流讀寫 286
11.1.3 緩衝區讀寫 290
11.1.4 隨機訪問檔案的讀寫 293
11.2 I/O輸入輸出流 295
11.2.1 檔案I/O位元組流 296
11.2.2 快取I/O位元組流 297
11.2.3 對象序列化 299
11.2.4 I/O流處理簡單的數據
壓縮 302
11.3 NIO檔案編程 304
11.3.1 檔案通道FileChannel 304
11.3.2 位元組快取ByteBuffer 307
11.3.3 檔案通道的性能優勢 309
11.3.4 路徑工具Paths和Files 311
11.4 實戰練習:檔案的分割與合併 314
11.5 小結 317
第12章 AWT界面編程 318
12.1 AWT的視窗面板 318
12.1.1 框架Frame 318
12.1.2 按鈕Button 320
12.1.3 布局Layout 322
12.2 AWT的文本控制項 324
12.2.1 標籤Label 324
12.2.2 輸入框TextField和
TextArea 328
12.2.3 選擇框Checkbox 330
12.3 AWT的圖像處理 332
12.3.1 自定義圖像視圖 332
12.3.2 繪圖工具Graphics 334
12.3.3 利用Graphics2D加工
圖像 337
12.4 實戰練習:生成驗證碼圖片 341
12.5 小結 344
第13章 Swing界面編程 345
13.1 Swing的基礎界面 345
13.1.1 框架JFrame和按鈕
JButton 345
13.1.2 標籤JLabel 347
13.1.3 利用標籤顯示圖像 349
13.2 Swing的簡單控制項 350
13.2.1 輸入框的種類 351
13.2.2 選擇框的種類 352
13.2.3 列表框的種類 355
13.3 Swing的高級控制項 359
13.3.1 表格JTable 359
13.3.2 基本對話框 361
13.3.3 檔案對話框 364
13.4 實戰練習 368
13.4.1 簡單的登錄界面 368
13.4.2 將Java代碼導出JAR包 371
13.5 小結 373
第14章 JavaFX界面編程 374
14.1 JavaFX的基本場景 374
14.1.1 JavaFX的初始配置 374
14.1.2 窗格Pane 377
14.1.3 按鈕Button和標籤Label 379
14.1.4 箱子HBox和VBox 382
14.2 JavaFX的常用控制項 385
14.2.1 輸入框的種類 385
14.2.2 選擇框的種類 388
14.2.3 列表與表格 393
14.2.4 對話框的種類 397
14.3 JavaFX的布局設計 403
14.3.1 FXML布局的基本格式 403
14.3.2 實現FXML對應的
控制器 407
14.3.3 FXML布局的伸展適配 409
14.4 實戰練習 412
14.4.1 房貸計算器(簡易版) 412
14.4.2 JavaFX導出可執行程式 417
14.4.3 房貸計算器(完整版) 420
14.5 小結 424
第15章 多執行緒 425
15.1 執行緒的調度 425
15.1.1 執行緒的基本用法 425
15.1.2 任務Runnable 430
15.1.3 過程Callable 433
15.1.4 定時器與定時任務 435
15.2 並發的控制 437
15.2.1 同步:關鍵字synchronized的
用法 437
15.2.2 通過加解鎖避免資源
衝突 440
15.2.3 信號量Semaphore的請求與
釋放 443
15.2.4 執行緒間的通信方式 447
15.3 執行緒池管理 451
15.3.1 普通執行緒池 451
15.3.2 定時器執行緒池 456
15.3.3 分治框架Fork/Join 459
15.4 實戰練習 463
15.4.1 秒表計時器 463
15.4.2 打地鼠遊戲 467
15.5 小結 473
第16章 網路通信 474
16.1 網路互動的數據格式 474
16.1.1 URL地址的組成格式 474
16.1.2 JSON串的解析 477
16.1.3 XML報文的解析 482
16.2 HTTP接口訪問 486
16.2.1 GET方式的HTTP調用 486
16.2.2 POST方式的HTTP調用 492
16.2.3 Java 11新增的HttpClient 495
16.2.4 HttpClient實現下載與上傳 499
16.3 套接字Socket通信 502
16.3.1 利用Socket傳輸文本 502
16.3.2 使用Socket傳輸檔案 507
16.3.3 採用UDP協定的Socket通信 510
16.3.4 利用HttpServer搭建簡易伺服器 512
16.4 實戰練習 514
16.4.1 HTTP測試工具 515
16.4.2 讓Java程式輸出日誌檔案 519
16.4.3 多人即時通信——仿QQ聊天 523
16.5 小結 534
第17章 資料庫操作 535
17.1 MySQL環境搭建 535
17.1.1 安裝MySQL資料庫 535
17.1.2 安裝MySQL工作檯 547
17.1.3 資料庫操縱語言SQL的用法 553
17.2 JDBC編程 557
17.2.1 JDBC的套用原理 557
17.2.2 通過JDBC管理資料庫 559
17.2.3 通過JDBC查詢數據記錄 562
17.2.4 預報告PreparedStatement 565
17.3 資料庫連線池 567
17.3.1 C3P0連線池 567
17.3.2 Druid連線池 569
17.4 實戰練習 572
17.4.1 代碼生成工具 572
17.4.2 讓Java程式讀取配置檔案 578
17.4.3 詩歌管理系統——古詩三百首 581
17.5 小結 589
附錄A 服務端工程的使用說明 590
A.1 下載並安裝Tomcat 590
A.2 給IDEA安裝Tomcat外掛程式 591
A.3 添加Tomcat的運行配置 592
A.4 啟動Tomcat伺服器 595