3dwoo大學簡體電腦書店
寫給大忙人的Java SE 9核心技術
( 簡體 字)
作者:楊謙等類別:1. -> 程式設計 -> JAVA -> Java
出版社:電子工業出版社寫給大忙人的Java SE 9核心技術 3dWoo書號: 50178
詢問書籍請說出此書號!
有庫存
NT售價: 640
出版日:10/1/2018
頁數:552
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 字 )
ISBN:9787121342783 加入購物車加到我的最愛 (請先登入會員)
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社)
第1章 基本的編程結構 1
1.1 第一個程序 2
1.1.1 "Hello,World"程序解析 2
1.1.2 編譯與運行Java程序 3
1.1.3 方法調用 5
1.1.4 JShell 7
1.2 基本類型 11
1.2.1 有符號整型 11
1.2.2 浮點類型 12
1.2.3 char型 13
1.2.4 布爾型 14
1.3 變量 14
1.3.1 變量的聲明 14
1.3.2 名稱 14
1.3.3 初始化 15
1.3.4 常量 15
1.4 算術操作 17
1.4.1 賦值 18
1.4.2 基本運算 18
1.4.3 數學方法 20
1.4.4 數字類型轉換 21
1.4.5 關系操作符和邏輯操作符 22
1.4.6 大數 24
1.5 字符串 24
1.5.1 字符串的連接 25
1.5.2 子字符串 26
1.5.3 字符串比較 26
1.5.4 數字與字符串轉換 28
1.5.5 String類API 29
1.5.6 編碼點和編碼單元 31
1.6 輸入與輸出 33
1.6.1 讀取輸入 33
1.6.2 格式化輸出 35
1.7 控制流 37
1.7.1 分支 37
1.7.2 循環 39
1.7.3 跳出循環與繼續循環 41
1.7.4 局部變量作用域 43
1.8 數組和數組列表 44
1.8.1 使用數組 44
1.8.2 構造數組 45
1.8.3 數組列表 47
1.8.4 基本類型包裝類 48
1.8.5 增強的for循環 48
1.8.6 數組與數組列表的復制 49
1.8.7 數組算法 50
1.8.8 命令行參數 51
1.8.9 多維數組 52
1.9 功能分解 55
1.9.1 靜態方法的聲明與調用 55
1.9.2 數組參數與返回值 55
1.9.3 可變參數 56
練習 57
第2章 面向對象編程 61
2.1 使用對象 62
2.1.1 訪問器方法和修改器方法 64
2.1.2 對象引用 65
2.2 實現類 67
2.2.1 實例變量 67
2.2.2 方法頭 67
2.2.3 方法體 68
2.2.4 實例方法調用 69
2.2.5 this引用 69
2.2.6 值調用 70
2.3 構造對象 72
2.3.1 實現構造函數 72
2.3.2 重載 73
2.3.3 調用另一個構造函數 74
2.3.4 默認初始化 74
2.3.5 實例變量的初始化 75
2.3.6 final實例變量 76
2.3.7 無參構造函數 76
2.4 靜態變量和方法 77
2.4.1 靜態變量 77
2.4.2 靜態常量 78
2.4.3 靜態初始塊 79
2.4.4 靜態方法 80
2.4.5 工廠方法 81
2.5 包 82
2.5.1 包的聲明 82
2.5.2 jar命令 83
2.5.3 類路徑 84
2.5.4 包訪問權限 86
2.5.5 導入類 87
2.5.6 靜態導入 88
2.6 嵌套類 89
2.6.1 靜態嵌套類 89
2.6.2 內部類 91
2.6.3 內部類的特殊語法 93
2.7 文檔注釋 95
2.7.1 插入注釋 95
2.7.2 類注釋 96
2.7.3 方法注釋 97
2.7.4 變量注釋 97
2.7.5 通用注釋 98
2.7.6 鏈接 98
2.7.7 包、模塊和概述注釋 99
2.7.8 注釋的提取 99
練習 100
第3章 接口和lambda表達式 105
3.1 接口 106
3.1.1 聲明接口 106
3.1.2 實現接口 107
3.1.3 轉換為接口類型 109
3.1.4 強制類型轉換和instanceof操作符 109
3.1.5 繼承接口 .110
3.1.6 實現多個接口 111
3.1.7 常量 111
3.2 靜態方法、默認方法和私有方法 112
3.2.1 靜態方法 112
3.2.2 默認方法 112
3.2.3 解決默認方法沖突的問題 113
3.2.4 私有方法 115
3.3 接口示例 115
3.3.1 Comparable接口 115
3.3.2 Comparator接口 117
3.3.3 Runnable接口 118
3.3.4 UI回調 119
3.4 lambda表達式 120
3.4.1 lambda表達式語法 121
3.4.2 函數式接口 122
3.5 方法引用和構造函數引用 123
3.5.1 方法引用 123
3.5.2 構造函數引用 125
3.6 使用lambda表達式 126
3.6.1 實現延遲執行 126
3.6.2 選擇函數式接口 127
3.6.3 實現自己的函數式接口 129
3.7 lambda表達式和變量作用域 130
3.7.1 lambda表達式的作用域 130
3.7.2 訪問來自閉合作用域的變量 131
3.8 高階函數 133
3.8.1 返回函數的方法 134
3.8.2 修改函數的方法 134
3.8.3 Comparator方法 135
3.9 局部類和匿名類 136
3.9.1 局部類 136
3.9.2 匿名類 137
練習 . 138
第4章 繼承與反射 143
4.1 繼承一個類 144
4.1.1 父類與子類 144
4.1.2 定義和繼承子類方法 145
4.1.3 方法覆蓋 145
4.1.4 子類的構造 147
4.1.5 父類賦值 147
4.1.6 轉換 148
4.1.7 final方法和類 149
4.1.8 抽象方法和類 149
4.1.9 受保護訪問 150
4.1.10 匿名子類 151
4.1.11 繼承和默認方法 152
4.1.12 帶super的方法表達式 153
4.2 Object:終極父類 153
4.2.1 toString方法 154
4.2.2 equals方法 156
4.2.3 hashCode方法 159
4.2.4 克隆對象 160
4.3 枚舉 163
4.3.1 枚舉方法 164
4.3.2 構造函數、方法和域 165
4.3.3 實例的實現體 165
4.3.4 靜態成員 166
4.3.5 switch枚舉對象 167
4.4 運行時類型信息和資源 168
4.4.1 Class類 168
4.4.2 資源加載 172
4.4.3 類加載器 172
4.4.4 上下文類加載器 174
4.4.5 服務加載器 176
4.5 反射 178
4.5.1 枚舉類成員 178
4.5.2 對象檢查 179
4.5.3 方法調用 180
4.5.4 對象構造 181
4.5.5 JavaBeans 182
4.5.6 使用數組 183
4.5.7 代理 185
練習 . 187
第5章 異常、斷言和日志處理 191
5.1 異常處理 192
5.1.1 異常拋出 192
5.1.2 異常繼承層次 193
5.1.3 已檢查異常的聲明 195
5.1.4 異常捕獲 196
5.1.5 try-with-resources語句 197
5.1.6 finally子句 199
5.1.7 異常重拋和鏈接 200
5.1.8 未捕獲的異常和堆棧蹤跡 202
5.1.9 Objects.requireNonNull方法 203
5.2 斷言 204
5.2.1 使用斷言 205
5.2.2 啟用和禁用斷言 205
5.3 記錄日志 206
5.3.1 采用日志記錄器 206
5.3.2 日志記錄器 207
5.3.3 日志級別 207
5.3.4 其他日志記錄方法 208
5.3.5 日志記錄的配置項 210
5.3.6 日志處理器 211
5.3.7 過濾器和格式化器 214
練習 215
第6章 泛型編程 219
6.1 泛型類 220
6.2 泛型方法 221
6.3 類型限定 222
6.4 類型變異和通配符 223
6.4.1 子類型通配符 224
6.4.2 父類型通配符 225
6.4.3 帶類型變量的通配符 226
6.4.4 無限定通配符 228
6.4.5 通配符捕獲 228
6.5 Java虛擬機中的泛型 229
6.5.1 類型擦除 229
6.5.2 轉換插入 230
6.5.3 橋方法 230
6.6 泛型約束 232
6.6.1 無基本類型參數 232
6.6.2 所有類型在運行時都是原始的 233
6.6.3 不能實例化類型變量 234
6.6.4 不能構造參數化類型的數組 236
6.6.5 靜態上下文中的類類型變量不是有效的 237
6.6.6 類型擦除后的方法可能不沖突 238
6.6.7 異常與泛型 239
6.7 反射與泛型 240
6.7.1 Class<T>類 240
6.7.2 虛擬機中的泛型類型信息 242
練習 243
第7章 集合 249
7.1 集合框架概要 249
7.2 迭代器 254
7.3 set 256
7.4 map 257
7.5 其他集合 261
7.5.1 Properties 261
7.5.2 位組 262
7.5.3 枚舉set和枚舉map 264
7.5.4 棧、隊列、雙端隊列、優先級隊列 264
7.5.5 弱哈希映射表 266
7.6 視圖 266
7.6.1 小集合 267
7.6.2 范圍 268
7.6.3 不可修改的視圖 268
練習 . 269
第8章 Stream. 273
8.1 從迭代到Stream操作 274
8.2 創建Stream 275
8.3 filter、map和flatMap方法 277
8.4 提取子流和組合流 279
8.5 其他流轉換 280
8.6 簡單歸約 281
8.7 Optional類型 282
8.7.1 如何使用Optional類型值 282
8.7.2 如何不使用Optional類型值 284
8.7.3 創建Optional類型值 284
8.7.4 使用flatMap來組合可選值函數 285
8.7.5 將Optional轉變為流 286
8.8 收集結果 287
8.9 將結果收集到map中 289
8.10 分組和分片 290
8.11 下游收集器 291
8.12 歸約操作 294
8.13 基本類型流 296
8.14 并行流 297
練習 300
第9章 輸入與輸出處理 305
9.1 輸入/輸出流、Reader和Writer 306
9.1.1 獲取流對象 306
9.1.2 讀取字節 307
9.1.3 寫字節 308
9.1.4 字符編碼 308
9.1.5 文本輸入 311
9.1.6 文本輸出 313
9.1.7 讀/寫二進制數據 314
9.1.8  隨機存取文件 315
9.1.9 內存映射文件 315
9.1.10 文件鎖 316
9.2 路徑、文件和目錄 317
9.2.1 路徑 317
9.2.2 創建文件和目錄 319
9.2.3 復制、移動和刪除文件 320
9.2.4 訪問目錄內容 321
9.2.5 ZIP文件系統 324
9.3 HTTP連接 325
9.3.1 URLConnection類和HttpURLConnection類 326
9.3.2 HTTP Client API 327
9.4 正則表達式 330
9.4.1 正則表達式概述 330
9.4.2 找到一個匹配 334
9.4.3 找到所有匹配 335
9.4.4 分組 336
9.4.5 以分隔符號分割 337
9.4.6 替換匹配結果 338
9.4.7 標記 339
9.5 序列化 339
9.5.1 Serializable接口 340
9.5.2 瞬態實例變量 342
9.5.3 readObject和writeObject方法 342
9.5.4 readResolve和writeReplace方法 343
9.5.5 版本化 345
練習 . 346
第10章 并發編程 351
10.1 并發任務 352
10.1.1 運行任務 352
10.1.2 Future 354
10.2 異步計算 357
10.2.1 可完成的Future 357
10.2.2 組合可完成的Future 359
10.2.3 UI回調中的長時間運行任務 362
10.3 線程安全 364
10.3.1 可見性 364
10.3.2 競爭條件 366
10.3.3 安全并發的策略 369
10.3.4 不可變類 369
10.4 并行算法 370
10.4.1 并行流 370
10.4.2 并行數組操作 371
10.5 線程安全的數據結構 372
10.5.1 ConcurrentHashMap . 373
10.5.2 阻塞隊列 374
10.5.3 其他線程安全的數據結構 375
10.6 原子計數器和累加器 376
10.7 鎖和條件 379
10.7.1 鎖 379
10.7.2 synchronized關鍵字 380
10.7.3 條件等待 382
10.8 線程 385
10.8.1 啟動線程 385
10.8.2 線程中斷 386
10.8.3 線程變量 388
10.8.4 線程的其他屬性 388
10.9 進程 389
10.9.1 構建進程 389
10.9.2 運行進程 391
10.9.3 ProcessHandle 392
練習 . 393
第11章 注解. 401
11.1 使用注解 402
11.1.1 注解元素 402
11.1.2 多注解和重復注解 403
11.1.3 注解聲明 404
11.1.4 注解類型用途 405
11.1.5 明確接收者 406
11.2 定義注解 408
11.3 標準注解 410
11.3.1 編譯相關的注解 411
11.3.2 資源管理相關的注解 412
11.3.3 元注解 412
11.4 運行時注解處理 414
11.5 源碼級注解處理 418
11.5.1 注解處理器 418
11.5.2 語言模型API 419
11.5.3 使用注解生成源碼 419
練習 423
第12章 日期和時間API 427
12.1 時間線 428
12.2 本地日期 430
12.3 日期調整器 433
12.4 本地時間 435
12.5 時區時間 436
12.6 格式化和解析 439
12.7 應對遺留代碼 442
練習 . 443
第13章 國際化 447
13.1 本地化 448
13.1.1 指定本地化 448
13.1.2 默認的locale 451
13.1.3 顯示名稱 452
13.2 數字格式化 453
13.3 貨幣符號 454
13.4 日期和時間格式化 455
13.5 排序和規范化 457
13.6 消息格式化 459
13.7 資源束 461
13.7.1 組織資源束 462
13.7.2 資源束類 464
13.8 字符編碼 465
13.9 首選項 466
練習 468
第14章 編譯與腳本 471
14.1 編譯器API 471
14.1.1 調用編譯器 472
14.1.2 啟動編譯任務 472
14.1.3 從內存讀取源文件 473
14.1.4 向內存寫入字節碼 474
14.1.5 捕獲診斷信息 476
14.2 腳本API 476
14.2.1 獲取腳本引擎 476
14.2.2 綁定 477
14.2.3 重定向輸入與輸出 478
14.2.4 調用腳本函數和方法 479
14.2.5 編譯腳本 480
14.3 Nashorn腳本引擎 481
14.3.1 從命令行運行Nashorn. 481
14.3.2 調用getter、setter和重載方法 482
14.3.3 構造Java對象 483
14.3.4 JavaScript和Java中的字符串 485
14.3.5 數字 485
14.3.6 使用數組 486
14.3.7 列表與映射 487
14.3.8 lambda表達式 488
14.3.9 繼承Java類與實現Java接口 489
14.3.10 異常 491
14.4 shell腳本與Nashorn 491
14.4.1 執行shell命令 492
14.4.2 字符串插值 492
14.4.3 腳本輸入 493
練習 494
第15章 Java平臺模塊系統 499
15.1 模塊的概念 500
15.2 模塊命名 501
15.3 模塊化“Hello, World!”程序 502
15.4 引入模塊 504
15.5 導出包 506
15.6 模塊化和反射訪問 510
15.7 模塊化的JAR . 513
15.8 自動模塊和未命名模塊 515
15.9 用于遷移的命令行標識 516
15.10 傳遞和靜態引入 518
15.11 限定導入和打開 520
15.12 服務加載 521
15.13 模塊化用的工具 522
練習 525
本書是經典著作《Java核心技術》(Core Java)作者Cay S. Horstmann的全新力作,書中以關鍵的核心技術為著眼點,以全局高度提煉語言精髓,以高濃度、高含金量的方式對Java SE 9的新特性進行細致講解。作者將其沉浸于Java多年的真知灼見蘊藏于書中,既扎實覆蓋Java編程的基礎知識,又獨具匠心地從Java 9及其重要的新特性之一——模塊發端,帶領讀者一路探索和實踐Java 的諸多新特性,諸如JShell、集合類工廠方法、改進的Stream API、私有接口、HTTP/2、并發編程中的增強部分、全新的時間/日期API,以及腳本語言在Java中的使用。“Impatient”系列圖書風格鮮明,除悉數出自大師之手外,更以文筆輕松、易讀易懂、富含生動且可用于實踐的示例程序(下載源代碼后可直接運行)而見長。這種親身實踐的講授模式,非常便于讀者加深對技術的理解和掌握。初學者可用來參考入門;有開發經驗者也可用來鞏固編程核心知識,與時俱進地把握技術發展現狀與未來趨勢。本書適合有一定Java開發經驗的工程師或者架構師閱讀,也可以作為Java新特性的參考手冊。
推薦序一
1991年,來自Sun 公司的一個名為“Green Team”的小團隊的3個人:James Gosling、Mike Sheridan和Patrick Naughton發布了一個叫作“Greentalk”的語言,其最初設計目標是在小型嵌入式設備中運行應用程序,這也就是Java語言的雛形。自1995年發行的第一個 Alpha 版本開始,Java距今已有23年歷史了,可謂經久不衰,算得上歷史上最成功的語言了。
2017年9月21日,Java 9 發布了,引入了諸多新特性,例如,集合類工廠方法、私有接口、支持HTTP/2,以及并發處理的改進等。其實做 Java Web 開發的時間越長,越需要對 Java 底層實現深入了解。通過本書,能夠準確理解Java 技術的走向,幫助 Java開發者從 JDK 層面重構應用的代碼。另外,本書是國內目前關于 Java 9為數不多的中文版書籍,而本書的譯者是我在 IBM 多年的同事,其一直專注于 Java 開發。本書的翻譯質量較高,通俗易懂,用詞準確,通過閱讀書中內容,能夠幫助廣大 Java 開發者更快、更準確地了解 Java 9的特性。
王青
杰蛙科技(北京)有限公司 首席架構師


