寫給大忙人的JAVA SE 9核心技術
作 者: (美)CayS.Horstmann(凱·霍斯特曼) 著 楊謙等 譯
定 價: 128
出?版?社: 電子工業出版社
出版日期: 2018年10月01日
頁 數: 552
裝 幀: 平裝
ISBN: 9787121342783
●章 基本的編程結構 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 0章 並發編程 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 1章 注解. 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 &nb注解 412 11.4 運行時注解處理 414 11.5 源碼級注解處理 418 11.5.1 注解處理器 418 11.5.2 語言模型API 419 11.5.3 使用注解生成源碼 419 練習 423 2章 日期和時間API 427 12.1 時間線 428 12.2 本地日期 430 12.3 日期調整器 433 12.4 本地時間 435 12.5 時區時間 436 12.6 格式化和解析 439 12.7 應對遺留代碼 442 練習 . 443 3章 國際化 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 4章 編譯與腳本 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 5章 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”繫列圖書風格鮮明,除悉數出自大師之手外,更以文筆輕松、易讀易懂、富含生動且可用於實踐的示例程序(源代碼後可直接運行)而見長。這種親身實踐的講授模式,很好便於讀者加深對技術的理解和掌握。初學者可用來參考入......
"推薦序一 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為數不多的中文版書籍,而本書的......
"