Java 經典入門指南

[加]布迪·克尼亞萬(Budi Kurniawan) 沈澤剛 譯

  • Java 經典入門指南-preview-1
  • Java 經典入門指南-preview-2
Java 經典入門指南-preview-1

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

相關主題

商品描述

本書基於新版的Java 11編寫,全面系統地介紹Java程序員必須掌握的核心基礎知識,
這些內容融合在三大主題中——Java語言基礎、面向對象編程以及Java核心類。
其中,Java語言基礎包括數據類型和運算符、控制結構、數組、類和對象、異常處理、枚舉和註解等;
面向對象包括封裝性、繼承性、多態性、接口與抽像類、泛型與集合、多線程與並發編程等;
Java核心類包括日期時間API、輸入/輸出、JavaFX圖形界面、Lambda表達式和Stream的使用、數據庫和網絡編程。
本書還介紹了安全性和Java Web編程基礎的相關知識。
本書是為專業級Java程序員打造的理想教程,
也可作為高等院校計算機相關專業“面向對象編程”和“Java語言程序設計”等課程的教學用書。

作者簡介

Budi Kurniawan

是Brainy Software的*級開發人員,曾為世界各地的多家機構擔任顧問。
他著有How Tomcat Works、Servlet and JSP: A Tutorial、Struts 2 Design and Programming等多部圖書。
他以清晰的寫作風格而聞名,他的寫作基於20年的軟件架構師和軟件開發經驗。
他的Java教程*近被德國斯圖加特HDM計算機科學教學團隊選中,作為大學的主要教材。

目錄大綱

目錄:
第 1章 新手起步 1
1.1 下載和安裝JDK 1
1.1.1 在Windows上安裝 1
1.1.2 在Linux上安裝 2
1.1.3 在macOS上安裝 3
1.1.4 設置系統環境變量 3
1.1.5 安裝測試 4
1.1.6 下載Java API文檔 4
1.2 第 一個Java程序 4
1.2.1 編寫Java程序 4
1.2.2 編譯Java程序 4
1.2.3 執行Java程序 5
1.3 Java編碼規範 5
1.4 集成開發環境 6
1.5 JShell 6
1.6 小結 7
習題 7

第 2章 語言基礎 8
2.1 ASCII和Unicode 8
2.2 分隔符 9
2.3 基本類型 10
2.4 變量 11
2.5 局部變量類型推斷 13
2.6 常量 13
2.7 字面值 14
2.7.1 整數字面值 14
2.7.2 浮點字面值 15
2.7.3 布爾字面值 16
2.7.4 字符字面值 16
2.8 基本類型轉換 17
2.8.1 加寬轉換 17
2.8.2 縮窄轉換 18
2.9 運算符 18
2.9.1 一元運算符 19
2.9.2 算術運算符 21
2.9.3 相等運算符 22
2.9.4 關係運算符 22
2.9.5 條件運算符 23
2.9.6 移位運算符 23
2.9.7 賦值運算符 24
2.9.8 整數按位運算符(& | ^) 24
2.9.9 邏輯運算符 25
2.9.10 運算符優先級 25
2.9.11 類型提升 26
2.10 註釋 27
2.11 小結 27
習題 27

第3章 語句 29
3.1 概述 29
3.2 if語句 30
3.3 while語句 32
3.4 do-while語句 33
3.5 for語句 34
3.6 break語句 37
3.7 continue語句 38
3.8 switch語句 39
3.9 小結 40
習題 40

第4章 對象和類 41
4.1 什麼是Java對象 41
4.2 Java類 42
4.2.1 字段 43
4.2.2 方法 43
4.2.3 main方法 44
4.2.4 構造方法 44
4.2.5 可變參數方法 45
4.2.6 UML類圖中的類成員 45
4.3 創建對象 46
4.4 null關鍵字 46
4.5 為對象分配內存 47
4.6 Java包 49
4.7 封裝與訪問控制 50
4.7.1 類訪問控制修飾符 50
4.7.2 類成員訪問控制修飾符 51
4.8 this關鍵字 54
4.9 使用其他類 54
4.10 final變量 56
4.11 靜態成員 56
4.12 靜態final變量 58
4.13 靜態導入 59
4.14 變量作用域 60
4.15 方法重載 60
4.16 靜態工廠方法 61
4.17 按值還是按引用傳遞 62
4.18 加載、鏈接和初始化 64
4.18.1 加載 64
4.18.2 鏈接 65
4.18.3 初始化 65
4.19 對象創建初始化 66
4.20 垃圾回收器 68
4.21 創建對象的其他方法 69
4.22 小結 69
習題 70