推薦序二
我曾經在IBM一起戰斗過的兄弟楊謙邀請我為本書作序,我雖然心懷忐忑,但還是欣然應允了。
Java老手都會知道Core Java(《Java核心技術》)這部大作,本書的作者Cay S. Horstmann也正是Core Java的主要作者。他是圣荷西州立大學計算機系的教授、Java語言的積極倡導者,他能夠以形象的語言,向大家闡述抽象的Java概念,讓初學者能夠很容易地掌握Java這門語言。然而光陰似箭,Java到今天已經經歷了二十多個寒暑。這么長的時間里,Java也已經演化到了9.0版本,許多更先進的思想和更簡潔的API被加入進來,同時也拋棄了很多過時的內容。在這樣的情況下,Core Java這本大部頭就多多少少顯得有些不合時宜了,這也是Cay S. Horstmann寫作本書的原因。在本書中,Cay S. Horstmann針對Java應用開發人員,提煉出了Java最核心、最新鮮、工作中最常用到的部分,舍棄了諸如Swing等在現實工作中很少用到的內容,讓讀者在最短的時間里盡情吸收Java語言的精華,以快速地把所學的知識應用到實際工作中去。
本書的譯者之一楊謙是我在IBM CDL時朝夕相處的同事,他有著十多年的Java實戰經驗和深厚的技術功底,同時還秉承了IBM一貫的科學嚴謹作風,再加上長期外企工作環境的熏陶,鍛煉出了對英文技術資料很好的閱讀理解能力。我相信,他們完全能夠將本書中的內容用中文清晰、準確地呈獻給讀者。
霍振中
北京大米未來科技有限公司聯合創始人、CTO

