本書分為四大部分:第1~6章,初步認識Java的基礎(chǔ)語法及主流編程工具的使用;第7~11章,詳解Java面向?qū)ο缶幊陶Z言的語法、核心編程思想、基礎(chǔ)API等;第12~17章,介紹使用Java進行高級應(yīng)用開發(fā)所需的API和基礎(chǔ)原理;第18、19章,介紹了Java8~Java17版本的新特性。本書核心內(nèi)容基于目前企業(yè)應(yīng)用最主流的Java8進行講解,讀者可以直接進階到最近的長期支持版本Java17。本書遵循深入淺出的原則編寫,既有生動活潑的生活化案例講解,又有干貨滿滿的源碼級分析,可以讓讀者輕松領(lǐng)會Java技術(shù)精髓,快速掌握Java開發(fā)技能。本書為每一個知識點的講解都配備了案例,代碼量龐大,如果讀者跟隨本書案例練習(xí)會大大提升自身的代碼編寫能力。本書配套名師視頻教程,讀者在學(xué)習(xí)過程中可結(jié)合視頻學(xué)習(xí),讓你的Java進階之路事半功倍,為后續(xù)的技術(shù)提升打下堅實的基礎(chǔ)。 本書適合初學(xué)Java編程語言的自學(xué)者、編程愛好者學(xué)習(xí),還適合各類院校計算機相關(guān)專業(yè)的師生作為教材或教輔資料使用,是Java編程語言入門的必備圖書。
尚硅谷教育是一家專業(yè)的IT教育培訓(xùn)機構(gòu),開設(shè)了JavaEE、大數(shù)據(jù)、HTML5前端等多門學(xué)科,在互聯(lián)網(wǎng)上發(fā)布的JavaEE、大數(shù)據(jù)、HTML5前端、區(qū)塊鏈、C語言、Python等技術(shù)視頻教程廣受贊譽。
第1章 Java語言概述 1
1.1 Java語言的發(fā)展簡史 1
1.2 Java語言的發(fā)展前景 3
1.3 Java語言的技術(shù)體系平臺 4
1.4 Java語言的特點 4
1.5 Java語言的核心機制之JVM 6
1.6 Java語言的開發(fā)環(huán)境和運行環(huán)境 7
1.7 本章小結(jié) 8
第2章 第一個Java程序:HelloWorld 9
2.1 開發(fā)的前期準備 9
2.1.1 JDK的下載 9
2.1.2 JDK的安裝 10
2.1.3 JDK的目錄介紹 12
2.1.4 配置環(huán)境變量 12
2.2 第一個Java程序 17
2.2.1 Java程序開發(fā)步驟 17
2.2.2 第一個Java程序的剖析 19
2.2.3 幾個初學(xué)者易犯的錯誤 19
2.3 Java注釋 23
2.3.1 單行注釋 23
2.3.2 多行注釋 23
2.3.3 文檔注釋 24
2.4 文本編輯器的介紹 25
2.4.1 下載與安裝 25
2.4.2 語言環(huán)境設(shè)置 25
2.4.3 開發(fā)Java程序 26
2.4.4 字符編碼設(shè)置 27
2.4.5 默認開發(fā)語言設(shè)置 29
2.5 案例:打印個人信息 30
2.6 本章小結(jié) 30
第3章 基礎(chǔ)語法 31
3.1 關(guān)鍵字和保留字 31
3.1.1 關(guān)鍵字 32
3.1.2 保留字 32
3.1.3 特殊值 32
3.2 標(biāo)識符 33
3.2.1 標(biāo)識符的命名規(guī)則 33
3.2.2 標(biāo)識符的命名規(guī)范 33
3.2.3 案例:標(biāo)識符辨析 33
3.3 變量 34
3.3.1 變量的聲明與使用 34
3.3.2 變量的注意事項 36
3.4 數(shù)據(jù)類型 37
3.4.1 計算機數(shù)據(jù)存儲方式 38
3.4.2 整型 39
3.4.3 浮點型 40
3.4.4 字符型 41
3.4.5 布爾型 43
3.4.6 案例:用變量保存?zhèn)人信息 43
3.5 數(shù)據(jù)類型的轉(zhuǎn)換 44
3.5.1 自動類型轉(zhuǎn)換 44
3.5.2 強制類型轉(zhuǎn)換 45
3.5.3 案例:基礎(chǔ)練習(xí) 46
3.6 運算符和標(biāo)點符號 48
3.6.1 算術(shù)運算符 48
3.6.2 賦值運算符 53
3.6.3 比較運算符 54
3.6.4 邏輯運算符 55
3.6.5 位運算符 56
3.6.6 條件運算符 61
3.6.7 運算符的優(yōu)先級 61
3.6.8 標(biāo)點符號 62
3.7 本章案例 62
3.7.1 案例:實現(xiàn)算術(shù)運算 62
3.7.2 案例:求一個三位數(shù)字各個
位數(shù)上的和 63
3.7.3 案例:交換兩個變量的值 63
3.7.4 案例:判斷某個年份是否是
閏年 64
3.7.5 案例:將小寫字母轉(zhuǎn)為對應(yīng)
的大寫字母 64
3.8 本章小結(jié) 65
第4章 流程控制語句結(jié)構(gòu) 66
4.1 順序結(jié)構(gòu) 66
4.1.1 順序結(jié)構(gòu)的特點 66
4.1.2 輸出語句 67
4.1.3 輸入語句 67
4.1.4 案例:從鍵盤中輸入個人
信息 69
4.2 分支結(jié)構(gòu)之if…else 70
4.2.1 單分支條件判斷if 70
4.2.2 案例:2月份的總天數(shù) 71
4.2.3 雙分支條件判斷if…else 71
4.2.4 案例:平年、閏年 72
4.2.5 多分支條件判斷if…else if 72
4.2.6 案例:征婚 74
4.2.7 案例:解方程 75
4.3 分支結(jié)構(gòu)之switch-case 76
4.3.1 分支結(jié)構(gòu)switch-case 76
4.3.2 分支結(jié)構(gòu)與條件判斷的區(qū)別 79
4.3.3 案例:判斷這一天是當(dāng)年的
第幾天 80
4.4 循環(huán)結(jié)構(gòu) 81
4.4.1 while語句 82
4.4.2 案例:趣味折紙 83
4.4.3 do…while語句 83
4.4.4 案例:猜數(shù)字 84
4.4.5 for語句 85
4.4.6 案例:水仙花數(shù) 86
4.4.7 三種循環(huán)語句的對比 87
4.4.8 嵌套循環(huán) 87
4.4.9 案例:九九乘法表 88
4.4.10 案例:完數(shù) 89
4.5 跳轉(zhuǎn)語句 89
4.5.1 break語句 90
4.5.2 continue語句 91
4.5.3 return語句 92
4.5.4 案例:素數(shù) 92
4.6 綜合案例 93
4.7 本章小結(jié) 95
第5章 數(shù)組 96
5.1 數(shù)組概述 96
5.2 一維數(shù)組 99
5.2.1 一維數(shù)組的聲明 99
5.2.2 一維數(shù)組的初始化 99
5.2.3 數(shù)組元素默認值 101
5.2.4 一維數(shù)組的遍歷 102
5.2.5 一維數(shù)組內(nèi)存分析 103
5.2.6 案例:遍歷英文字母大小寫 103
5.2.7 案例:打魚還是曬網(wǎng) 104
5.3 數(shù)組的算法 105
5.3.1 元素特征值統(tǒng)計 105
5.3.2 最值查找 106
5.3.3 順序查找 106
5.3.4 二分查找 108
5.3.5 冒泡排序 110
5.3.6 快速排序 111
5.3.7 數(shù)組的復(fù)制 114
5.3.8 元素的反轉(zhuǎn) 116
5.4 動態(tài)數(shù)組的實現(xiàn) 118
5.4.1 數(shù)組元素的增加 118
5.4.2 數(shù)組元素的刪除 120
5.5 多維數(shù)組 122
5.5.1 多維數(shù)組的聲明 123
5.5.2 多維數(shù)組的初始化 123
5.5.3 案例:楊輝三角 125
5.5.4 案例:矩陣轉(zhuǎn)置 126
5.6 本章小結(jié) 127
第6章 開發(fā)工具IntelliJ IDEA 128
6.1 IntelliJ IDEA概述 128
6.2 下載與安裝 129
6.2.1 下載 129
6.2.2 安裝 130
6.3 初始化設(shè)置 133
6.4 快速創(chuàng)建并運行Java工程 134
6.5 詳細設(shè)置 137
6.5.1 字體大小設(shè)置 137
6.5.2 字符編碼設(shè)置 138
6.5.3 大小寫不敏感設(shè)置 138
6.5.4 自動導(dǎo)包 139
6.5.5 啟動退出設(shè)置 140
6.5.6 自動更新 141
6.6 快速開發(fā) 141
6.6.1 代碼模板 141
6.6.2 快捷鍵 142
6.7 多模塊的IDEA工程 144
6.8 本章小結(jié) 148
第7章 面向?qū)ο缶幊袒A(chǔ) 149
7.1 面向?qū)ο笈c面向過程 149
7.2 類與對象 150
7.2.1 類與對象的關(guān)系 150
7.2.2 類的聲明 150
7.2.3 對象的創(chuàng)建 152
7.3 類的成員之成員變量 153
7.3.1 成員變量的聲明 153
7.3.2 成員變量的訪問 154
7.3.3 成員變量默認值 155
7.3.4 對象的內(nèi)存分析 156
7.3.5 成員變量與局部變量的區(qū)別 158
7.3.6 案例:商品類與對象 158
7.3.7 案例:銀行賬戶類與對象 159
7.4 類的成員之方法 160
7.4.1 方法的聲明 160
7.4.2 方法的調(diào)用 162
7.4.3 方法的傳參機制 163
7.4.4 案例:圓類方法設(shè)計與調(diào)用 167
7.4.5 案例:數(shù)組工具類方法設(shè)計
與調(diào)用 168
7.5 方法的重載 171
7.5.1 重載方法的聲明和調(diào)用 171
7.5.2 案例:求三角形面積 173
7.6 特殊參數(shù) 174
7.6.1 命令行參數(shù) 174
7.6.2 可變參數(shù) 176
7.6.3 案例:n個字符串拼接 177
7.7 方法的遞歸調(diào)用 178
7.7.1 遞歸調(diào)用 178
7.7.2 案例:猴子吃桃 179
7.7.3 案例:走臺階 180
7.8 對象數(shù)組的使用 181
7.8.1 對象數(shù)組 181
7.8.2 對象數(shù)組的內(nèi)存分析 182
7.8.3 案例:員工信息管理 183
7.9 本章小結(jié) 184
第8章 面向?qū)ο缶幊踢M階 185
8.1 類的成員之構(gòu)造器 185
8.1.1 構(gòu)造器的聲明 185
8.1.2 構(gòu)造器的使用 186
8.1.3 案例:矩形類構(gòu)造器的設(shè)計 187
8.2 面向?qū)ο蟮幕咎卣髦庋b性 188
8.2.1 封裝的體現(xiàn) 188
8.2.2 訪問權(quán)限修飾符 189
8.2.3 案例:矩形類的封裝 191
8.3 this關(guān)鍵字 192
8.3.1 this關(guān)鍵字的使用場景 193
8.3.2 案例:矩形類代碼的改進 195
8.3.3 案例:銀行賬戶類的改進 196
8.3.4 什么是JavaBean 198
8.4 包的使用 199
8.4.1 包的聲明 199
8.4.2 使用其他包的類 201
8.4.3 常用包介紹 202
8.4.4 案例:員工信息管理 203
8.5 面向?qū)ο蟮幕咎卣髦^承性 205
8.5.1 為什么需要繼承 206
8.5.2 如何實現(xiàn)類的繼承 207
8.5.3 類繼承性的特點 207
8.5.4 方法的重寫 213
8.5.5 super關(guān)鍵字 214
8.5.6 案例:員工和學(xué)生信息管理 216
8.6 面向?qū)ο蠡咎卣髦鄳B(tài)性 218
8.6.1 對象的多態(tài)性表現(xiàn) 218
8.6.2 多態(tài)性的應(yīng)用 220
8.6.3 向上轉(zhuǎn)型與向下轉(zhuǎn)型 222
8.6.4 instanceof關(guān)鍵字 223
8.6.5 案例:圖形對象管理 224
8.6.6 企業(yè)面試題 228
8.7 類的成員之代碼塊 228
8.7.1 代碼塊的語法 229
8.7.2 類的初始化 229
8.7.3 案例:類初始化 230
8.7.4 對象的初始化 232
8.7.5 案例:對象初始化 234
8.7.6 企業(yè)面試題 236
8.8 本章小結(jié) 237
第9章 面向?qū)ο蟾呒壘幊?238
9.1 final關(guān)鍵字 238
9.2 native關(guān)鍵字 240
9.3 abstract關(guān)鍵字 241
9.3.1 抽象方法 241
9.3.2 抽象類 241
9.3.3 案例:模板設(shè)計模式 244
9.3.4 案例:員工工資系統(tǒng) 246
9.4 接口 249
9.4.1 接口的好處 249
9.4.2 接口的聲明 250
9.4.3 接口的擴展與實現(xiàn) 251
9.4.4 Java 8對接口的改進 255
9.4.5 案例:排序接口Sortable 258
9.5 內(nèi)部類 261
9.5.1 成員內(nèi)部類 261
9.5.2 案例:汽車與發(fā)動機 264
9.5.3 局部內(nèi)部類 265
9.5.4 匿名內(nèi)部類 266
9.5.5 案例:排序接口Comparator 268
9.6 枚舉 270
9.6.1 使用class定義枚舉類 270
9.6.2 使用enum定義枚舉類 271
9.6.3 案例:星期枚舉類 273
9.7 注解 274
9.7.1 注解的使用 274
9.7.2 元注解 276
9.7.3 自定義注解 277
9.7.4 注解的新特性 278
9.8 案例:不可擴容與可擴容數(shù)組容器 280
9.9 本章小結(jié) 283
第10章 異常和異常處理 284
10.1 異常體系結(jié)構(gòu) 284
10.1.1 什么是異常 284
10.1.2 異常的分類 284
10.1.3 常見的異常和錯誤類型 286
10.1.4 異常信息的查看 291
10.2 異常處理 292
10.2.1 try-catch-finally 292
10.2.2 案例:數(shù)組元素的查找 296
10.2.3 關(guān)鍵字:throws 298
10.2.4 案例:倒計時幾秒 300
10.2.5 關(guān)鍵字:throw 301
10.2.6 案例:取款和存款異常 303
10.2.7 Java 7對異常處理的改進 305
10.3 異常類型的擴展 306
10.3.1 自定義異常類型 306
10.3.2 案例:登錄異常 307
10.4 本章小結(jié) 308
第11章 常用類 309
11.1 Object類 309
11.1.1 toString方法 310
11.1.2 equals方法 311
11.1.3 hashCode方法 314
11.1.4 getClass方法 316
11.1.5 clone方法 317
11.1.6 finalize方法 318
11.2 包裝類 319
11.2.1 數(shù)值類型 319
11.2.2 Character類型 321
11.2.3 Boolean類型 322
11.2.4 裝箱與拆箱 322
11.2.5 案例:員工信息管理 323
11.2.6 案例:計算兩個整數(shù)的和 325
11.2.7 包裝類的緩存對象 325
11.3 String類 326
11.3.1 字符串的特點 326
11.3.2 字符串對象的內(nèi)存分析 328
11.3.3 案例:企業(yè)面試題 329
11.3.4 String類的常見方法 331
11.3.5 案例:String算法考查 334
11.4 可變字符序列 336
11.4.1 可變字符序列的常用方法 336
11.4.2 字符串與可變字符序列的
區(qū)別 338
11.4.3 案例:字符串指定部分反轉(zhuǎn) 340
11.5 Arrays類 341
11.5.1 toString方法:轉(zhuǎn)換字符串 341
11.5.2 sort方法:自然排序 342
11.5.3 sort方法:定制排序 343
11.5.4 binarySearch方法:查找 345
11.5.5 copyOf方法:數(shù)組復(fù)制 345
11.5.6 equals方法:判斷數(shù)組的
元素是否相等 345
11.5.7 案例:左奇右偶 346
11.5.8 案例:動態(tài)數(shù)組 347
11.6 數(shù)學(xué)相關(guān)類 351
11.6.1 Math類 351
11.6.2 BigInteger類 352
11.6.3 BigDecimal類 353
11.6.4 Random類 353
11.6.5 案例:企業(yè)面試題 354
11.7 日期類 355
11.7.1 第一代日期類 355
11.7.2 第二代日期類 357
11.7.3 第三代日期類 357
11.8 本章小結(jié) 361
第12章 集合 362
12.1 集合概述 362
12.1.1 數(shù)組回顧 362
12.1.2 集合框架集 363
12.2 Collection集合 364
12.2.1 Collection集合的方法 364
12.2.2 案例:增加和刪除元素 365
12.2.3 foreach循環(huán)遍歷 367
12.2.4 Iterator迭代器遍歷 368
12.2.5 集合元素的刪除 370
12.2.6 案例:員工信息管理 371
12.3 List集合 373
12.3.1 List接口的方法 373
12.3.2 案例:元素的增刪改查 374
12.3.3 List接口的實現(xiàn)類 375
12.3.4 List集合的遍歷 379
12.3.5 案例:企業(yè)面試題 380
12.4 Set集合 382
12.4.1 HashSet和LinkedHashSet 382
12.4.2 案例:員工信息管理 382
12.4.3 TreeSet 384
12.4.4 案例:企業(yè)面試題 387
12.5 Map集合 388
12.5.1 Map接口的方法 388
12.5.2 Map集合的遍歷 389
12.5.3 Map接口的實現(xiàn)類 390
12.5.4 案例:企業(yè)面試題 392
12.6 深入源碼分析 394
12.6.1 Set的源碼分析 394
12.6.2 Iterator的源碼分析 395
12.6.3 ArrayList的源碼分析 395
12.6.4 LinkedList的源碼分析 396
12.6.5 HashMap的源碼分析 401
12.6.6 modCount變量 411
12.7 本章小結(jié) 411
第13章 泛型 412
13.1 泛型的概念 412
13.1.1 無泛型帶來的問題 412
13.1.2 泛型的引入 413
13.2 泛型類或泛型接口 415
13.2.1 泛型類或接口的聲明 416
13.2.2 泛型類或接口的使用 417
13.2.3 延續(xù)父類或接口的泛型 419
13.2.4 設(shè)定泛型的上限 419
13.2.5 案例:矩形對象管理 421
13.2.6 案例:員工信息管理 422
13.2.7 案例:隨機驗證碼 423
13.3 泛型方法 424
13.3.1 泛型方法的聲明 424
13.3.2 設(shè)定泛型形參的上限 426
13.3.3 案例:數(shù)組工具類 427
13.4 類型通配符 429
13.4.1 類型通配符的使用 429
13.4.2 類型通配符的上限 430
13.4.3 類型通配符的下限 431
13.4.4 泛型方法與類型通配符 432
13.5 泛型擦除 435
13.6 泛型嵌套 436
13.7 Collections工具類 438
13.8 案例:企業(yè)面試題 439
13.9 本章小結(jié) 440
第14章 IO流 441
14.1 File類 441
14.1.1 獲取文件或目錄信息 441
14.1.2 操作文件 443
14.1.3 操作目錄 445
14.1.4 案例:遞歸列出目錄的
下一級 447
14.1.5 案例:遞歸列出目錄下的
所有Java源文件 448
14.1.6 案例:遞歸刪除非空目錄 449
14.1.7 案例:獲取指定目錄的
總大小 450
14.2 IO流的分類和設(shè)計 451
14.2.1 IO流類的體系結(jié)構(gòu) 451
14.2.2 常見IO流 452
14.2.3 抽象基類的常用方法 452
14.3 案例演示 454
14.3.1 輸出純文本數(shù)據(jù) 454
14.3.2 讀取純文本數(shù)據(jù) 455
14.3.3 按行讀取 456
14.3.4 復(fù)制文件基本版 456
14.3.5 復(fù)制文件提升效率版 457
14.3.6 讀寫純文本數(shù)據(jù)的同時進行
編碼和解碼 459
14.3.7 操作Java各種數(shù)據(jù)類型的
數(shù)據(jù) 461
14.3.8 保存對象 462
14.3.9 按行輸出文本內(nèi)容 465
14.3.10 復(fù)制或剪切整個目錄 466
14.3.11 IO流使用步驟小結(jié) 467
14.4 System類與IO流 468
14.4.1 System類中的IO流 469
14.4.2 Scanner類與IO流 470
14.5 IO流的關(guān)閉問題 472
14.5.1 正確關(guān)閉IO流 472
14.5.2 新try…catch結(jié)構(gòu) 474
14.6 本章小結(jié) 476
第15章 多線程 477
15.1 線程概述 477
15.1.1 進程 478
15.1.2 線程 478
15.2 線程的創(chuàng)建和啟動 479
15.2.1 繼承Thread類 479
15.2.2 實現(xiàn)Runnable接口 481
15.2.3 二者的區(qū)別 482
15.3 線程的生命周期 483
15.4 Thread類的方法 486
15.4.1 獲取和設(shè)置線程信息 486
15.4.2 線程的控制 488
15.4.3 案例:倒計時 488
15.4.4 案例:線程讓步 489
15.4.5 案例:龜兔賽跑 489
15.4.6 案例:守護線程 491
15.4.7 案例:停止線程 492
15.5 線程同步 494
15.5.1 線程安全問題 494
15.5.2 同步代碼塊 496
15.5.3 同步方法 498
15.5.4 釋放鎖與否的操作 500
15.5.5 死鎖 500
15.6 等待喚醒機制 502
15.6.1 案例:初級快餐店 502
15.6.2 案例:快餐店升級 504
15.6.3 案例:交替打印數(shù)字 507
15.7 單例設(shè)計模式 508
15.7.1 餓漢式 508
15.7.2 懶漢式 510
15.8 本章小結(jié) 512
第16章 網(wǎng)絡(luò)編程 513
16.1 網(wǎng)絡(luò)基礎(chǔ)知識 513
16.1.1 網(wǎng)絡(luò)的分類 513
16.1.2 網(wǎng)絡(luò)協(xié)議 514
16.1.3 IP地址 516
16.1.4 端口號 518
16.1.5 URL訪問互聯(lián)網(wǎng)資源 518
16.2 TCP Socket網(wǎng)絡(luò)編程 521
16.2.1 Socket介紹 522
16.2.2 基于TCP的網(wǎng)絡(luò)通信程序
結(jié)構(gòu) 523
16.2.3 案例:一個客戶端與服務(wù)器
端的單次通信 524
16.2.4 案例:多個客戶端與服務(wù)器
端的多次通信 526
16.2.5 案例:多個客戶端上傳文件 529
16.2.6 案例:多個客戶端群聊 532
16.3 UDP Socket網(wǎng)絡(luò)編程 538
16.3.1 基于UDP的網(wǎng)絡(luò)編程 538
16.3.2 案例:用UDP發(fā)送消息 539
16.3.3 MulticastSocket多點廣播 540
16.3.4 案例:基于MulticastSocket
的群聊 541
16.4 本章小結(jié) 543
第17章 反射 544
17.1 類的加載、鏈接和初始化 544
17.1.1 類的加載 544
17.1.2 類的鏈接 544
17.1.3 類的初始化 545
17.2 類加載器 548
17.2.1 四種類加載器 549
17.2.2 雙親委托模型 549
17.2.3 自定義類加載器 550
17.2.4 加載資源文件 552
17.3 反射的根源 553
17.3.1 Class類剖析 553
17.3.2 獲取類信息 555
17.4 反射的應(yīng)用 562
17.4.1 動態(tài)創(chuàng)建對象 562
17.4.2 動態(tài)操作屬性 563
17.4.3 動態(tài)調(diào)用方法 564
17.4.4 動態(tài)操作數(shù)組 565
17.5 代理設(shè)計模式 566
17.5.1 靜態(tài)代理模式 566
17.5.2 動態(tài)代理模式 568
17.6 本章小結(jié) 571
第18章 Lambda表達式與Stream API 572
18.1 Lambda表達式 573
18.1.1 Lambda表達式語法 573
18.1.2 案例:實現(xiàn)Comparator接口
574
18.1.3 類型推斷 574
18.1.4 Lambda表達式的簡化 575
18.2 函數(shù)式接口 575
18.2.1 函數(shù)式接口的概念 575
18.2.2 案例:消費型接口 577
18.2.3 案例:斷定型接口 577
18.2.4 案例:功能型接口 578
18.2.5 案例:員工信息管理 578
18.3 Lambda表達式再簡化 580
18.3.1 方法引用 580
18.3.2 構(gòu)造器引用 582
18.3.3 數(shù)組構(gòu)造引用 583
18.4 強大的Stream API 584
18.4.1 創(chuàng)建Stream對象 585
18.4.2 Stream中間操作 587
18.4.3 終止Stream操作 591
18.5 本章小結(jié) 593
第19章 Java 9~Java 17新特性 594
19.1 最新幾個Java版本概述 595
19.1.1 新特性簡介 595
19.1.2 版本更新說明 597
19.2 語法新特性 597
19.2.1 接口中允許私有方法 599
19.2.2 鉆石操作符與匿名內(nèi)部類
結(jié)合 600
19.2.3 try語法改進 600
19.2.4 局部變量類型推斷 601
19.2.5 switch語句 603
19.2.6 文本塊 607
19.2.7 instanceof支持模式匹配 609
19.2.8 record 610
19.2.9 NullPointerException 612
19.2.10 密封類 613
19.2.11 隱藏類 613
19.3 API改進 614
19.3.1 String類 614
19.3.2 集合相關(guān)類 615
19.3.3 Stream API 617
19.3.4 Files及IO流 618
19.3.5 Optional類 619
19.3.6 支持壓縮數(shù)字格式化 621
19.3.7 支持日期周期格式化 621
19.3.8 @Deprecated注解 622
19.4 其他新特性 622
19.4.1 模塊化 622
19.4.2 jshell命令 625
19.4.3 垃圾回收器 627
19.4.4 更簡化的編譯運行程序 630
19.5 本章小結(jié)