第5章 核心類 71
5.1 java.lang.Object 71
5.2 java.lang.String 72
5.2.1 比較兩個String對象 72
5.2.2 字符串字面值 73
5.2.3 字符轉義 74
5.2.4 switch中的String 74
5.2.5 String類的構造方法 75
5.2.6 String類的方法 75
5.3 java.lang.StringBuffer和java.lang.StringBuilder 78
5.3.1 StringBuilder類的構造方法 78
5.3.2 StringBuilder類的方法 79
5.4 基本類型包裝類 80
5.4.1 java.lang.Integer 80
5.4.2 java.lang.Boolean 80
5.4.3 java.lang.Character 81
5.5 java.lang.Class 82
5.6 java.lang.System 83
5.7 java.util.Scanner 86
5.8 小結 87
習題 87

第6章 數組 88
6.1 概述 88
6.2 迭代數組 90
6.3 java.util.Arrays類 90
6.4 修改數組大小 91
6.5 查找數組 92
6.6 將String數組傳遞給main 93
6.7 多維數組 94
6.8 小結 94
習題 95

第7章 繼承 96
7.1 概述 96
7.1.1 extends關鍵字 96
7.1.2 is-a關係 97
7.2 可訪問性 98
7.3 方法覆蓋 99
7.4 調用超類的構造方法 100
7.5 調用超類的隱藏成員 102
7.6 類型轉換 102
7.7 final類 103
7.8 instanceof運算符 103
7.9 小結 104
習題 104

第8章 錯誤處理 105
8.1 概述 105
8.2 捕獲異常 106
8.3 不帶catch的try 108
8.4 捕獲多個異常 108
8.5 try-with-resources語句 108
8.6 java.lang.Exception類 109
8.7 從方法拋出異常 110
8.8 用戶自定義異常 111
8.9 異常處理說明 112
8.10 小結 113
習題 113

第9章 處理數字 114
9.1 裝箱與拆箱 114
9.2 數字解析 114
9.3 數字格式化 115
9.4 用java.text.NumberFormat解析數字 116
9.5 java.lang.Math類 116
9.6 使用貨幣值 117
9.7 生成隨機數 118
9.8 小結 119
習題 119

第 10章 接口和抽像類 120
10.1 接口的概念 120
10.2 從技術角度看接口 121
10.2.1 接口中的字段 122
10.2.2 抽象方法 122
10.2.3 擴展接口 123
10.3 接口中的實現 123
10.3.1 默認方法 123
10.3.2 靜態方法 124
10.3.3 私有方法 124
10.4 基類 124
10.5 抽像類 125
10.6 抽像類說明 126
10.7 小結 127
習題 127

第 11章 多態 128
11.1 概述 128
11.2 多態實戰 130
11.3 多態與反射 131
11.4 小結 133
習題 133

第 12章 枚舉 134
12.1 概述 134
12.2 類中的枚舉 135
12.3 java.lang.Enum類 136
12.4 迭代枚舉值 136
12.5 在switch中使用枚舉 136
12.6 枚舉成員 137
12.7 小結 138
習題 138

第 13章 處理日期和時間 139
13.1 概述 139
13.2 Instant類 140
13.3 LocalDate 140
13.4 Period 142
13.5 LocalDateTime 144
13.6 時區 145
13.7 ZonedDateTime 146
13.8 Duration 147
13.9 格式化日期-時間 150
13.10 解析日期-時間 151
13.11 舊的日期和時間API 152
13.11.1 java.util.Date類 152
13.11.2 java.util.Calendar類 152
13.11.3 用DateFormat進行解析和格式化 153
13.12 小結 155
習題 156

第 14章 集合框架 157
14.1 集合框架概述 157
14.2 Collection接口 158
14.3 List和ArrayList 158
14.4 用Iterator和for迭代集合 160
14.5 Set和HashSet 161
14.6 Queue和LinkedList 162
14.7 集合轉換 163
14.8 Map和HashMap 163
14.9 對像比較和排序 164
14.9.1 使用java.lang.Comparable 165
14.9.2 使用Comparator 167
14.10 小結 171
習題 171