譯者序
2017年Oracle發布了Java 9。Java 9引入了大家期待已久的模塊功能以及很多其他特性,例如,JShell、集合類工廠方法、改進的Stream API、私有接口、HTTP/2等。本書特色鮮明,它不僅為開發者全面介紹這些新特性,而且從Java的最核心基礎——類、繼承、接口、反射、泛型編程、集合等開始。全書的開始幾章全面細致、重點突出地介紹Java的核心基礎并在第3章穿插了lambda表達式。之后各章全面介紹Java的新特性和原有功能的改進,其中第8章詳細介紹Stream的使用,第10章介紹最新的并發編程API,第15章詳細介紹模塊。全書內容翔實,實例豐富,理論與實踐并舉。
譯者在翻譯本書時,一邊感到萬分的榮幸,一邊又感到責任重大。吉爾伯特·海特(美國教育家)曾經說過:寫了一本很糟糕的書只是犯錯而已,而把一本好書翻譯得很糟糕則是犯罪。但是對于本書這樣的Java核心技術和最新特性之作,即便是冒著犯罪的風險,也值得翻譯出來并推薦給大家。
本書承載的內容豐富而深入。在翻譯的過程中,譯者也常感汗顏,原來自詡對Java 新特性頗為了解的我深刻感受到自己知識面的淺薄和不完整,于是翻譯過程也成為自己檢討和學習的過程,收獲頗豐。本書的作者是經典書籍Core Java(《Java核心技術》)的主要作者,他有著豐富的Java知識,并一直在普及介紹Java的最新特性。因此,希望大家反復閱讀本書,如此一來必定受益無窮。
由于本書作者的知識廣博、經驗豐富,而譯者本人知識有限、時間倉促,難免使得原文的個別之處無法原汁原味地呈現給讀者,在此敬請各位讀者多多包涵,不吝指教,并幫忙指出紕漏。我也希望能就本書的內容與讀者有更多的交流,聯系郵箱是yqbjtu@163.com。
最后,我要感謝電子工業出版社博文視點公司的張春雨編輯在譯書的過程中給予我們的莫大幫助。我還要感謝本書的其他譯者章歷、王巍、高偉斌、張媛、田敏、王雪芳、楊建軒、康引鴿、劉增濤、楊燕、史肖玲、張會平、郝明、劉香蘭、田豐產、劉回良和東莞經濟貿易學校的謝志強老師等。在此還要特別感謝杰蛙科技(北京)有限公司的首席架構師王青先生和北京大米未來科技有限公司的CTO霍振中先生,他們的參與使得本書的質量得到進一步保證。
楊謙
2018年7月于北京志新村

