Java學習筆記(第6版)
林信良 著
相關主題
商品描述
目錄大綱
目錄
第 1 章 Java平臺概述 1
1.1 Java不只是語言 1
1.1.1 Java的前世今生 1
1.1.2 三大平臺 5
1.1.3 JCP與JSR 7
1.1.4 Oracle JDK與OpenJDK 8
1.2 JVM/JRE/JDK 10
1.2.1 什麽是JVM 10
1.2.2 JRE與JDK 12
1.2.3 下載並安裝JDK 13
1.2.4 瞭解JDK安裝內容 15
第 2 章 從JDK到IDE 17
2.1 從“Hello,World”開始 17
2.1.1 編寫Java源代碼 17
2.1.2 PATH是什麽 20
2.1.3 JVM(java)與CLASSPATH 23
2.1.4 編譯器(javac)與CLASSPATH 26
2.2 管理源代碼和字節碼文件 27
2.2.1 編譯器(javac)與SOURCEPATH 28
2.2.2 通過package對類進行管理 29
2.2.3 使用import簡化操作 31
2.3 初識模塊平臺系統 34
2.3.1 JVM(java)與module-path 34
2.3.2 編譯器(javac)與module-path 37
2.3.3 編譯器(javac)與module-source-path 38
2.4 使用IDE 39
2.4.1 IDE項目管理基礎 39
2.4.2 使用了哪個JRE 43
2.4.3 類文件版本 45
第 3 章 基礎語法 48
3.1 類型、變量和運算符 48
3.1.1 類型 48
3.1.2 變量 52
3.1.3 運算符 55
3.1.4 處理類型 62
3.2 流程控制 66
3.2.1 if...else條件表達式 66
3.2.2 switch條件表達式 69
3.2.3 for循環 72
3.2.4 while循環 74
3.2.5 break和continue 75
課後練習 77
第 4 章 認識對象 78
4.1 類與實例 78
4.1.1 定義類 78
4.1.2 使用標準類 82
4.1.3 對象賦值與相等性 85
4.2 基本類型包裝器 87
4.2.1 包裹基本類型 87
4.2.2 自動裝箱與拆箱 88
4.2.3 自動裝箱與拆箱的內幕 89
4.3 數組對象 92
4.3.1 數組基礎 92
4.3.2 操作數據對象 95
4.3.3 復制數組 101
4.4 字符串對象 105
4.4.1 字符串基礎 105
4.4.2 字符串特性 108
4.4.3 文本塊 112
4.4.4 源代碼編碼 114
4.4.5 Java與Unicode 117
4.5 查詢Java API文檔 120
課後練習 124
第 5 章 對象封裝 126
5.1 什麽是封裝 126
5.1.1 封裝對象初始流程 126
5.1.2 對象封裝的操作流程 129
5.1.3 封裝對象的內部數據 132
5.2 類的語法細節 135
5.2.1 public權限設定 135
5.2.2 關於構造函數 137
5.2.3 構造函數與方法重載 138
5.2.4 使用this 140
5.2.5 static類成員 144
5.2.6 變長參數 149
5.2.7 內部類 150
課後練習 152
第 6 章 繼承與多態 154
6.1 什麽是繼承 154
6.1.1 繼承共同行為與實現 154
6.1.2 多態與從屬 158
6.1.3 重新定義實現 163
6.1.4 抽象方法、抽象類 166
6.2 繼承語法細節 167
6.2.1 protected成員 167
6.2.2 覆蓋的細節 169
6.2.3 再看構造函數 171
6.2.4 再看final關鍵字 173
6.2.5 java.lang.Object 174
6.2.6 關於垃圾收集 181
6.2.7 再看抽象類 184
課後練習 186
第 7 章 接口與多態 188
7.1 什麽是接口 188
7.1.1 使用接口定義行為 188
7.1.2 行為的多態 193
7.1.3 解決需求變化 196
7.2 接口的語法細節 203
7.2.1 接口的默認設定 203
7.2.2 匿名內部類 207
7.2.3 使用enum列舉常量 212
課後練習 214
第 8 章 異常處理 215
8.1 語法與繼承架構 215
8.1.1 使用try、catch 215
8.1.2 異常繼承架構 218
8.1.3 要抓還是要拋 223
8.1.4 貼心還是製造麻煩 225
8.1.5 瞭解堆棧跟蹤 228
8.1.6 關於assert 232
8.2 異常與資源管理 235
8.2.1 使用finally 235
8.2.2 自動嘗試關閉資源 237
8.2.3 java.lang.AutoCloseable接口 240
課後習題 243
第 9 章 Collection與Map 244
9.1 使用Collection收集對象 244
9.1.1 認識Collection架構 244
9.1.2 帶有索引的List 246
9.1.3 內容不重復的Set 250
9.1.4 支持隊列操作的Queue 255
9.1.5 使用泛型 258
9.1.6 Lambda表達式簡介 263
9.1.7 Iterable與Iterator 265
9.1.8 Comparable與Comparator 268
9.2 鍵值對與Map 273
9.2.1 常用Map實現的類 274
9.2.2 遍歷Map鍵值 278
9.3 不可變的Collection與Map 281
9.3.1 不可變特性簡介 281
9.3.2 Collections的unmodifiableXXX()方法 282
9.3.3 List、Set、Map的of()方法 284
課後練習 287
第 10 章 輸入/輸出 288
10.1 InputStream與OutputStream 288
10.1.1 流設計概念 288
10.1.2 流繼承架構 292
10.1.3 流處理包裝器 295
10.2 字符處理類 300
10.2.1 Reader與Writer繼承架構 300
10.2.2 字符處理裝飾器 302
課後練習 304
第 11 章 線程與並行API 306
11.1 線程 306
11.1.1 線程簡介 306
11.1.2 Thread與Runnable 309
11.1.3 線程生命周期 311
11.1.4 關於ThreadGroup 318
11.1.5 synchronized與volatile 321
11.1.6 等待與通知 333
11.2 並行API 338
11.2.1 Lock、ReadWriteLock與Condition 338
11.2.2 使用Executor 348
11.2.3 並行Collection簡介 357
課後練習 361
第 12 章 Lambda 362
12.1 認識Lambda語法 362
12.1.1 Lambda語法概覽 362
12.1.2 Lambda表達式與函數式接口 366
12.1.3 當Lambda遇上this與final時 368
12.1.4 方法與構造函數引用 370
12.1.5 接口默認方法 373
12.2 Functional與Stream API 377
12.2.1 使用Optional取代null 377
12.2.2 標準API的函數式接口 380
12.2.3 使用Stream進行管道操作 383
12.2.4 對Stream進行reduce與collect 386
12.2.5 關於flatMap()方法 392
12.2.6 與Stream相關的API 395
12.2.7 活用Optional與Stream 396
12.3 Lambda、並行化與異步處理 399
12.3.1 Stream與並行化 399
12.3.2 Arrays與並行化 403
12.3.3 通過CompletableFuture進行異步處理 404
課後練習 408
第 13 章 時間與日期 409
13.1 認識時間與日期 409
13.1.1 衡量時間 409
13.1.2 年歷簡介 411
13.1.3 認識時區 412
13.2 認識Date與Calendar 412
13.2.1 時間軸上瞬間的Date 413
13.2.2 處理時間與日期的Calendar 414
13.3 新時間與日期API 417
13.3.1 機器時間觀點的API 417
13.3.2 人類時間觀點的API 419
13.3.3 對時間的運算 422
13.3.4 年歷系統設計 425
課後練習 426
第 14 章 NIO與NIO2 427
14.1 認識NIO 427
14.1.1 NIO概述 427
14.1.2 Channel架構與操作 428
14.1.3 Buffer架構與操作 429
14.2 NIO2文件系統 433
14.2.1 NIO2架構 433
14.2.2 操作路徑 434
14.2.3 屬性讀取與設定 437
14.2.4 操作文件與文件夾 440
14.2.5 讀取、訪問文件夾 443
14.2.6 過濾、搜索文件 448
課後練習 451
第 15 章 通用API 452
15.1 日誌 452
15.1.1 日誌API簡介 452
15.1.2 指定日誌層級 454
15.1.3 使用Handler與Formatter 457
15.1.4 自定義Handler、Formatter與Filter 458
15.1.5 使用logging.properties 461
15.2 HTTP Client API 462
15.2.1 淺談URI與HTTP 462
15.2.2 HTTP Client API入門 466
15.2.3 發送請求信息 469
15.3 正則表達式 473
15.3.1 正則表達式簡介 473
15.3.2 quote()與quoteReplacement() 481
15.3.3 Pattern與Matcher 482
15.3.4 Unicode正則表達式 487
15.4 處理數字 490
15.4.1 使用BigInteger 490
15.4.2 使用BigDecimal 492
15.4.3 數字的格式化 495
15.5 再談堆棧跟蹤 496
15.5.1 獲取StackTraceElement 496
15.5.2 Stack-Walking API 499
課後練習 504
第 16 章 整合數據庫 505
16.1 JDBC入門 505
16.1.1 JDBC簡介 505
16.1.2 連接數據庫 512
16.1.3 使用Statement、ResultSet 519
16.1.4 使用PreparedStatement、CallableStatement 524
16.2 JDBC高級應用 528
16.2.1 使用DataSource取得連接 528
16.2.2 使用ResultSet查看、更新數據 532
16.2.3 批量更新 534
16.2.4 Blob與Clob 535
16.2.5 事務簡介 536
16.2.6 metadata簡介 545
課後練習 547
第 17 章 反射與類加載器 549
17.1 使用反射 549
17.1.1 Class與.class文件 549
17.1.2 使用Class.forName() 552
17.1.3 從Class創建對象 554
17.1.4 從Class獲得信息 557
17.1.5 操作對象的方法與成員 560
17.1.6 動態代理 563
17.1.7 反射與模塊 567
17.1.8 使用ServiceLoader 574
17.2 瞭解類加載器 577
17.2.1 類加載器層級 577
17.2.2 創建ClassLoader實例 579
課後練習 581
第 18 章 自定義泛型、列舉與標註 582
18.1 自定義泛型 582
18.1.1 使用extends與? 582
18.1.2 使用super與? 588
18.2 自定義列舉 591
18.2.1 成員的細節 591
18.2.2 構造函數、方法與接口 592
18.3 record與sealed 596
18.3.1 深入瞭解record類 596
18.3.2 sealed的類型層級 601
18.4 關於標註 604
18.4.1 常用標準標註 604
18.4.2 自定義標註類型 608
18.4.3 運行時讀取標註信息 614
課後練習 617
第 19 章 深入瞭解模塊化 619
19.1 使用模塊 619
19.1.1 模塊的種類 619
19.1.2 requires、exports與opens的細節說明 623
19.1.3 補丁模塊 627
19.1.4 放寬模塊封裝與依賴 628
19.2 模塊API 630
19.2.1 使用Module 630
19.2.2 使用ModuleDescriptor 632
19.2.3 淺談ModuleLayer 633
19.3 打包模塊 634
19.3.1 使用jar打包 635
19.3.2 使用JMOD進行打包 637
19.3.3 使用jlink建立運行時鏡像 640
附錄 如何使用本書項目 643