第 15章 泛型 172
15.1 沒有泛型的時代 172
15.2 泛型類型 173
15.3 使用沒有類型參數的泛型類型 175
15.4 使用“?”通配符 176
15.5 在方法中使用有界通配符 177
15.6 泛型方法 178
15.7 編寫泛型類型 179
15.8 小結 180
習題 180

第 16章 輸入/輸出 181
16.1 File類 181
16.1.1 File類的構造方法 182
16.1.2 File類的方法 183
16.2 文件系統和路徑 184
16.3 文件和目錄的處理及操作 185
16.3.1 創建和刪除文件及目錄 185
16.3.2 檢索目錄中的對象 186
16.3.3 複製和移動文件 186
16.3.4 讀取和寫入文件 187
16.4 輸入流/輸出流 189
16.5 讀二進制數據 189
16.6 寫入二進制數據 193
16.7 寫入文本(字符) 195
16.7.1 Writer 196
16.7.2 OutputStreamWriter 196
16.7.3 PrintWriter 198
16.8 讀取文本(字符) 199
16.8.1 Reader 200
16.8.2 InputStreamReader 200
16.8.3 BufferedReader 201
16.9 用PrintStream記錄日誌 202
16.10 隨機訪問文件 203
16.11 對象序列化 207
16.12 小結 209
習題 209

第 17章 註解 210
17.1 概述 210
17.1.1 註解和註解類型 210
17.1.2 註解語法 211
17.1.3 Annotation接口 211
17.2 標準註解 212
17.2.1 Override 212
17.2.2 Deprecated 213
17.2.3 SuppressWarnings 213
17.3 一般註解 214
17.4 標準元註解 215
17.4.1 Documented 215
17.4.2 Inherited 215
17.4.3 Retention 216
17.4.4 Target 216
17.5 自定義註解類型 216
17.5.1 編寫自定義註解類型 217
17.5.2 使用自定義註解類型 217
17.5.3 用反射查詢註解 217
17.6 小結 218
習題 218

第 18章 嵌套類和內部類 219
18.1 嵌套類的概述 219
18.2 靜態嵌套類 220
18.3 成員內部類 221
18.4 局部內部類 223
18.5 匿名內部類 224
18.6 嵌套類和內部類的幕後 225
18.7 小結 227
習題 227

第 19章 Lambda表達式 228
19.1 為何使用Lambda表達式 228
19.2 函數式接口 229
19.3 Lambda表達式語法 229
19.4 預定義函數式接口 230
19.4.1 Function、BiFunction及變體 230
19.4.2 Predicate 232
19.4.3 Supplier 233
19.4.4 Consumer 233
19.5 方法引用 235
19.5.1 引用靜態方法 235
19.5.2 引用對象可用的實例方法 238
19.5.3 引用對像不可用的實例方法 238
19.5.4 引用構造方法 240
19.6 Optional與類似的類 241
19.7 小結 246
習題 246

第 20章 使用Stream 247
20.1 概述 247
20.2 創建和獲得流 248
20.3 連接流 249
20.4 過濾 250
20.5 映射 251
20.6 歸約 252
20.7 可變歸約​​ 256
20.8 並行流 260
20.9 小結 261
習題 261

第 21章 Java數據庫連接 262
21.1 JDBC簡介 262
21.2 數據訪問的5個步驟 263
21.2.1 加載JDBC驅動程序 263
21.2.2 獲得數據庫連接 264
21.2.3 創建Statement對象 265
21.2.4 創建ResultSet對象 266
21.2.5 關閉JDBC對象 266
21.3 綜合應用 267
21.4 使用DAO模式 269
21.5 讀取元數據 275
21.6 小結 278
習題 278

第 22章 JavaFX入門 279
22.1 概述 279
22.2 第 一個JavaFX程序 279
22.3 Application、Stage和Scene類 280
22.3.1 Application類 281
22.3.2 Stage類 281
22.3.3 Scene類 281
22.4 UI組件 282
22.5 控件 282
22.6 區域 285
22.7 事件驅動編程 287
22.7.1 Java事件模型 288
22.7.2 JavaFX事件 288
22.8 使用CSS樣式 290
22.9 小結 293
習題 293