前言
Java已誕生20多年,經典書籍Core Java(《Java核心技術》)卷Ⅰ和卷Ⅱ用2000多頁全面細致地介紹了Java語言和所有核心類庫,以及各版本之間的大量變化。但是如果你想更高效地使用現代Java,那么本書提供了一種更快、更方便地學習Java語言和核心類庫的途徑。在本書中,我們不會追溯歷史一直介紹過去版本的特性。我們將通過Java9,展示現代Java中的“優秀之處”,因此你可以快速地將它們應用到工作中。
與我之前的“Impatient”系列書籍類似,本書也會開門見山地告訴你解決編程問題所需要知道的內容,但不會就某個范例比另外一個范例更有優勢而展開講解。我們會采用有序且篇幅較小的方式展示信息,這樣需要信息時,你就可以快速檢索獲取。
假設你精通其他編程語言,例如C++、JavaScript、Objective-C、PHP或Ruby,通過本書,你將學習如何成為一個稱職的Java程序員。 我們會涵蓋Java開發者需要知道的方方面面,包括功能強大的lambda表達式和Stream。我會告訴你哪里可以找到關于舊式概念的更多信息,你可能依然會在一些遺留代碼中看到這些舊式概念,但是我們不會就此展開。
使用Java的一個關鍵原因是解決并發編程問題。使用Java類庫中現成的并行算法和線程安全的數據結構,徹底改變了程序員處理并發編程的方式。我們會提供新的示例,告訴你如何使用強大的類庫特性代替那些易出錯、低水平的數據結構。
傳統的Java書籍關注UI編程——但是現在,很少有開發者在桌面計算機開發用戶界面了。如果你想將Java用在服務器端編程或者Android編程,就可以更有效地使用本書,而不被桌面GUI代碼干擾了。
最后,本書是寫給應用軟件編程者的,不是大學教科書,也不適合作為系統向導。本書包含了一些應用軟件編程者需要設法解決的問題,例如日志和文件使用,但是你不必學習如何實現鏈表或者開發一個Web服務器。
希望你喜歡對現代Java的快速介紹,同時希望它能提高你的Java開發工作效率并愉快地使用Java。
pagetop