本翻譯項(xiàng)目的 GITHUB 開(kāi)源地址:[https://github.com/LingCoder/OnJava8](https://github.com/LingCoder/OnJava8)
如果你在閱讀本書(shū)的過(guò)程中有發(fā)現(xiàn)不明白或者錯(cuò)誤的地方,請(qǐng)隨時(shí)到項(xiàng)目地址發(fā)布 issue 或者 fork 項(xiàng)目后發(fā)布 pr 幫助譯者改善!不勝感激!
## [書(shū)籍簡(jiǎn)介](https://lingcoder.gitee.io/onjava8/#/README?id=%e4%b9%a6%e7%b1%8d%e7%ae%80%e4%bb%8b)
* 本書(shū)原作者為 \[美\] Bruce Eckel,即《Java 編程思想》的作者。
* 本書(shū)是事實(shí)上的 《Java 編程思想》第五版。
* 《Java 編程思想》第四版基于 JAVA**5**版本;《On Java 8》 基于 JAVA**8**版本。
## [翻譯說(shuō)明](https://lingcoder.gitee.io/onjava8/#/README?id=%e7%bf%bb%e8%af%91%e8%af%b4%e6%98%8e)
1. 本書(shū)排版布局和翻譯風(fēng)格上參考了**阮一峰**老師的[中文技術(shù)文檔的寫(xiě)作規(guī)范](https://github.com/ruanyf/document-style-guide)
2. 采用第一人稱敘述。
3. 由于中英行文差異,完全的逐字逐句翻譯會(huì)很冗余啰嗦。所以本人在翻譯過(guò)程中,去除了部分主題無(wú)關(guān)內(nèi)容、重復(fù)描寫(xiě)。
4. 譯者在翻譯中同時(shí)參考了谷歌、百度、有道翻譯的譯文以及《Java編程思想》第四版中文版的部分內(nèi)容(對(duì)其翻譯死板,生造名詞,語(yǔ)言精煉度差問(wèn)題進(jìn)行規(guī)避和改正)。最后結(jié)合譯者自己的理解進(jìn)行本地化,盡量做到專業(yè)和言簡(jiǎn)意賅,方便大家更好的理解學(xué)習(xí)。
5. 由于譯者個(gè)人能力、時(shí)間有限,如有翻譯錯(cuò)誤和筆誤的地方,還請(qǐng)大家批評(píng)指正!
## [如何參與](https://lingcoder.gitee.io/onjava8/#/README?id=%e5%a6%82%e4%bd%95%e5%8f%82%e4%b8%8e)
如果你想對(duì)本書(shū)做出一些貢獻(xiàn)的話
可以在閱讀本書(shū)過(guò)程中幫忙校對(duì),找 bug 錯(cuò)別字等等
可以提出專業(yè)方面的修改建議
可以把一些不盡人意的語(yǔ)句翻譯的更好更有趣
對(duì)于以上各類建議,請(qǐng)以 issue 或 pr 的形式發(fā)送,我看到之后會(huì)盡快處理
使用 MarkDown 編輯器,md 語(yǔ)法格式進(jìn)行文檔翻譯及排版工作
完成之后 PullRequest
如沒(méi)問(wèn)題的話,我會(huì)合并到主分支
如不熟悉 md 排版,可不必糾結(jié),我會(huì)在合并 pr 時(shí)代為排版
如還有其它問(wèn)題,歡迎發(fā)送 issue,謝謝~
## [開(kāi)源協(xié)議](https://lingcoder.gitee.io/onjava8/#/README?id=%e5%bc%80%e6%ba%90%e5%8d%8f%e8%ae%ae)
本項(xiàng)目基于 MIT 協(xié)議開(kāi)源。
## [友情鏈接](https://lingcoder.gitee.io/onjava8/#/README?id=%e5%8f%8b%e6%83%85%e9%93%be%e6%8e%a5)
Effective Java 第 3 版:[https://github.com/sjsdfg/effective-java-3rd-chinese](https://github.com/sjsdfg/effective-java-3rd-chinese)
## [聯(lián)系方式](https://lingcoder.gitee.io/onjava8/#/README?id=%e8%81%94%e7%b3%bb%e6%96%b9%e5%bc%8f)
* E-mail :[lingcoder@gmail.com](mailto:lingcoder@gmail.com)
- 譯者的話
- 前言
- 簡(jiǎn)介
- 第一章 對(duì)象的概念
- 抽象
- 接口
- 服務(wù)提供
- 封裝
- 復(fù)用
- 繼承
- "是一個(gè)"與"像是一個(gè)"的關(guān)系
- 多態(tài)
- 單繼承結(jié)構(gòu)
- 集合
- 對(duì)象創(chuàng)建與生命周期
- 異常處理
- 本章小結(jié)
- 第二章 安裝Java和本書(shū)用例
- 編輯器
- Shell
- Java安裝
- 校驗(yàn)安裝
- 安裝和運(yùn)行代碼示例
- 第三章 萬(wàn)物皆對(duì)象
- 對(duì)象操縱
- 對(duì)象創(chuàng)建
- 數(shù)據(jù)存儲(chǔ)
- 基本類型的存儲(chǔ)
- 高精度數(shù)值
- 數(shù)組的存儲(chǔ)
- 代碼注釋
- 對(duì)象清理
- 作用域
- 對(duì)象作用域
- 類的創(chuàng)建
- 類型
- 字段
- 基本類型默認(rèn)值
- 方法使用
- 返回類型
- 參數(shù)列表
- 程序編寫(xiě)
- 命名可見(jiàn)性
- 使用其他組件
- static關(guān)鍵字
- 小試牛刀
- 編譯和運(yùn)行
- 編碼風(fēng)格
- 本章小結(jié)
- 第四章 運(yùn)算符
- 開(kāi)始使用
- 優(yōu)先級(jí)
- 賦值
- 方法調(diào)用中的別名現(xiàn)象
- 算術(shù)運(yùn)算符
- 一元加減運(yùn)算符
- 遞增和遞減
- 關(guān)系運(yùn)算符
- 測(cè)試對(duì)象等價(jià)
- 邏輯運(yùn)算符
- 短路
- 字面值常量
- 下劃線
- 指數(shù)計(jì)數(shù)法
- 位運(yùn)算符
- 移位運(yùn)算符
- 三元運(yùn)算符
- 字符串運(yùn)算符
- 常見(jiàn)陷阱
- 類型轉(zhuǎn)換
- 截?cái)嗪蜕崛?/a>
- 類型提升
- Java沒(méi)有sizeof
- 運(yùn)算符總結(jié)
- 本章小結(jié)
- 第五章 控制流
- true和false
- if-else
- 迭代語(yǔ)句
- while
- do-while
- for
- 逗號(hào)操作符
- for-in 語(yǔ)法
- return
- break 和 continue
- 臭名昭著的 goto
- switch
- switch 字符串
- 本章小結(jié)
- 第六章 初始化和清理
- 利用構(gòu)造器保證初始化
- 方法重載
- 區(qū)分重載方法
- 重載與基本類型
- 返回值的重載
- 無(wú)參構(gòu)造器
- this關(guān)鍵字
- 在構(gòu)造器中調(diào)用構(gòu)造器
- static 的含義
- 垃圾回收器
- finalize()的用途
- 你必須實(shí)施清理
- 終結(jié)條件
- 垃圾回收器如何工作
- 成員初始化
- 指定初始化
- 構(gòu)造器初始化
- 初始化的順序
- 靜態(tài)數(shù)據(jù)的初始化
- 顯式的靜態(tài)初始化
- 非靜態(tài)實(shí)例初始化
- 數(shù)組初始化
- 動(dòng)態(tài)數(shù)組創(chuàng)建
- 可變參數(shù)列表
- 枚舉類型
- 本章小結(jié)
- 第七章 封裝
- 包的概念
- 代碼組織
- 創(chuàng)建獨(dú)一無(wú)二的包名
- 沖突
- 定制工具庫(kù)
- 使用 import 改變行為
- 使用包的忠告
- 訪問(wèn)權(quán)限修飾符
- 包訪問(wèn)權(quán)限
- public: 接口訪問(wèn)權(quán)限
- 默認(rèn)包
- private: 你無(wú)法訪問(wèn)
- protected: 繼承訪問(wèn)權(quán)限
- 包訪問(wèn)權(quán)限 Vs Public 構(gòu)造器
- 接口和實(shí)現(xiàn)
- 類訪問(wèn)權(quán)限
- 本章小結(jié)
- 第八章 復(fù)用
- 組合語(yǔ)法
- 繼承語(yǔ)法
- 初始化基類
- 帶參數(shù)的構(gòu)造函數(shù)
- 委托
- 結(jié)合組合與繼承
- 保證適當(dāng)?shù)那謇?/a>
- 名稱隱藏
- 組合與繼承的選擇
- protected
- 向上轉(zhuǎn)型
- 再論組合和繼承
- final關(guān)鍵字
- final 數(shù)據(jù)
- 空白 final
- final 參數(shù)
- final 方法
- final 和 private
- final 類
- final 忠告
- 類初始化和加載
- 繼承和初始化
- 本章小結(jié)
- 第九章 多態(tài)
- 向上轉(zhuǎn)型回顧
- 忘掉對(duì)象類型
- 轉(zhuǎn)機(jī)
- 方法調(diào)用綁定
- 產(chǎn)生正確的行為
- 可擴(kuò)展性
- 陷阱:“重寫(xiě)”私有方法
- 陷阱:屬性與靜態(tài)方法
- 構(gòu)造器和多態(tài)
- 構(gòu)造器調(diào)用順序
- 繼承和清理
- 構(gòu)造器內(nèi)部多態(tài)方法的行為
- 協(xié)變返回類型
- 使用繼承設(shè)計(jì)
- 替代 vs 擴(kuò)展
- 向下轉(zhuǎn)型與運(yùn)行時(shí)類型信息
- 本章小結(jié)
- 第十章 接口
- 抽象類和方法
- 接口創(chuàng)建
- 默認(rèn)方法
- 多繼承
- 接口中的靜態(tài)方法
- Instrument 作為接口
- 抽象類和接口
- 完全解耦
- 多接口結(jié)合
- 使用繼承擴(kuò)展接口
- 結(jié)合接口時(shí)的命名沖突
- 接口適配
- 接口字段
- 初始化接口中的字段
- 接口嵌套
- 接口和工廠方法模式
- 本章小結(jié)
- 第十一章 內(nèi)部類
- 創(chuàng)建內(nèi)部類
- 鏈接外部類
- 使用 .this 和 .new
- 內(nèi)部類與向上轉(zhuǎn)型
- 內(nèi)部類方法和作用域
- 匿名內(nèi)部類
- 嵌套類
- 接口內(nèi)部的類
- 從多層嵌套類中訪問(wèn)外部類的成員
- 為什么需要內(nèi)部類
- 閉包與回調(diào)
- 內(nèi)部類與控制框架
- 繼承內(nèi)部類
- 內(nèi)部類可以被覆蓋么?
- 局部?jī)?nèi)部類
- 內(nèi)部類標(biāo)識(shí)符
- 本章小結(jié)
- 第十二章 集合
- 泛型和類型安全的集合
- 基本概念
- 添加元素組
- 集合的打印
- 迭代器Iterators
- ListIterator
- 鏈表LinkedList
- 堆棧Stack
- 集合Set
- 映射Map
- 隊(duì)列Queue
- 優(yōu)先級(jí)隊(duì)列PriorityQueue
- 集合與迭代器
- for-in和迭代器
- 適配器方法慣用法
- 本章小結(jié)
- 簡(jiǎn)單集合分類
- 第十三章 函數(shù)式編程
- 新舊對(duì)比
- Lambda表達(dá)式
- 遞歸
- 方法引用
- Runnable接口
- 未綁定的方法引用
- 構(gòu)造函數(shù)引用
- 函數(shù)式接口
- 多參數(shù)函數(shù)式接口
- 缺少基本類型的函數(shù)
- 高階函數(shù)
- 閉包
- 作為閉包的內(nèi)部類
- 函數(shù)組合
- 柯里化和部分求值
- 純函數(shù)式編程
- 本章小結(jié)
- 第十四章 流式編程
- 流支持
- 流創(chuàng)建
- 隨機(jī)數(shù)流
- int 類型的范圍
- generate()
- iterate()
- 流的建造者模式
- Arrays
- 正則表達(dá)式
- 中間操作
- 跟蹤和調(diào)試
- 流元素排序
- 移除元素
- 應(yīng)用函數(shù)到元素
- 在map()中組合流
- Optional類
- 便利函數(shù)
- 創(chuàng)建 Optional
- Optional 對(duì)象操作
- Optional 流
- 終端操作
- 數(shù)組
- 集合
- 組合
- 匹配
- 查找
- 信息
- 數(shù)字流信息
- 本章小結(jié)
- 第十五章 異常
- 異常概念
- 基本異常
- 異常參數(shù)
- 異常捕獲
- try 語(yǔ)句塊
- 異常處理程序
- 終止與恢復(fù)
- 自定義異常
- 異常與記錄日志
- 異常聲明
- 捕獲所有異常
- 多重捕獲
- 棧軌跡
- 重新拋出異常
- 精準(zhǔn)的重新拋出異常
- 異常鏈
- Java 標(biāo)準(zhǔn)異常
- 特例:RuntimeException
- 使用 finally 進(jìn)行清理
- finally 用來(lái)做什么?
- 在 return 中使用 finally
- 缺憾:異常丟失
- 異常限制
- 構(gòu)造器
- Try-With-Resources 用法
- 揭示細(xì)節(jié)
- 異常匹配
- 其他可選方式
- 歷史
- 觀點(diǎn)
- 把異常傳遞給控制臺(tái)
- 把“被檢查的異常”轉(zhuǎn)換為“不檢查的異?!?/a>
- 異常指南
- 本章小結(jié)
- 后記:Exception Bizarro World
- 第十六章 代碼校驗(yàn)
- 測(cè)試
- 如果沒(méi)有測(cè)試過(guò),它就是不能工作的
- 單元測(cè)試
- JUnit
- 測(cè)試覆蓋率的幻覺(jué)
- 前置條件
- 斷言(Assertions)
- Java 斷言語(yǔ)法
- Guava斷言
- 使用斷言進(jìn)行契約式設(shè)計(jì)
- 檢查指令
- 前置條件
- 后置條件
- 不變性
- 放松 DbC 檢查或非嚴(yán)格的 DbC
- DbC + 單元測(cè)試
- 使用Guava前置條件
- 測(cè)試驅(qū)動(dòng)開(kāi)發(fā)
- 測(cè)試驅(qū)動(dòng) vs. 測(cè)試優(yōu)先
- 日志
- 日志會(huì)給出正在運(yùn)行的程序的各種信息
- 日志等級(jí)
- 調(diào)試
- 使用 JDB 調(diào)試
- 圖形化調(diào)試器
- 基準(zhǔn)測(cè)試
- 微基準(zhǔn)測(cè)試
- JMH 的引入
- 剖析和優(yōu)化
- 優(yōu)化準(zhǔn)則
- 風(fēng)格檢測(cè)
- 靜態(tài)錯(cuò)誤分析
- 代碼重審
- 結(jié)對(duì)編程
- 重構(gòu)
- 重構(gòu)基石
- 持續(xù)集成
- 本章小結(jié)
- 第十七章 文件
- 文件和目錄路徑
- 選取路徑部分片段
- 路徑分析
- Paths的增減修改
- 目錄
- 文件系統(tǒng)
- 路徑監(jiān)聽(tīng)
- 文件查找
- 文件讀寫(xiě)
- 本章小結(jié)
- 第十八章 字符串
- 字符串的不可變
- +的重載與StringBuilder
- 意外遞歸
- 字符串操作
- 格式化輸出
- printf()
- System.out.format()
- Formatter類
- 格式化修飾符
- Formatter轉(zhuǎn)換
- String.format()
- 一個(gè)十六進(jìn)制轉(zhuǎn)儲(chǔ)(dump)工具
- 正則表達(dá)式
- 基礎(chǔ)
- 創(chuàng)建正則表達(dá)式
- 量詞
- CharSequence
- Pattern和Matcher
- find()
- 組(Groups)
- start()和end()
- Pattern標(biāo)記
- split()
- 替換操作
- 正則表達(dá)式與 Java I/O
- 掃描輸入
- Scanner分隔符
- 用正則表達(dá)式掃描
- StringTokenizer類
- 本章小結(jié)
- 第十九章 類型信息
- 為什么需要 RTTI
- Class對(duì)象
- 類字面常量
- 泛化的Class引用
- cast()方法
- 類型轉(zhuǎn)換檢測(cè)
- 使用類字面量
- 遞歸計(jì)數(shù)
- 一個(gè)動(dòng)態(tài)instanceof函數(shù)
- 注冊(cè)工廠
- 類的等價(jià)比較
- 反射:運(yùn)行時(shí)類信息
- 類方法提取器
- 動(dòng)態(tài)代理
- Optional類
- 標(biāo)記接口
- Mock 對(duì)象和樁
- 接口和類型
- 本章小結(jié)
- 第二十章 泛型
- 簡(jiǎn)單泛型
- 泛型接口
- 泛型方法
- 復(fù)雜模型構(gòu)建
- 泛型擦除
- 補(bǔ)償擦除
- 邊界
- 通配符
- 問(wèn)題
- 自限定的類型
- 動(dòng)態(tài)類型安全
- 泛型異常
- 混型
- 潛在類型機(jī)制
- 對(duì)缺乏潛在類型機(jī)制的補(bǔ)償
- Java8 中的輔助潛在類型
- 總結(jié):類型轉(zhuǎn)換真的如此之糟嗎?
- 進(jìn)階閱讀
- 第二十一章 數(shù)組
- 數(shù)組特性
- 一等對(duì)象
- 返回?cái)?shù)組
- 多維數(shù)組
- 泛型數(shù)組
- Arrays的fill方法
- Arrays的setAll方法
- 增量生成
- 隨機(jī)生成
- 泛型和基本數(shù)組
- 數(shù)組元素修改
- 數(shù)組并行
- Arrays工具類
- 數(shù)組比較
- 數(shù)組拷貝
- 流和數(shù)組
- 數(shù)組排序
- Arrays.sort()的使用
- 并行排序
- binarySearch二分查找
- parallelPrefix并行前綴
- 本章小結(jié)
- 第二十二章 枚舉
- 基本 enum 特性
- 將靜態(tài)類型導(dǎo)入用于 enum
- 方法添加
- 覆蓋 enum 的方法
- switch 語(yǔ)句中的 enum
- values 方法的神秘之處
- 實(shí)現(xiàn)而非繼承
- 隨機(jī)選擇
- 使用接口組織枚舉
- 使用 EnumSet 替代 Flags
- 使用 EnumMap
- 常量特定方法
- 使用 enum 的職責(zé)鏈
- 使用 enum 的狀態(tài)機(jī)
- 多路分發(fā)
- 使用 enum 分發(fā)
- 使用常量相關(guān)的方法
- 使用 EnumMap 進(jìn)行分發(fā)
- 使用二維數(shù)組
- 本章小結(jié)
- 第二十三章 注解
- 基本語(yǔ)法
- 定義注解
- 元注解
- 編寫(xiě)注解處理器
- 注解元素
- 默認(rèn)值限制
- 替代方案
- 注解不支持繼承
- 實(shí)現(xiàn)處理器
- 使用javac處理注解
- 最簡(jiǎn)單的處理器
- 更復(fù)雜的處理器
- 基于注解的單元測(cè)試
- 在 @Unit 中使用泛型
- 實(shí)現(xiàn) @Unit
- 本章小結(jié)
- 第二十四章 并發(fā)編程
- 術(shù)語(yǔ)問(wèn)題
- 并發(fā)的新定義
- 并發(fā)的超能力
- 并發(fā)為速度而生
- 四句格言
- 1.不要這樣做
- 2.沒(méi)有什么是真的,一切可能都有問(wèn)題
- 3.它起作用,并不意味著它沒(méi)有問(wèn)題
- 4.你必須仍然理解
- 殘酷的真相
- 本章其余部分
- 并行流
- 創(chuàng)建和運(yùn)行任務(wù)
- 終止耗時(shí)任務(wù)
- CompletableFuture類
- 基本用法
- 結(jié)合 CompletableFuture
- 模擬
- 異常
- 流異常(Stream Exception)
- 檢查性異常
- 死鎖
- 構(gòu)造方法非線程安全
- 復(fù)雜性和代價(jià)
- 本章小結(jié)
- 缺點(diǎn)
- 共享內(nèi)存陷阱
- This Albatross is Big
- 其他類庫(kù)
- 考慮為并發(fā)設(shè)計(jì)的語(yǔ)言
- 拓展閱讀
- 第二十五章 設(shè)計(jì)模式
- 概念
- 單例模式
- 模式分類
- 構(gòu)建應(yīng)用程序框架
- 面向?qū)崿F(xiàn)
- 工廠模式
- 動(dòng)態(tài)工廠
- 多態(tài)工廠
- 抽象工廠
- 函數(shù)對(duì)象
- 命令模式
- 策略模式
- 責(zé)任鏈模式
- 改變接口
- 適配器模式(Adapter)
- 外觀模式(Fa?ade)
- 包(Package)作為外觀模式的變體
- 解釋器:運(yùn)行時(shí)的彈性
- 回調(diào)
- 多次調(diào)度
- 模式重構(gòu)
- 抽象用法
- 多次派遣
- 訪問(wèn)者模式
- RTTI的優(yōu)劣
- 本章小結(jié)
- 附錄:補(bǔ)充
- 附錄:編程指南
- 附錄:文檔注釋
- 附錄:對(duì)象傳遞和返回
- 附錄:流式IO
- 輸入流類型
- 輸出流類型
- 添加屬性和有用的接口
- 通過(guò)FilterInputStream 從 InputStream 讀取
- 通過(guò) FilterOutputStream 向 OutputStream 寫(xiě)入
- Reader和Writer
- 數(shù)據(jù)的來(lái)源和去處
- 更改流的行為
- 未發(fā)生改變的類
- RandomAccessFile類
- IO流典型用途
- 緩沖輸入文件
- 從內(nèi)存輸入
- 格式化內(nèi)存輸入
- 基本文件的輸出
- 文本文件輸出快捷方式
- 存儲(chǔ)和恢復(fù)數(shù)據(jù)
- 讀寫(xiě)隨機(jī)訪問(wèn)文件
- 本章小結(jié)
- 附錄:標(biāo)準(zhǔn)IO
- 附錄:新IO
- ByteBuffer
- 數(shù)據(jù)轉(zhuǎn)換
- 基本類型獲取
- 視圖緩沖區(qū)
- 字節(jié)存儲(chǔ)次序
- 緩沖區(qū)數(shù)據(jù)操作
- 緩沖區(qū)細(xì)節(jié)
- 內(nèi)存映射文件
- 性能
- 文件鎖定
- 映射文件的部分鎖定
- 附錄:理解equals和hashCode方法
- 附錄:集合主題
- 附錄:并發(fā)底層原理
- 附錄:數(shù)據(jù)壓縮
- 附錄:對(duì)象序列化
- 附錄:靜態(tài)語(yǔ)言類型檢查
- 附錄:C++和Java的優(yōu)良傳統(tǒng)
- 附錄:成為一名程序員
