Java無難事——詳解Java編程核心思想與技術(第2版)

孫鑫

  • 出版商: 電子工業
  • 出版日期: 2023-01-01
  • 定價: $1,008
  • 售價: 8.5$857
  • 語言: 簡體中文
  • 頁數: 844
  • ISBN: 7121445549
  • ISBN-13: 9787121445545
  • 相關分類: Java 程式語言
  • 立即出貨

買這商品的人也買了...

商品描述

買書贈送超詳細視頻講解!《Java無難事》系統地講解了Java開發人員需要掌握的核心知識,按照中國人的思維習慣,由淺入深、循序漸進、引導式地帶領你快速掌握Java知識。全書秉承作者一貫的寫作風格,對知識的講解讓你知其然且知其所以然。全書語言通俗易懂、幽默風趣,在內容安排上由淺入深,在知識講解上深入淺出,為你節省腦細胞,讓你輕松愉快地掌握Java知識。超值的同步學習視頻並不是書中內容的重復,而是有力的補充和完善。本書還講解了依賴註入(IoC/DI)容器、面向切麵編程(AOP)、對象關系映射(ORM)框架的實現原理,同時還給出了並發編程領域中經常用到的線程池的實現。

目錄大綱

目 錄

第1章 Java初窺 1
1.1 Java的起源 1
1.2 Java能做什麽 1
1.3 相關概念 2
1.3.1 JDK 2
1.3.2 Java家族的三個成員 2
1.3.3 Java 1、Java 2和Java 5 3
1.3.4 JRE 3
1.4 安裝JDK 3
1.4.1 下載JDK 11(Java SE 11) 4
1.4.2 安裝JDK 5
1.4.3 下載幫助文檔 6
1.5 Java的特性 6
1.5.1 簡單 6
1.5.2 面向對象 7
1.5.3 健壯 7
1.5.4 安全 7
1.5.5 結構中立 7
1.5.6 可移植 7
1.5.7 高性能 8
1.5.8 解釋執行 8
1.5.9 平臺無關 8
1.5.10 多線程 8
1.5.11 動態 9
1.6 Java跨平臺的原理 9
1.6.1 Java源文件的編譯過程 9
1.6.2 Java解釋器運行機制 9
1.6.3 Java字節碼的執行方式 10
1.6.4 理解JVM 10
1.7 第一個程序 11
1.7.1 瞭解JDK 11
1.7.2 編寫第一個Java程序 11
1.8 掃清Java徵途中的兩塊絆腳石 15
1.8.1 有用的PATH 15
1.8.2 難纏的CLASSPATH 17
1.9 交互式編程環境JShell 19
1.10 為Java程序打包 20
1.10.1 JAR文件 20
1.10.2 將字節碼文件打包到
JAR包中 20
1.10.3 將目錄中所有文件打包到
JAR文件中 21
1.10.4 清單文件 21
1.11 總結 22
1.12 實戰練習 22
第2章 初識Java語言 23
2.1 標識符 23
2.2 數據類型 23
2.2.1 整數類型 24
2.2.2 浮點類型 25
2.2.3 字符(char)型 25
2.2.4 布爾(boolean)型 26
2.2.5 String類型 26
2.3 變量和字面常量 26
2.3.1 變量 26
2.3.2 字面常量 27
2.4 類型轉換的奧秘 30
2.5 運算符 32
2.5.1 賦值運算符 32
2.5.2 自增和自減運算符 32
2.5.3 算術運算符 33
2.5.4 關系運算符 34
2.5.5 布爾運算符 34
2.5.6 位運算符 35
2.5.7 移位運算符 37
2.5.8 一元和二元運算符 39
2.5.9 三元運算符 39
2.5.10 優先級 39
2.6 表達式與語句 40
2.7 程序結構 40
2.7.1 分支語句 41
2.7.2 循環語句 46
2.8 數組 54
2.8.1 數組類型與聲明數組 54
2.8.2 創建數組 55
2.8.3 使用數組 56
2.8.4 匿名數組 57
2.8.5 多維數組 57
2.8.6 數組的初始值和越界 59
2.9 分隔符 60
2.10 註釋 60
2.10.1 傳統註釋 60
2.10.2 JavaDoc註釋 61
2.11 Java中的關鍵字 63
2.12 總結 63
2.13 實戰練習 63
第3章 進入對象的世界 65
3.1 面向對象思想 65
3.2 對象的狀態和行為 66
3.2.1 對象都有一組固定的行為 66
3.2.2 註意思維習慣 66
3.3 面向對象編程的難點 67
3.4 Java的類與對象 67
3.5 字段(field)與方法 68
3.5.1 字段 68
3.5.2 方法 68
3.5.3 方法的參數與返回值 69
3.6 構造方法與new關鍵字 71
3.7 方法重載 74
3.8 特殊變量this 75
3.9 關鍵字static 79
3.9.1 靜態字段 79
3.9.2 靜態方法 81
3.9.3 static語句塊 82
3.10 常量 82
3.11 枚舉(enum) 83
3.11.1 原始的枚舉實現 83
3.11.2 枚舉類型 84
3.11.3 枚舉值的比較 86
3.11.4 自定義枚舉值 86
3.12 總結 87
3.13 實戰練習 87
第4章 高級面向對象編程 88
4.1 繼承 88
4.2 方法的覆蓋(override) 90
4.3 多態(polymorphism) 91
4.3.1 何為多態 91
4.3.2 多態的實際應用 92
4.3.3 Java編譯器如何實現多態 94
4.3.4 類型轉換 94
4.3.5 協變返回類型 96
4.3.6 在構造方法中調用被覆蓋的
方法 97
4.4 特殊變量super 98
4.4.1 訪問父類被子類覆蓋的方法或
隱藏的變量 98
4.4.2 調用父類構造方法 100
4.5 封裝與private 103
4.6 對外發布的接口——public 107
4.7 再談final 109
4.7.1 final類 109
4.7.2 final方法 109
4.7.3 final參數 110
4.8 對象的銷毀 110
4.9 面向對象的四個基本特性 111
4.10 總結 112
4.11 實戰練習 112
第5章 包和訪問控制 114
5.1 在包中的類 114
5.2 導入類 117
5.3 靜態導入 119
5.4 靜態導入枚舉類型 120
5.5 訪問控制 121
5.5.1 類的訪問說明符 121
5.5.2 類成員的訪問說明符 122
5.6 總結 126
5.7 實戰練習 126
第6章 抽象類與接口 127
6.1 抽象方法和抽象類 127
6.2 接口 131
6.3 接口中的數據成員 133
6.4 接口的繼承與實現 133
6.5 接口的應用 135
6.6 深入接口——通信雙方的協議 137
6.7 接口的默認方法和靜態方法 139
6.7.1 默認方法 139
6.7.2 靜態方法 144
6.8 接口的私有方法 145
6.9 總結 146
6.10 實戰練習 147
第7章 內部類(Inner Class) 149
7.1 創建內部類 149
7.2 訪問外部類 150
7.3 內部類與接口 153
7.4 局部內部類 155
7.5 匿名內部類 157
7.5.1 創建匿名內部類 157
7.5.2 匿名內部類的構造方法 159
7.6 靜態內部類 160
7.7 內部類的繼承與覆蓋 161
7.7.1 內部類的繼承 161
7.7.2 內部類的覆蓋 162
7.8 內部類規則總結 163
7.9 回調與事件機制 163
7.9.1 回調(callback) 163
7.9.2 事件(event) 167
7.10 總結 169
7.11 實戰練習 169
第8章 異常處理 170
8.1 什麽是異常 170
8.2 捕獲異常 172
8.3 使用finally進行清理 175
8.4 拋出異常與聲明異常 179
8.5 RuntimeException 182
8.6 創建自己的異常體系結構 184
8.7 try-with-resources 188
8.7.1 自動關閉資源 188
8.7.2 聲明多個資源 189
8.7.3 catch多個異常 191
8.7.4 使用更具包容性的類型
檢查重新拋出異常 192
8.8 總結 193
8.9 實戰練習 193
第9章 深入字符串 194
9.1 String類 194
9.2 ==運算符與equals方法 194
9.3 compareTo方法 197
9.4 字符串拼接 198
9.5 操作字符串 198
9.5.1 獲取字符串的長度 199
9.5.2 查找字符或字符串 199
9.5.3 判斷字符串的開始與結尾 200
9.5.4 獲取指定索引位置的字符 200
9.5.5 截取子字符串 201
9.5.6 分割字符串 201
9.5.7 替換字符或字符串 202
9.5.8 合並字符串 203
9.5.9 重復字符串 203
9.5.10 大小寫轉換 203
9.5.11 去除字符串首尾空白 204
9.5.12 判斷字符串是否為空 204
9.5.13 提取字符串的行流 205
9.5.14 與字節數組相互轉換 205
9.6 StringBuffer類和
StringBuilder類 206
9.7 格式化輸出 207
9.7.1 格式說明符 208
9.7.2 參數索引 208
9.7.3 格式說明字符 208
9.7.4 寬度和精度 209
9.7.5 標志字符 210
9.7.6 生成格式化的String對象 211
9.8 正則表達式 211
9.8.1 正則表達式的優點 211
9.8.2 一切從模式開始 213
9.8.3 創建正則表達式 213
9.8.4 量詞 216
9.8.5 String類的正則表達式方法 216
9.8.6 Pattern和Matcher 218
9.8.7 郵件地址驗證 218
9.8.8 獲取組匹配的內容 220
9.8.9 替換字符串 221
9.9 總結 221
9.10 實戰練習 222
第10章 Java應用 223
10.1 再論引用類型 223
10.1.1 引用類型——數組 223
10.1.2 方法傳參 225
10.2 操作數組 226
10.2.1 數組的復制 226
10.2.2 數組的排序 229
10.2.3 搜索數組中的元素 232
10.2.4 填充數組 233
10.3 基本數據類型與封裝類 234
10.3.1 基本數據類型與封裝類
對象的互相轉換 235
10.3.2 封裝類對象與字符串的
互相轉換 236
10.3.3 基本數據類型與字符串的
互相轉換 236
10.3.4 自動裝箱與拆箱 236
10.4 對象的克隆 237
10.5 國際化與本地化 242
10.5.1 Locale 242
10.5.2 資源包 244
10.5.3 消息格式化 248
10.6 總結 249
10.7 實戰練習 249
第11章 泛型 250
11.1 為什麽需要泛型 250
11.2 泛型與基本數據類型 253
11.3 泛型類中的數組 254
11.4 元組 256
11.5 泛型接口 258
11.5.1 一個簡單的泛型接口 258
11.5.2 匿名內部類實現泛型接口 259
11.5.3 map機制的實現 260
11.6 泛型方法 262
11.6.1 簡單的泛型方法 262
11.6.2 完善映射機制的實現 263
11.7 通配符類型 264
11.7.1 通配符的子類型限定 266
11.7.2 通配符的超類型限定 267
11.8 類型參數的限定 269
11.9 深入泛型機制 270
11.10 泛型的一些問題 272
11.10.1 接口的二次實現 272
11.10.2 方法重載 273
11.10.3 泛型類型的實例化 273
11.10.4 異常 274
11.11 使用泛型的限制 275
11.12 類型參數的命名約定 275
11.13 總結 275
11.14 實戰練習 276
第12章 Lambda表達式 277
12.1 理解Lambda表達式 277
12.2 Lambda表達式的語法 278
12.3 函數式接口 279
12.4 內置函數式接口 280
12.5 方法引用 281
12.6 構造方法引用 282
12.7 數組引用 284
12.8 總結 284
12.9 實戰練習 284
第13章 集合類 285
13.1 集合框架中的接口與實現類 285
13.1.1 集合框架中的接口 286
13.1.2 集合框架中的實現類 286
13.1.3 Collection類型的集合 286
13.1.4 Map類型的集合 288
13.2 迭代 289
13.2.1 Iterator接口 289
13.2.2 迭代器與“for each”循環 291
13.2.3 新增的forEach方法 292
13.2.4 ListIterator接口 293
13.2.5 迭代與回調 295
13.3 數據結構簡介 296
13.3.1 鏈表 296
13.3.2 棧 299
13.3.3 隊列 299
13.4 List 299
13.4.1 ArrayList 300
13.4.2 LinkedList 303
13.4.3 List集合類的性能 306
13.5 Set 309
13.5.1 HashSet 309
13.5.2 TreeSet 314
13.5.3 LinkedHashSet 315
13.5.4 Set集合類的性能 316
13.6 Queue 317
13.6.1 Queue接口 317
13.6.2 PriorityQueue類 318
13.6.3 Deque接口 319
13.7 Collections類 320
13.7.1 排序集合中的元素 320
13.7.2 獲取最大和最小元素 322
13.7.3 在集合中搜索 323
13.7.4 獲取包裝器集合 324
13.8 再探Comparator接口 325
13.9 深入Map類型 328
13.9.1 Map接口 328
13.9.2 Map的工作原理 329
13.9.3 HashMap 331
13.9.4 TreeMap 332
13.9.5 LinkedHashMap 333
13.9.6 Map性能測試 334
13.10 遺留的集合 336
13.10.1 Enumeration接口 336
13.10.2 Vector類 336
13.10.3 Stack類 337
13.10.4 Hashtable類 337
13.10.5 Properties類 337
13.10.6 BitSet類 339
13.11 集合工廠方法 340
13.11.1 of方法 340
13.11.2 copyOf方法 341
13.12 總結 342
13.13 實戰練習 342
第14章 Stream 344
14.1 什麽是Stream 344
14.2 創建流 345
14.3 並行流與串行流 348
14.4 有序流和無序流 348
14.5 中間操作 348
14.5.1 篩選和截斷 349
14.5.2 映射 351
14.5.3 排序 352
14.5.4 peek 353
14.6 終端操作 354
14.6.1 遍歷 354
14.6.2 查找與匹配 355
14.6.3 最大/最小與計數 356
14.6.4 收集統計信息 357
14.6.5 reduce 357
14.6.6 collect 361
14.7 並行流的性能 366
14.8 總結 368
14.9 實戰練習 369
第15章 Class類與反射API 370
15.1 Class<T>類 370
15.2 獲取類型信息 372
15.2.1 獲取方法和字段信息 372
15.2.2 獲取基類和接口信息 374
15.2.3 獲取枚舉信息 375
15.2.4 獲取泛型信息 376
15.2.5 獲取註解信息 379
15.3 檢測類型 379
15.4 使用Class和反射創建類的
對象 380
15.5 使用反射調用對象的方法 383
15.6 使用反射修改對象的字段 384
15.7 依賴註入容器 385
15.8 動態代理 391
15.9 ClassLoader 395
15.9.1 類加載器的分類 396
15.9.2 類加載器的加載機制 397
15.9.3 自定義類加載器 398
15.10 適可而止 400
15.11 方法句柄 401
15.12 服務加載器 403
15.13 總結 407
15.14 實戰練習 407
第16章 註解(Annotation) 408
16.1 預定義的註解 408
16.1.1 @Override 408
16.1.2 @Deprecated 409
16.1.3 @SuppressWarnings 410
16.1.4 @SafeVarargs 411
16.1.5 @FunctionalInterface 412
16.2 自定義註解 412
16.3 元註解 413
16.3.1 @Documented 414
16.3.2 @Retention 414
16.3.3 @Target 415
16.3.4 @Inherited 416
16.3.5 @Repeatable 416
16.4 註解與反射 417
16.5 編寫註解處理器 421
16.5.1 依賴註入容器的註解實現 421
16.5.2 使用註解生成數據庫表 423
16.6 總結 428
16.7 實戰練習 428
第17章 多線程 429
17.1 基本概念 429
17.1.1 程序和進程 429
17.1.2 線程 429
17.2 Java對多線程的支持 430
17.3 Java線程 430
17.3.1 Thread類 431
17.3.2 創建任務 432
17.3.3 讓步 433
17.3.4 休眠 434
17.3.5 優先級 436
17.3.6 加入一個線程 437
17.3.7 捕獲線程的異常 438
17.3.8 後台線程 440
17.3.9 線程組 442
17.3.10 線程的狀態 442
17.4 線程同步 443
17.4.1 錯誤地訪問共享資源 444
17.4.2 同步語句塊 445
17.4.3 同步方法 446
17.4.4 死鎖 448
17.5 線程本地存儲 450
17.5.1 使用ThreadLocal類 450
17.5.2 ThreadLocal的實現原理 452
17.6 生產者與消費者 453
17.7 線程的終止 458
17.7.1 取消一個任務 458
17.7.2 在阻塞中中止 459
17.7.3 註意清理 461
17.8 線程池 462
17.9 總結 474
17.10 實戰練習 475
第18章 Java常用工具類 476
18.1 java.lang.Math類 476
18.2 隨機數 479
18.2.1 Math.random方法 479
18.2.2 Random類 480
18.2.3 ThreadLocalRandom類 481
18.3 大數字運算 482
18.3.1 BigInteger 482
18.3.2 BigDecimal 486
18.4 日期時間工具 491
18.4.1 Date類 492
18.4.2 DateFormat類 493
18.4.3 SimpleDateFormat類 495
18.4.4 Calendar類 497
18.5 Java 8新增的日期/時間API 499
18.5.1 新的日期/時間類 500
18.5.2 構造日期/時間對象 500
18.5.3 格式化和解析日期/時間
字符串 501
18.5.4 操作日歷字段 502
18.5.5 計算時間間隔 503
18.5.6 使用Instant計算某項操作
花費的時間 504
18.5.7 判斷閏年 504
18.5.8 與Date和Calendar的
相互轉換 505
18.6 Optional類 506
18.6.1 創建Optional類的實例 506
18.6.2 判斷Optional的值是否
存在 506
18.6.3 獲取Optional的值 507
18.6.4 過濾與映射 508
18.6.5 得到Stream對象 508
18.6.6 為什麽要使用Optional 509
18.6.7 OptionalInt、OptionalLong和OptionalDouble 512
18.7 Base64編解碼 512
18.8 Timer類 514
18.9 Runtime類與單例設計模式 516
18.10 總結 518
18.11 實戰練習 518
第19章 Java I/O操作 519
19.1 File類 519
19.1.1 分隔符 519
19.1.2 創建文件夾 520
19.1.3 文件操作 520
19.1.4 搜索目錄中的文件 521
19.1.5 移動文件 524
19.1.6 臨時文件 525
19.2 流式I/O 526
19.3 輸入輸出流 527
19.3.1 InputStream 527
19.3.2 OutputStream 528
19.3.3 字節數組輸入/輸出流 529
19.3.4 文件輸入/輸出流 530
19.3.5 過濾流 532
19.3.6 緩沖的輸入/輸出流 532
19.3.7 數據輸入/輸出流 534
19.3.8 管道流 535
19.3.9 復制文件 537
19.4 Java I/O庫的設計原則 537
19.5 Reader和Writer 538
19.6 InputStreamReader和OutputStreamWriter 540
19.7 字符集與中文亂碼問題 542
19.7.1 字符集 542
19.7.2 對亂碼產生過程的分析 547
19.7.3 Charset類 549
19.8 RandomAccessFile類 551
19.9 標準I/O 552
19.9.1 從標準輸入中讀取數據 553
19.9.2 Scanner 553
19.9.3 I/O重定向 556
19.10 對象序列化 557
19.10.1 使用對象流實現序列化 558
19.10.2 對象引用的序列化 560
19.10.3 序列化過濾器 564
19.10.4 定製序列化 566
19.10.5 替換對象 568
19.10.6 使用Externalizable接口
定製序列化 571
19.10.7 序列化版本 573
19.11 NIO 573
19.11.1 緩沖區(Buffer) 574
19.11.2 通道(Channel) 579
19.11.3 使用通道復制文件 581
19.11.4 視圖緩沖區 583
19.11.5 字節順序 585
19.11.6 直接和非直接緩沖區 586
19.11.7 分散和聚集 587
19.11.8 字符緩沖區的問題 590
19.11.9 內存映射文件 593
19.11.10 對文件加鎖 598
19.11.11 管道 599
19.12 Files類與Path接口 601
19.12.1 Path接口 601
19.12.2 讀寫文件 603
19.12.3 遍歷目錄 606
19.12.4 小結 608
19.13 異步文件通道 608
19.13.1 寫入數據 609
19.13.2 讀取數據 611
19.14 總結 613
19.15 實戰練習 613
第20章 Java並發編程 615
20.1 Callable和Future接口 615
20.2 新的任務執行框架 617
20.2.1 Executor接口 617
20.2.2 ExecutorService接口 617
20.2.3 Executors工具類 618
20.2.4 ThreadFactory 620
20.2.5 ScheduledExecutorService 621
20.2.6 批量執行任務 623
20.2.7 CompletionService接口 625
20.2.8 ThreadPoolExecutor類 628
20.3 鎖對象 631
20.3.1 Lock接口 631
20.3.2 重入互斥鎖 632
20.3.3 讀寫鎖 633
20.3.4 StampedLock 635
20.4 條件對象 639
20.5 同步工具類 642
20.5.1 CountDownLatch 642
20.5.2 CyclicBarrier 644
20.5.3 Semaphore 646
20.5.4 Exchanger 650
20.6 線程安全的集合 652
20.6.1 寫時拷貝 653
20.6.2 阻塞隊列 654
20.6.3 延遲隊列 657
20.6.4 傳輸隊列 660
20.6.5 ConcurrentHashMap 660
20.6.6 ConcurrentSkipListMap 662
20.7 Fork/Join框架 663
20.8 CompletableFuture 666
20.8.1 異步執行任務 666
20.8.2 構造異步任務鏈 667
20.8.3 結果轉換 668
20.8.4 組合異步任務 669
20.8.5 任務鏈完成時的結果處理和異常處理 670
20.9 原子操作 675
20.9.1 AtomicInteger類 676
20.9.2 LongAdder 679
20.10 變量句柄 680
20.11 總結 683
20.12 實戰練習 683
第21章 Eclipse開發工具 684
21.1 Eclipse簡介 684
21.2 下載並安裝 684
21.3 Eclipse開發環境介紹 686
21.4 配置Eclipse 690
21.4.1 配置JDK 690
21.4.2 配置字體 691
21.4.3 配置和使用快捷鍵 692
21.4.4 配置字符集 693
21.5 開發Java程序 693
21.6 調試代碼 696
21.7 JUnit單元測試 698
21.8 導入現有的Eclipse項目 702
21.9 總結 703
21.10 實戰練習 703
第22章 圖形界面編程 704
22.1 AWT 704
22.1.1 第一個AWT應用程序 705
22.1.2 關閉窗口 706
22.1.3 向窗口內添加組件 708
22.2 佈局管理器 709
22.2.1 BorderLayout 709
22.2.2 FlowLayout 711
22.2.3 GridLayout 713
22.2.4 CardLayout 714
22.2.5 GridBagLayout 714
22.2.6 組合多個佈局管理器 716
22.3 事件模型 718
22.3.1 按鈕點擊事件的處理 719
22.3.2 事件監聽器 720
22.3.3 觀察者模式 721
22.4 Swing 724
22.4.1 基本的框架窗口 724
22.4.2 添加文本域和菜單欄 725
22.4.3 菜單功能 727
22.4.4 彈出菜單 730
22.5 Swing與並發 731
22.6 使用WindowBuilder快速
開發圖形界面程序 733
22.6.1 安裝WindowBuilder 734
22.6.2 用戶登錄界面 735
22.6.3 註冊事件監聽器 739
22.7 總結 741
22.8 實戰練習 741
第23章 Java網絡編程 742
23.1 網絡基礎知識 742
23.1.1 電腦網絡 742
23.1.2 IP地址 743
23.1.3 協議 743
23.1.4 網絡的狀況 743
23.1.5 網絡異質性問題的解決 744
23.1.6 ISO/OSI七層參考模型 744
23.1.7 數據封裝 746
23.1.8 TCP/IP模型 747
23.1.9 埠 747
23.1.10 套接字(Socket) 748
23.1.11 客戶機/服務器模式 748
23.2 基於TCP的套接字編程 748
23.2.1 服務器程序 749
23.2.2 客戶端程序 751
23.2.3 多線程的服務器程序 752
23.2.4 套接字超時 753
23.3 基於UDP的套接字編程 754
23.3.1 接收端 755
23.3.2 發送端 756
23.3.3 獲取發送端的信息 757
23.4 非阻塞的套接字編程 757
23.4.1 SocketChannel 757
23.4.2 ServerSocketChannel 758
23.4.3 Selector 758
23.4.4 非阻塞的服務器程序 760
23.4.5 非阻塞的客戶端程序 763
23.5 URL和URLConnection 764
23.5.1 URL類 764
23.5.2 URLConnection類 765
23.5.3 一個實用的下載程序 765
23.6 HTTP Client API 768
23.6.1 HttpClient 769
23.6.2 HttpRequest 770
23.6.3 HttpResponse 772
23.6.4 異步發送多個請求 773
23.6.5 啟用HttpClient的日誌
記錄功能 774
23.7 總結 775
23.8 實戰練習 775
第24章 數據庫訪問 776
24.1 JDBC驅動程序的類型 776
24.1.1 JDBC-ODBC橋 777
24.1.2 部分本地API的Java
驅動程序 777
24.1.3 JDBC網絡純Java
驅動程序 778
24.1.4 本地協議的純Java
驅動程序 778
24.2 安裝數據庫 778
24.3 下載MySQL JDBC驅動 782
24.4 JDBC API 783
24.5 加載並註冊數據庫驅動 783
24.5.1 Driver接口 783
24.5.2 加載與註冊JDBC驅動 784
24.5.3 服務加載 786
24.6 建立到數據庫的連接 788
24.7 訪問數據庫 789
24.7.1 Statement 789
24.7.2 ResultSet 792
24.7.3 PreparedStatement 796
24.7.4 CallableStatement 798
24.7.5 元數據 799
24.8 事務處理 802
24.9 可滾動和可更新的結果集 806
24.9.1 可滾動的結果集 806
24.9.2 可更新的結果集 807
24.10 行集 808
24.10.1 行集的標準實現 808
24.10.2 行集的事件模型 809
24.10.3 CachedRowSet 810
24.11 JDBC數據源和連接池 811
24.12 總結 812
24.13 實戰練習 813
第25章 Java平臺模塊系統 814
25.1 Java平臺的模塊 814
25.2 模塊的物理結構 816
25.3 創建模塊 817
25.4 模塊依賴 818

25.5 導出包 819
25.6 可傳遞的模塊與靜態依賴 821
25.7 開放包 821
25.8 限定導出和開放 824
25.9 服務加載 824
25.10 未命名模塊 825
25.11 自動模塊 826
25.12 為什麽要引入模塊系統 827
25.13 總結 828
25.14 實戰練習 828