第 23章 JavaFX與FXML 294
23.1 概述 294
23.2 一個基於FXML的簡單應用 295
23.3 FXML的事件處理 298
23.4 小結 302
習題 302

第 24章 Java線程 303
24.1 Java線程簡介 303
24.2 創建線程 303
24.2.1 擴展Thread類 304
24.2.2 實現Runnable接口 305
24.3 使用多線程 306
24.4 線程優先級 308
24.5 停止線程 309
24.6 同步 312
24.6.1 線程干擾 312
24.6.2 塊同步 314
24.7 可見性 315
24.8 join方法 317
24.9 線程協調 317
24.10 使用Timer 321
24.11 小結 324
習題 324

第 25章 並發工具 325
25.1 原子變量 325
25.2 Executor和ExecutorService 326
25.3 命名線程 331
25.4 Callable和Future 333
25.5 JavaFX任務 336
25.6 鎖 339
25.7 小結 340
習題 340

第 26章 Java網絡 341
26.1 網絡概述 341
26.2 超文本傳輸協議(HTTP) 341
26.2.1 HTTP請求 342
26.2.2 HTTP響應 343
26.3 HttpClient API 343
26.4 java.net.Socket 346
26.5 java.net.ServerSocket 348
26.6 創建一個Web服務器 349
26.6.1 HttpServer類 349
26.6.2 Request類 352
26.6.3 Response類 354
26.6.4 運行應用程序 356
26.7 小結 357
習題 357

第 27章 安全 358
27.1 Java安全概述 358
27.2 使用安全管理器 359
27.3 策略文件 359
27.3.1 keystore 361
27.3.2 grant 361
27.4 權限 362
27.4.1 java.io.FilePermission 362
27.4.2 java.security.BasicPermission 363
27.4.3 java.util.PropertyPermission 363
27.4.4 java.net.SocketPermission 363
27.4.5 java.security.UnresolvedPermission 363
27.4.6 java.security.RuntimePermission 363
27.4.7 java.net.NetPermission 364
27.4.8 java.lang.reflect.ReflectPermission 364
27.4.9 java.io.SerializablePermission 364
27.4.10 java.security.SecurityPermission 364
27.4.11 java.security.AllPermission 365
27.4.12 javax.security.auth.AuthPermission 365
27.5 安全編程 365
27.6 加密概述 366
27.6.1 加密/解密 367
27.6.2 身份驗證 367
27.6.3 數據完整性 369
27.6.4 SSL的工作原理 369
27.7 創建證書 370
27.8 KeyTool程序 370
27.8.1 生成配對的密鑰 371
27.8.2 進行認證 372
27.8.3 將證書導入密鑰庫 372
27.8.4 從密鑰庫導出證書 372
27.8.5 列出密鑰庫條目 373
27.9 JarSigner工具 373
27.9.1 簽名jar文件 373
27.9.2 驗證已簽名的jar文件 373
27.10 Java加密API 374
27.11 小結 374
習題 374

第 28章 Java Web應用程序 375
28.1 Servlet應用程序架構 375
28.2 Servlet API概述 376
28.3 Servlet 377
28.4 編寫基本的Servlet應用程序 378
28.4.1 安裝Tomcat 378
28.4.2 編寫和編譯Servlet類 378
28.4.3 應用程序目錄結構 380
28.4.4 訪問Servlet 380
28.5 ServletRequest 381
28.6 ServletResponse 381
28.7 ServletConfig 382
28.8 ServletContext 384
28.9 GenericServlet 384
28.10 HTTP Servlet 386
28.10.1 HttpServlet 386
28.10.2 HttpServletRequest 388
28.10.3 HttpServletResponse 388
28.10.4 編寫一個HTTP Servlet 388
28.11 使用部署描述符 392
28.12 小結 395
習題 395

第 29章 JavaServer Pages 396
29.1 JSP概述 396
29.2 jspInit、jspDestroy及其他方法 398
29.3 隱含對象 398
29.4 JSP語法元素 400
29.4.1 指令 400
29.4.2 腳本元素 402
29.5 處理錯誤 404
29.6 小結 404
習題 404

第30章 模塊 405
30.1 概述 405
30.2 Java標準模塊 406
30.3 創建模塊應用程序 406
30.4 創建自包含的應用程序包 407
30.5 創建安裝程序 409
30.6 小結 410
習題 410