×

支持7-11 全家超商取貨 貨到付款

On Java 中文版套裝:基礎卷+進階卷(套裝共2冊)
On Java 中文版套裝:基礎卷+進階卷(套裝共2冊)
On Java 中文版套裝:基礎卷+進階卷(套裝共2冊)
On Java 中文版套裝:基礎卷+進階卷(套裝共2冊)
On Java 中文版套裝:基礎卷+進階卷(套裝共2冊)
On Java 中文版套裝:基礎卷+進階卷(套裝共2冊)

On Java 中文版套裝:基礎卷+進階卷(套裝共2冊)

NT$1900NT$2699

基於Java 8、11、17,Thinking in系列書籍作者Bruce Eckel重講Java編程!查漏寶典,避坑指南,小白大神皆可讀,大咖領讀,總結Java開發精要


1636422120320877.jpg

详情1.jpg

編輯推薦:


基於Java 8、11、17,Thinking in系列書籍作者Bruce Eckel重講Java編程!


1.查漏寶典:涵蓋Java關鍵特性的設計原理和應用方法

2.避坑指南:以產業實踐的得失為鑑,指明Java開發者不可不知的設計陷阱

3.小白大神皆可讀:適合不同層次的Java開發者反复翻閱

4.大咖領讀:3位一線技術專家帶你拆解書中難點內容,總結Java開發精要

內容簡介:


《on java 基礎卷》是布魯斯·埃克爾時隔 15 年,繼 Thinking in Java 之後又一力作,基於 Java 的 3 個長期支持版(Java 8、11、17),講解 Java 核心語法,並對 Java 的核心變化進行詳述。全書內容通俗易懂,配合示例講解逐步深入,並結合實際開發需要,從語言底層設計出發,有效幫讀者規避一些常見的開發陷阱。

主體部分共 22 章,內容包含對象、操作符、控制流、初始化和清理、復用、多態、接口、內部類、集合、函數式編程、流、異常、代碼校驗、文件、字符串、泛型等。

本書適合各個層次的 Java 開發者閱讀,同時也可作為面向對象程序設計語言以及 Java 語言的參考教材。


《On Java 中文版 進階卷》 本書內容主要是對《On Java 中文版 基礎卷》的拓展延伸,重點講解 Java 的高級特性、並發、設計模式等相關進階知識,對一些和開發密切相關的底層操作(如 I/O 系統、底層並發、數據壓縮等)進行深入探討,同時針對基礎卷的重點章節進行了補充說明(如第 3 章增補了一些關於集合的高級特性)。在附錄中,作者給出了 67 條關於低級程序設計和編寫代碼的建議,並分享了自己成為程序員的一些經驗之談。

本書適合有一定項目開發經驗的 Java 程序員閱讀。

作者簡介:



布魯斯·埃克爾(Bruce Eckel)

C 標準委員會的創始成員之一,技術顧問,專注於編程語言和軟件系統設計方面的研究,常活躍於世界各大技術研討會。他自 1986 年以來,累計出版 Thinking in C 、Thinking in Java、On Java 8 等十餘部計算機,曾多次榮獲 Jolt 最佳圖書獎(被譽為“軟件業界的奧斯卡”),其代表作 Thinking in Java 被譯為中文、日文、俄文、意大利文、波蘭文、韓文等十幾種語言,在世界範圍內產生了廣泛影響。

譯者簡介:


陳德偉

深耕軟件研發十餘年,目前專注於金融系統研發工作。

臧秀濤,InfoQ 前會議內容總編。現于濤思數據負責開源時序數據庫 TDengine 的社區生態。代表譯作有《Java性能權威指南》《C API 設計》《Groovy 程序設計》等。

孫卓,現任職於百度健康研發中心,百度技術委員會成員。從業十餘年,熟悉 Java、PHP 等語言體系,同時也是一名語言文字愛好者。

秦彬,現任騰訊遊戲高級項目經理,曾翻譯《體驗引擎》《遊戲設計夢工廠》《遊戲製作的本質》等書。

目錄:


《On Java 中文版 基礎卷》 第 1章 什麼是對象 / 001

1.1抽象的歷程 / 002

1.2 對象具有接口 / 003

1.3 對象可以提供服務 / 005

1.4 隱藏的實現 / 006

1.5 復用實現 / 008

1.6 繼承 / 008

is-a關係與is-like-a關係 / 012

1.7 多態 / 013

1.8 單根層次結構 / 016

1.9 集合 / 017

參數化類型(泛型) / 018

1.10 對象的創建和生命週期 / 019

1.11 異常處理 / 021

1.12 總結 / 022

第 2章 安裝Java和本書示例 / 023

2.1 編輯器 / 023

2.2 shell / 024

2.2.1 運行shell / 024

2.2.2 目錄(文件夾) / 025

2.2.3 shell基礎操作 / 025

2.3 安裝Java / 026

2.4 確認安裝成功 / 027

2.5 安裝和運行本書示例 / 028

Gradle基礎任務 / 028

第3章 對象無處不在 / 029

3.1 通過引用操作對象 / 030

3.2 必須創建所有對象 / 031

3.2.1 數據保存在哪裡 / 031

3.2.2 特殊情況:基本類型 / 032

3.2.3 Java中的數組 / 034

3.3 註釋 / 034

3.4 無須銷毀對象 / 035

3.4.1 作用域 / 035

3.4.2 對象的作用域 / 036

3.5 使用class關鍵字創建新類型 / 037

字段 / 037

3.6 方法、參數以及返回值 / 039

參數列表 / 039

3.7 編寫Java程序 / 041

3.7.1 名稱可見性 / 041

3.7.2 使用其他組件 / 042

3.7.3 static關鍵字 / 043

3.8 你的第 一個Java程序 / 045

編譯和運行 / 047

3.9 編程風格 / 048

3.10 總結 / 049

第4章 操作符 / 050

4.1 使用Java操作符 / 050

4.2 優先級 / 051

4.3 賦值 / 051

方法調用中的別名 / 053

4.4 算術操作符 / 054

一元加操作符和一元減操作符 / 055

4.5 自動遞增和自動遞減 / 056

4.6 關係操作符 / 057

測試對像是否相等 / 057

4.7 邏輯操作符 / 061

短路 / 062

4.8 字面量 / 063

4.8.1 字面量裡的下劃線 / 065

4.8.2 科學記數法(又稱“指數

記數法”) / 066

4.9 按位操作符 / 067

4.10 移位操作符 / 067

4.11 三元操作符 / 071

4.12 字符串操作符 和 = / 072

4.13 使用操作符時常犯的錯誤 / 073

4.14 類型轉換操作符 / 074

4.14.1 截尾和舍入 / 075

4.14.2 提升 / 076

4.15 Java沒有sizeof() / 076

4.16 操作符小結 / 076

4.17 總結 / 081

第5章 控制流 / 082

5.1 true和false / 082

5.2 if-else / 083

5.3 迭代語句 / 084

5.3.1 do-while / 085

5.3.2 for / 085

5.3.3 逗號操作符 / 086

5.4 for-in語法 / 087

5.5 return / 089

5.6 break和continue / 090

5.7 臭名昭著的goto / 091

5.8 switch / 095

5.9 字符串作為選擇器 / 096

5.10 總結 / 098

第6章 初始化和清理 / 099

6.1 用構造器保證初始化 / 100

6.2 方法重載 / 102

6.2.1 區分重載的方法 / 103

6.2.2 使用基本類型的重載 / 104

6.2.3 通過返回值區分重載方法 / 107

6.3 無參構造器 / 108

6.4 this關鍵字 / 109

6.4.1 在構造器中調用構造器 / 111

6.4.2 static的含義 / 112

6.5 清理:終結和垃圾收集 / 113

6.5.1 finalize()的作用 / 114

6.5.2 你必須執行清理 / 115

6.5.3 終止條件 / 115

6.5.4 垃圾收集器的工作原理 / 117

6.6 成員初始化 / 120

指定初始化 / 121

6.7 構造器初始化 / 122

6.7.1 初始化順序 / 123

6.7.2 靜態數據的初始化 / 124

6.7.3 顯式的靜態初始化 / 126

6.7.4 非靜態實例初始化 / 127

6.8 數組初始化 / 128

6.8.1 動態數組創建 / 129

6.8.2 可變參數列表 / 132

6.9 枚舉類型 / 136

6.10 新特性:局部變量類型

推斷 / 138

6.11 總結 / 140

第 7章 實現隱藏 / 141

7.1 package:庫單元 / 142

7.1.1 代碼組織 / 144

7.1.2 創建獨一無二的包名 / 145

7.1.3 定制工具庫 / 148

7.1.4 用import來改變行為 / 149

7.1.5 關於包的忠告 / 150

7.2 Java訪問權限修飾符 / 150

7.2.1 包訪問 / 150

7.2.2 public:接口訪問權限 / 151

7.2.3 private:你無法訪問它 / 153

7.2.4 protected:繼承訪問權限 / 154

7.2.5 包訪問權限與公共構造器 / 155

7.3 接口和實現 / 156

7.4 類的訪問權限 / 157

7.5 新特性:模塊 / 160

7.6 總結 / 162

第8章 復用 / 164

8.1 組合語法 / 165

8.2 繼承語法 / 167

初始化基類 / 169

8.3 委託 / 171

8.4 組合與繼承相結合 / 173

8.4.1 確保正確的清理 / 175

8.4.2 名稱隱藏 / 177

8.5 選擇組合還是繼承 / 178

8.6 protected關鍵字 / 180

8.7 向上轉型 / 181

再論組合與繼承 / 182

8.8 final關鍵字 / 182

8.8.1 final數據 / 183

8.8.2 final方法 / 186

8.8.3 final類 / 188

8.8.4 關於final的忠告 / 189

8.9 初始化及類的加載 / 190

繼承與初始化 / 190

8.10 總結 / 191

第9章 多態 / 193

9.1 再論向上轉型 / 194

忘記對像類型 / 195

9.2 難點 / 196

9.2.1 方法調用綁定 / 197

9.2.2 產生正確的行為 / 197

9.2.3 可擴展性 / 201

9.2.4 陷阱:“重寫”private

方法 / 203

9.2.5 陷阱:字段與靜態方法 / 205

9.3 構造器和多態 / 206

9.3.1 構造器的調用順序 / 206

9.3.2 繼承與清理 / 208

9.3.3 構造器內部的多態方法

行為 / 213

9.4 協變返回類型 / 215

9.5 用繼承進行設計 / 216

9.5.1 替換與擴展 / 217

9.5.2 向下轉型與反射 / 218

9.6 總結 / 220

第 10章 接口 / 221

10.1 抽像類和抽象方法 / 221

10.2 接口定義 / 226

10.2.1 默認方法 / 228

10.2.2 多重繼承 / 230

10.2.3 接口中的靜態方法 / 233

10.2.4 作為接口的Instrument / 234

10.3 抽像類與接口 / 236

10.4 完全解耦 / 237

10.5 組合多個接口 / 242

10.6 通過繼承來擴展接口 / 244

組合接口時的名稱衝突 / 245

10.7 適配接口 / 246

10.8 接口中的字段 / 249

初始化接口中的字段 / 249

10.9 嵌套接口 / 250

10.10 接口和工廠 / 252

10.11 新特性:接口的private

方法 / 255

10.12 新特性:密封類和密封

接口 / 256

10.13 總結 / 259

第 11章 內部類 / 260

11.1 創建內部類 / 261

11.2 到外部類的鏈接 / 262

11.3 使用.this和.new / 264

11.4 內部類和向上轉型 / 266

11.5 在方法和作用域中的內部類 / 267

11.6 匿名內部類 / 269

11.7 嵌套類 / 273

11.7.1 接口中的類 / 274

11.7.2 從多層嵌套的內部類中

訪問外部成員 / 275

11.8 為什麼需要內部類 / 276

11.8.1 閉包與回調 / 278

11.8.2 內部類與控制框架 / 281

11.9 繼承內部類 / 287

11.10 內部類可以被重寫嗎 / 287

11.11 局部內部類 / 289

11.12 內部類標識符 / 291

11.13 總結 / 291

第 12章 集合 / 292

12.1 泛型和類型安全的集合 / 293

新特性:類型推斷和泛型 / 296

12.2 基本概念 / 297

12.3 添加一組元素 / 298

12.4 打印集合 / 300

12.5 List / 302

12.6 Iterator / 306

ListIterator / 309

12.7 LinkedList / 310

12.8 Stack / 312

12.9 Set / 314

12.10 Map / 318

12.11 新特性:記錄(record)

類型 / 321

12.12 Queue / 325

PriorityQueue / 327

12.13 Collection和Iterator的

對比 / 328

12.14 for-in和迭代器 / 332

適配器方法慣用法 / 334

12.15 總結 / 338

第 13章 函數式編程 / 342

13.1 舊方式與新方式 / 344

13.2 lambda表達式 / 346

遞歸 / 348

13.3 方法引用 / 349

13.3.1 Runnable / 350

13.3.2 未綁定方法引用 / 351

13.3.3 構造器方法引用 / 353

13.4 函數式接口 / 354

13.4.1 帶有更多參數的函數式

接口 / 361

13.4.2 解決缺乏基本類型函數

式接口的問題 / 361

13.5 高階函數 / 363

13.6 閉包 / 364

內部類作為閉包 / 369

13.7 函數組合 / 370

13.8 柯里化和部分求值 / 372

13.9 純函數式編程 / 373

13.10 總結 / 374

第 14章 流 / 375

14.1 Java 8對流的支持 / 377

14.2 流的創建 / 378

14.2.1 隨機數流 / 379

14.2.2 int類型的區間範圍 / 382

14.2.3 generate() / 383

14.2.4 iterate() / 385

14.2.5 流生成器 / 385

14.2.6 Arrays / 386

14.2.7 正則表達式 / 387

14.3 中間操作 / 388

14.3.1 跟踪與調試 / 389

14.3.2 對流元素進行排序 / 389

14.3.3 移除元素 / 390

14.3.4 將函數應用於每個流

元素 / 390

14.3.5 在應用map()期間組

合流 / 392

14.4 Optional類型 / 395

14.4.1 便捷函數 / 397

14.4.2 創建Optional / 399

14.4.3 Optional對像上的操作 / 400

14.4.4 由Optional組成的流 / 404

14.5 終結操作 / 405

14.5.1 將流轉換為一個數組 / 405

14.5.2 在每個流元素上應用某個終結操作 / 406

14.5.3 收集操作 / 407

14.5.4 組合所有的流元素 / 410

14.5.5 匹配 / 411

14.5.6 選擇一個元素 / 412

14.5.7 獲得流相關的信息 / 413

14.6 小結 / 415

第 15章 異常 / 416

15.1 概念 / 417

15.2 基本的異常 / 418

異常參數 / 419

15.3 捕捉異常 / 420

15.3.1 try塊 / 420

15.3.2 異常處理程序 / 420

15.4 創建自己的異常 / 421

異常與日誌記錄 / 424

15.5 異常說明 / 427

15.6 捕捉任何異常 / 428

15.6.1 多重捕捉 / 430

15.6.2 棧軌跡 / 431

15.6.3 重新拋出異常 / 432

15.6.4 異常鏈 / 436

15.7 標準Java異常 / 439

特例:RuntimeException / 440

15.8 新特性:更好的NullPointerException

報告機制 / 441

15.9 使用finally執行清理 / 443

15.9.1 finally是乾什麼用的 / 444

15.9.2 在return期間使用

finally / 446

15.9.3 缺陷:異常丟失 / 447

15.10 異常的約束 / 449

15.11 構造器 / 452

15.12 try-with-resources語句 / 456

15.12.1 細節揭秘 / 459

15.12.2 新特性:try-with-resources中的實際

上的最終變量 / 463

15.13 異常匹配 / 464

15.14 其他可選方式 / 465

15.14.1 歷史 / 466

15.14.2 觀點 / 468

15.14.3 把異常傳遞到控制台 / 470

15.14.4 將“檢查型異常”轉換為

“非檢查型異常” / 470

15.15 異常使用指南 / 473

15.16 小結 / 473

附記 異常的奇異世界 / 474

第 16章 代碼校驗 / 476

16.1 測試 / 476

16.1.1 單元測試 / 477

16.1.2 測試覆蓋率的幻覺 / 481

16.2 前置條件 / 482

16.2.1 斷言 / 482

16.2.2 DbC 單元測試 / 488

16.2.3 使用Guava裡的前置

條件 / 495

16.3 測試驅動開發 / 498

測試驅動與測試優先 / 505

16.4 日誌 / 505

日誌級別 / 507

16.5 調試 / 508

16.5.1 使用JDB進行調試 / 508

16.5.2 圖形調試器 / 511

16.6 基準測試 / 511

16.6.1 微基準測試 / 512

16.6.2 介紹JMH / 514

16.7 分析與優化 / 520

優化指南 / 520

16.8 樣式檢查 / 521

16.9 靜態錯誤分析 / 521

16.10 代碼審查 / 521

16.11 結對編程 / 522

16.12 重構 / 522

重構的基礎 / 522

16.13 持續集成 / 523

16.14 總結 / 525

第 17章 文件 / 526

17.1 文件和目錄路徑 / 527

17.1.1 選擇Path的片段 / 530

17.1.2 分析Path / 531

17.1.3 添加或刪除路徑片段 / 532

17.2 目錄 / 533

17.3 文件系統 / 537

17.4 監聽Path / 538

17.5 查找文件 / 541

17.6 讀寫文件 / 543

17.7 小結 / 546

第 18章 字符串 / 547

18.1 不可變的字符串 / 547

18.2 重載 與StringBuilder / 548

18.3 無意識的遞歸 / 553

18.4 對字符串的操作 / 555

18.5 格式化輸出 / 556

18.5.1 printf() / 556

18.5.2 System.out.format() / 557

18.5.3 Formatter類 / 557

18.5.4 格式說明符 / 558

18.5.5 Formatter轉換 / 560

18.5.6 String.format() / 562

18.6 新特性:文本塊 / 563

18.7 正則表達式 / 565

18.7.1 基礎 / 566

18.7.2 創建正則表達式 / 569

18.7.3 量詞 / 571

18.7.4 Pattern和Matcher / 572

18.7.5 split() / 580

18.7.6 替換操作 / 580

18.7.7 reset() / 582

18.7.8 正則表達式和Java 

I/O / 583

18.8 掃描輸入 / 584

18.8.1 Scanner分隔符 / 586

18.8.2 使用正則表達式掃描 / 586

18.9 StringTokenizer / 587

18.10 總結 / 588

第 19章 反射 / 589

19.1 為什麼需要反射 / 589

19.2 Class對象 / 592

19.2.1 類字面量 / 596

19.2.2 泛型類的引用 / 598

19.2.3 cast()方法 / 602

19.3 轉型前檢查 / 603

19.3.1 使用類字面量 / 609

19.3.2 動態的instanceof / 611

19.3.3 遞歸計數 / 612

19.4 註冊工廠 / 614

19.5 Instanceof與Class的

等價性 / 616

19.6 運行時的類信息 / 618

類方法提取器 / 619

19.7 動態代理 / 621

19.8 使用Optional / 625

19.8.1 標籤接口 / 630

19.8.2 模擬對象和樁 / 633

19.9 接口和類型信息 / 633

19.10 總結 / 639

第 20章 泛型 / 641

20.1 和C 的對比 / 642

20.2 簡單泛型 / 643

20.2.1 元組庫 / 645

20.2.2 棧類 / 648

20.2.3 RandomList / 649

20.3 泛型接口 / 650

20.4 泛型方法 / 653

20.4.1 可變參數和泛型方法 / 654

20.4.2 通用Supplier / 655

20.4.3 簡化元組的使用 / 657

20.4.4 Set實用工具 / 658

20.5 構建複雜模型 / 663

20.6 類型擦除的奧秘 / 665

20.6.1 C 的實現方法 / 667

20.6.2 遷移的兼容性 / 669

20.6.3 類型擦除存在的問題 / 670

20.6.4 邊界的行為 / 672

20.7 對類型擦除的補償 / 676

20.7.1 創建類型實例 / 677

20.7.2 泛型數組 / 680

20.8 邊界 / 686

20.9 通配符 / 689

20.9.1 編譯器有多聰明? / 692

20.9.2 逆變性 / 694

20.9.3 無界通配符 / 696

20.9.4 捕獲轉換 / 705

20.10 問題 / 707

20.10.1 基本類型不可作為

類型參數 / 707

20.10.2 實現參數化接口 / 709

20.10.3 類型轉換和警告 / 709

20.10.4 重載 / 712

20.10.5 基類會劫持接口 / 712

20.11 自限定類型 / 714

20.11.1 奇異遞歸泛型 / 714

20.11.2 自限定 / 715

20.11.3 參數協變性 / 718

20.12 動態類型安全 / 721

20.13 異常 / 722

20.14 混型 / 724

20.14.1 C 中的混型 / 724

20.14.2 與接口混合 / 726

20.14.3 使用裝飾器模式 / 727

20.14.4 與動態代理混合 / 729

20.15 潛在類型機制 / 730

20.15.1 Python中的潛在類型

機制 / 731

20.15.2 C 中的潛在類型

機制 / 732

20.15.3 Go中的潛在類型

機制 / 733

20.15.4 Java中的直接潛在

類型機制 / 735

20.16 對於缺少(直接的)潛在類型機制的補償 / 736

20.16.1 反射 / 736

20.16.2 將方法應用於序列 / 737

20.17 Java 8中的輔助潛在類型

機制 / 741

使用Supplier的泛型方法 / 743

20.18 總結:轉型真的這麼糟糕嗎? / 745

延伸閱讀 / 747

第 21 章 數組 / 748

21.1 數組為何特殊 / 749

一個用於顯示數組的常用工具

程序 / 751

21.2 數組是一等對象 / 752

21.3 返回數組 / 755

21.4 多維數組 / 757

21.5 數組和泛型 / 761

21.6 Arrays.fill() / 764

21.7 Arrays.setAll() / 765

21.8 增量生成器 / 766

21.9 隨機數生成器 / 775

21.10 泛型和基本類型數組 / 783

21.11 修改已有的數組元素 / 787

21.12 關於數組並行 / 788

21.12.1 策略 / 789

21.12.2 parallelSetAll() / 789

21.13 數組實用工具 / 790

21.14 數組複製 / 791

21.15 數組比較 / 794

21.16 流和數組 / 795

21.17 數組排序 / 796

21.17.1 使用Arrays.sort() / 800

21.17.2 並行排序 / 801

21.18 用Arrays.binarySearch()進行二分查找 / 802

21.19 用parallelPrefix()進行累積計算 / 804

21.20 總結 / 806

補充內容 / 809

積極看待C 與Java的

遺產 / 810

《On Java 中文版 進階卷》 第 1章 枚舉類型 001

1.1 枚舉類型的基本特性 / 001

靜態導入枚舉類型 / 002

1.2 在枚舉類型中增加自定義方

法 / 003

重載枚舉類型中的方法 / 004

1.3 在switch語句中使用枚舉 / 005

1.4 values()方法的神秘之處 / 006

1.5 實現,而不是繼承 / 009

1.6 隨機選擇 / 010

1.7 使用接口來組織枚舉 / 011

1.8 用EnumSet來代替標識 / 015

1.9 使用EnumMap / 017

1.10 常量特定方法 / 018

1.10.1 用枚舉實現職責鏈模

式 / 023

1.10.2 用枚舉實現狀態機 / 027

1.11 多路分發 / 032

1.11.1 使用枚舉類型分發 / 034

1.11.2 使用常量特定方法 / 036

1.11.3 使用EnumMap分發 / 038

1.11.4 使用二維數組 / 039

1.12 支持模式匹配的新特性 / 041

1.13 新特性:switch中的箭頭語

法 / 041

1.14 新特性:switch中的case

null / 042

1.15 新特性:將switch作為表達

式 / 044

1.16 新特性:智能轉型 / 046

1.17 新特性:模式匹配 / 048

1.17.1 違反里氏替換原則 / 049

1.17.2 守衛 / 053

1.17.3 支配性 / 055

1.17.4 覆蓋範圍 / 057

1.18 總結 / 058

第 2章 對像傳遞和返回 060

2.1 傳遞引用 / 061

引用別名 / 061

2.2 創建本地副本 / 063

2.2.1 值傳遞 / 063

2.2.2 克隆對象 / 064

2.2.3 為類增加可克隆能力 / 065

2.2.4 成功的克隆 / 067

2.2.5 Object.clone()的效果 / 068

2.2.6 克隆組合對象 / 070

2.2.7 深拷貝ArrayList / 073

2.2.8 通過序列化進行深拷貝 / 074

2.2.9 在繼承層次結構中增加可克隆性並向下覆蓋 / 076

2.2.10 為什麼用這種奇怪的

設計 / 077

2.3 控制可克隆性 / 078

複製構造器 / 082

2.4 不可變類 / 086

2.4.1 創建不可變類 / 088

2.4.2 不可變性的缺點 / 089

2.4.3 String很特殊 / 091

2.5 總結 / 091

第3章 集合主題 093

3.1 樣例數據 / 093

3.2 List的行為 / 099

3.3 Set的行為 / 102

3.4 在Map上使用函數式操作 / 104

3.5 選擇Map的部分元素 / 105

3.6 填充集合 / 107

3.6.1 使用Suppliers來填充Collection / 108

3.6.2 使用Suppliers來填充

Map / 109

3.7 使用享元自定義Collection和Map / 112

3.8 Collection的功能 / 123

3.9 可選的操作 / 125

不支持的操作 / 127

3.10 Set與存儲順序 / 129

SortedSet / 132

3.11 Queue / 134

3.11.1 優先級隊列 / 135

3.11.2 Deque / 136

3.12 理解Map / 137

3.12.1 性能 / 139

3.12.2 SortedMap / 141

3.12.3 LinkedHashMap / 143

3.13 工具函數 / 144

3.13.1 List上的排序和

查找 / 147

3.13.2 創建不可修改的Collection或Map / 148

3.13.3 同步Collection或

Map / 150

3.14 持有引用 / 151

WeakHashMap / 154

3.15 Java 1.0/1.1的集合類 / 155

3.15.1 Vector和

Enumeration / 155

3.15.2 Hashtable / 156

3.15.3 Stack / 157

3.15.4 BitSet / 158

3.16 總結 / 160

第4章 註解 162

4.1 基本語法 / 163

4.1.1 定義註解 / 164

4.1.2 元註解 / 165

4.2 編寫註解處理器 / 166

4.2.1 註解元素 / 167

4.2.2 默認值的限制 / 168

4.2.3 生成外部文件 / 168

4.2.4 註解不支持繼承 / 172

4.2.5 實現處理器 / 172

4.3 用javac處理註解 / 174

4.3.1 最簡單的處理器 / 175

4.3.2 更複雜的處理器 / 178

4.4 基於註解的單元測試 / 182

4.4.1 在@Unit中使用泛型 / 190

4.4.2 實現@Unit / 192

4.5 總結 / 202

第5章 並發編程 203

5.1 令人迷惑的術語 / 204

並發的新定義 / 206

5.2 並發的超能力 / 207

5.3 並發為速度而生 / 209

5.4 Java並發四定律 / 211

5.4.1 不要使用並發 / 211

5.4.2 一切都不可信,一切都很

重要 / 212

5.4.3 能運行並不代表沒有

問題 / 212

5.4.4 你終究要理解並發 / 213

5.5 殘酷的事實 / 214

5.6 本章剩餘部分 / 216

5.7 並行流 / 218

5.7.1 parallel()並非靈丹妙

藥 / 219

5.7.2 parallel()和limit()的

作用 / 224

5.7.3 並行流只是看起來很簡

單 / 228

5.8 創建和運行任務 / 228

5.8.1 Task和Executor / 228

5.8.2 使用更多的線程 / 232

5.8.3 生成結果 / 234

5.8.4 作為任務的lambda與方法引用 / 236

5.9 終止長時間運行的任務 / 237

5.10 CompletableFuture / 240

5.10.1 基本用法 / 241

5.10.2 其他操作 / 244

5.10.3 合併多個Completable-Future / 247

5.10.4 模擬場景應用 / 251

5.10.5 異常 / 253

5.11 死鎖 / 259

5.12 構造器並不是線程安全的 / 264

5.13 工作量、複雜性、成本 / 268

5.14 總結 / 273

5.14.1 缺點 / 274

5.14.2 Java核心設計的失敗之

處 / 275

5.14.3 其他的庫 / 275

5.14.4 設想一種為並發而設計的語言 / 276

5.14.5 延伸閱讀 / 276

第6章 底層並發 277

6.1 什麼是線程? / 277

6.1.1 最佳線程數 / 279

6.1.2 我可以創建多少線程 / 280

6.2 捕獲異常 / 282

6.3 共享資源 / 286

6.3.1 資源競爭 / 286

6.3.2 解決資源競爭 / 290

6.3.3 將EvenProducer同步化 / 292

6.4 volatile關鍵字 / 293

6.4.1 字分裂 / 293

6.4.2 可見性 / 294

6.4.3 (指令)重排序和先行發

生 / 295

6.4.4 何時使用volatile / 296

6.5 原子性 / 296

6.5.1 Josh的序列號 / 300

6.5.2 原子類 / 303

6.6 臨界區 / 304

6.6.1 在其他對像上進行同步 / 307

6.6.2 使用顯式Lock對象 / 308

6.7 庫組件 / 310

6.7.1 延遲隊列DelayQueue / 311

6.7.2 優先級阻塞隊列Priority-BlockingQueue / 313

6.7.3 無鎖集合 / 316

6.8 總結 / 317

第7章 Java I/O系統 319

7.1 I/O流 / 319

7.1.1 各種InputStream類型 / 321

7.1.2 各種OutputStream類型 / 321

7.1.3 添加屬性和有用的接口 / 322

7.1.4 各種Reader和Writer / 324

7.1.5 自成一家的Random-AccessFile / 327

7.1.6 I/O流的典型用法 / 328

7.1.7 小結 / 335

7.2 標準I/O / 335

7.2.1 從標準輸入中讀取 / 336

7.2.2 將System.out轉換為PrintWriter / 336

7.2.3 標準I/O重定向 / 337

7.2.4 進程控制 / 338

7.3 新I/O系統 / 340

7.3.1 字節緩衝區ByteBuffer / 340

7.3.2 轉換數據 / 344

7.3.3 獲取基本類型 / 347

7.3.4 視圖緩衝區 / 348

7.3.5 用緩衝區操縱數據 / 352

7.3.6 內存映射文件 / 357

7.3.7 文件加鎖 / 361

第8章 設計模式 364

8.1 設計模式的概念 / 364

8.2 單例模式 / 366

8.3 設計模式的分類 / 370

8.4 模板方法 / 370

8.5 封裝實現 / 371

8.5.1 代理模式 / 372

8.5.2 狀態模式 / 373

8.5.3 狀態機模式 / 376

8.6 工廠模式:封裝對象的創建 / 377

8.6.1 動態工廠模式 / 380

8.6.2 多態工廠模式 / 381

8.6.3 抽象工廠模式 / 382

8.7 函數對像模式 / 384

8.7.1 命令模式 / 385

8.7.2 策略模式 / 386

8.7.3 職責鏈模式 / 388

8.8 改變接口 / 391

8.8.1 適配器模式 / 391

8.8.2 外觀模式 / 392

8.9 解釋器模式:運行時的靈活

性 / 394

8.10 回調 / 394

8.10.1 觀察者模式 / 394

8.10.2 示例:觀察花朵 / 395

8.10.3 一個可視化的觀察者示

例 / 398

8.11 多路分發 / 401

8.12 模式重構 / 405

8.12.1 Trash和它的子類 / 405

8.12.2 信使對象 / 410

8.12.3 使工廠通用化 / 411

8.12.4 從文件解析Trash / 412

8.12.5 用DynaFactory實現回

收 / 415

8.12.6 將用法抽象化 / 416

8.12.7 用多路分發重新設計 / 420

8.12.8 訪問者模式 / 427

8.12.9 反射是有害的? / 431

8.13 總結 / 435

編程指南 / 436

Javadoc / 446

理解equals()和hashCode() / 451

數據壓縮 / 475

對象序列化 / 481

靜態類型檢查的利與弊 / 505

媒體評論:


On Java 8 的中譯版措辭精準,如實還原原作神韻。 Bruce Eckel深入淺出地講解了Java語言的設計原理,值得所有Java開發者一讀,尤其推薦給剛入行不久的Java開發者,因為本書能夠清晰地解答他們在業務開發過程中遇到的諸多疑問。

——周經森(Kingsum Chow),阿里CTO線研究員,JCP執行委員會委員

時至今日,Java這門企業級應用語言已走過26個年頭,2014年發布的Java 8無疑是Java技術演進歷史上的里程碑事件。 《On Java 中文版》是Bruce Eckel時隔15年,繼Thinking in Java之後的又一力作,基於Java 8,同時增加了Java 11 、17的相關內容,結合大量的源碼實例,講解了各種設計原理與實現權衡,使讀者知其然而後知其所以然,很適合各個層次的Java開發者閱讀。

——李三紅,Java Champion,阿里雲程序語言與編譯器技術總監

市面上講Java編程的書有很多,《On Java 中文版》是其中較為獨特的一本“入門”書。初讀可能會被它的篇幅和稍顯晦澀的內容中途勸退,但如果有勇氣重讀,一定會從中受益。本書全面系統地介紹了Java核心知識,更重要的是,從編程語言設計的獨特視角,以產業實踐的得失為鑑,讓讀者不僅掌握體系化的知識點,而且能夠切身體會軟件設計的哲學與方法。透過現像看本質的能力一定程度上決定了職場高度,相信本書同樣可成為Java開發者職場進階的有效助力,值得不同階段的開發者反复翻閱。

除以上,針對書中作者的某一觀點,我持保留態度。今天的互聯網大廠無一例外,所構建的Java應用規模都是超出想像的,絕不能用“普遍”“簡單”來解釋,其中的生產力和擴展性等核心能力是不可替代的。

—— 楊曉峰,Tencent JDK負責人

相信很多Java開發者都是通過閱讀Bruce Eckel的經典書Thinking in Java,學會並愛上Java語言的。 《On Java 中文版》這本書全面講解了Java語言的精要所在,很高興看到Bruce向書中補充了從 Java 9 到 Java 17 的新語言特性,完整呈現了Java語言的相關重點內容。這本書既涉及函數化編程、模塊化技術、變量類型推斷,也涉及record記錄、sealed密封類和接口等新內容。邊閱讀、邊調試代碼、邊思考設計原理和實現方式,Java這杯咖啡讓人陶醉。

——張建鋒,永源中間件總經理

十年前,當我還是實習生的時候有幸拜讀了本書作者寫的Thinking in Java。由於書很厚,我和一位同事還將書撕成三份,一份放在公司看,一份放在家裡看,還有一份隨身帶著看,反复詳讀不下三遍。萬丈高樓平地起,我一直認為夯實基礎是剛入行幾年的開發者最重要的事情!十年之後,Java經歷了JDK6、7、8和9等多個版本的演進,本書與時俱進地增加了函數式編程、流和反射等JDK新特性。

——方騰飛,螞蟻集團高級技術專家,《Java並發編程的藝術》作者

1608384496965923.jpg

On Java 中文版套裝:基礎卷+進階卷(套裝共2冊)
NT$1900
最新訂購
  • 新竹張**[0968***737]

    7分鐘前On Java 中文版套裝:基礎卷+進階卷(套裝共2冊) - On Java 中文版套裝:基礎卷+進階卷(套裝共2冊)

  • 臺中劉**[0960***963]

    7分鐘前On Java 中文版套裝:基礎卷+進階卷(套裝共2冊) - On Java 中文版套裝:基礎卷+進階卷(套裝共2冊)

  • 基隆黃**[0968***626]

    25分鐘前On Java 中文版套裝:基礎卷+進階卷(套裝共2冊) - On Java 中文版套裝:基礎卷+進階卷(套裝共2冊)

  • 臺中周**[0988***591]

    5分鐘前On Java 中文版套裝:基礎卷+進階卷(套裝共2冊) - On Java 中文版套裝:基礎卷+進階卷(套裝共2冊)

  • 嘉義張**[0956***993]

    半小時前On Java 中文版套裝:基礎卷+進階卷(套裝共2冊) - On Java 中文版套裝:基礎卷+進階卷(套裝共2冊)

  • 桃園符**[0920***365]

    25分鐘前On Java 中文版套裝:基礎卷+進階卷(套裝共2冊) - On Java 中文版套裝:基礎卷+進階卷(套裝共2冊)

  • 臺北鄭**[0946***777]

    20分鐘前On Java 中文版套裝:基礎卷+進階卷(套裝共2冊) - On Java 中文版套裝:基礎卷+進階卷(套裝共2冊)

  • 嘉義吳**[0932***219]

    20分鐘前On Java 中文版套裝:基礎卷+進階卷(套裝共2冊) - On Java 中文版套裝:基礎卷+進階卷(套裝共2冊)

  • 桃園趙**[0920***790]

    15分鐘前On Java 中文版套裝:基礎卷+進階卷(套裝共2冊) - On Java 中文版套裝:基礎卷+進階卷(套裝共2冊)

  • 桃園李**[0966***448]

    15分鐘前On Java 中文版套裝:基礎卷+進階卷(套裝共2冊) - On Java 中文版套裝:基礎卷+進階卷(套裝共2冊)

  • 基隆趙**[0951***284]

    4分鐘前On Java 中文版套裝:基礎卷+進階卷(套裝共2冊) - On Java 中文版套裝:基礎卷+進階卷(套裝共2冊)

  • 嘉義周**[0978***186]

    15分鐘前On Java 中文版套裝:基礎卷+進階卷(套裝共2冊) - On Java 中文版套裝:基礎卷+進階卷(套裝共2冊)

  • 桃園符**[0951***833]

    7分鐘前On Java 中文版套裝:基礎卷+進階卷(套裝共2冊) - On Java 中文版套裝:基礎卷+進階卷(套裝共2冊)

  • 臺中柳**[0920***194]

    11分鐘前On Java 中文版套裝:基礎卷+進階卷(套裝共2冊) - On Java 中文版套裝:基礎卷+進階卷(套裝共2冊)

  • 臺北李**[0938***980]

    2分鐘前On Java 中文版套裝:基礎卷+進階卷(套裝共2冊) - On Java 中文版套裝:基礎卷+進階卷(套裝共2冊)

  • 臺北王**[0968***143]

    4分鐘前On Java 中文版套裝:基礎卷+進階卷(套裝共2冊) - On Java 中文版套裝:基礎卷+進階卷(套裝共2冊)

  • 新竹朱**[0998***846]

    5分鐘前On Java 中文版套裝:基礎卷+進階卷(套裝共2冊) - On Java 中文版套裝:基礎卷+進階卷(套裝共2冊)

  • 新北劉**[0938***760]

    4分鐘前On Java 中文版套裝:基礎卷+進階卷(套裝共2冊) - On Java 中文版套裝:基礎卷+進階卷(套裝共2冊)

  • 高雄孫**[0951***236]

    20分鐘前On Java 中文版套裝:基礎卷+進階卷(套裝共2冊) - On Java 中文版套裝:基礎卷+進階卷(套裝共2冊)

  • 桃園仲**[0946***233]

    7分鐘前On Java 中文版套裝:基礎卷+進階卷(套裝共2冊) - On Java 中文版套裝:基礎卷+進階卷(套裝共2冊)

  • 基隆周**[0933***647]

    2分鐘前On Java 中文版套裝:基礎卷+進階卷(套裝共2冊) - On Java 中文版套裝:基礎卷+進階卷(套裝共2冊)

  • 嘉義吳**[0960***365]

    25分鐘前On Java 中文版套裝:基礎卷+進階卷(套裝共2冊) - On Java 中文版套裝:基礎卷+進階卷(套裝共2冊)

  • 基隆鍾**[0986***903]

    7分鐘前On Java 中文版套裝:基礎卷+進階卷(套裝共2冊) - On Java 中文版套裝:基礎卷+進階卷(套裝共2冊)

  • 新北楊**[0998***458]

    2分鐘前On Java 中文版套裝:基礎卷+進階卷(套裝共2冊) - On Java 中文版套裝:基礎卷+進階卷(套裝共2冊)

  • 高雄孫**[0932***157]

    2分鐘前On Java 中文版套裝:基礎卷+進階卷(套裝共2冊) - On Java 中文版套裝:基礎卷+進階卷(套裝共2冊)

  • 臺中鄭**[0946***587]

    25分鐘前On Java 中文版套裝:基礎卷+進階卷(套裝共2冊) - On Java 中文版套裝:基礎卷+進階卷(套裝共2冊)

  • 臺南方**[0966***417]

    15分鐘前On Java 中文版套裝:基礎卷+進階卷(套裝共2冊) - On Java 中文版套裝:基礎卷+進階卷(套裝共2冊)

  • 新北鍾**[0946***562]

    2分鐘前On Java 中文版套裝:基礎卷+進階卷(套裝共2冊) - On Java 中文版套裝:基礎卷+進階卷(套裝共2冊)

  • 新竹楊**[0978***899]

    半小時前On Java 中文版套裝:基礎卷+進階卷(套裝共2冊) - On Java 中文版套裝:基礎卷+進階卷(套裝共2冊)

  • 臺南符**[0998***944]

    4分鐘前On Java 中文版套裝:基礎卷+進階卷(套裝共2冊) - On Java 中文版套裝:基礎卷+進階卷(套裝共2冊)

  • 臺南符**[0938***527]

    11分鐘前On Java 中文版套裝:基礎卷+進階卷(套裝共2冊) - On Java 中文版套裝:基礎卷+進階卷(套裝共2冊)

  • 臺南符**[0933***667]

    15分鐘前On Java 中文版套裝:基礎卷+進階卷(套裝共2冊) - On Java 中文版套裝:基礎卷+進階卷(套裝共2冊)

  • 新北楊**[0998***467]

    15分鐘前On Java 中文版套裝:基礎卷+進階卷(套裝共2冊) - On Java 中文版套裝:基礎卷+進階卷(套裝共2冊)

  • 臺中楊**[0978***117]

    4分鐘前On Java 中文版套裝:基礎卷+進階卷(套裝共2冊) - On Java 中文版套裝:基礎卷+進階卷(套裝共2冊)

  • 新北周**[0946***970]

    2分鐘前On Java 中文版套裝:基礎卷+進階卷(套裝共2冊) - On Java 中文版套裝:基礎卷+進階卷(套裝共2冊)

  • 臺中趙**[0960***743]

    2分鐘前On Java 中文版套裝:基礎卷+進階卷(套裝共2冊) - On Java 中文版套裝:基礎卷+進階卷(套裝共2冊)

  • 嘉義趙**[0920***653]

    5分鐘前On Java 中文版套裝:基礎卷+進階卷(套裝共2冊) - On Java 中文版套裝:基礎卷+進階卷(套裝共2冊)

  • 臺中張**[0988***242]

    5分鐘前On Java 中文版套裝:基礎卷+進階卷(套裝共2冊) - On Java 中文版套裝:基礎卷+進階卷(套裝共2冊)

  • 臺北李**[0920***374]

    12分鐘前On Java 中文版套裝:基礎卷+進階卷(套裝共2冊) - On Java 中文版套裝:基礎卷+進階卷(套裝共2冊)

  • 新竹鄭**[0978***178]

    15分鐘前On Java 中文版套裝:基礎卷+進階卷(套裝共2冊) - On Java 中文版套裝:基礎卷+進階卷(套裝共2冊)

  • 臺北方**[0932***564]

    25分鐘前On Java 中文版套裝:基礎卷+進階卷(套裝共2冊) - On Java 中文版套裝:基礎卷+進階卷(套裝共2冊)

  • 基隆方**[0978***333]

    12分鐘前On Java 中文版套裝:基礎卷+進階卷(套裝共2冊) - On Java 中文版套裝:基礎卷+進階卷(套裝共2冊)

  • 基隆趙**[0920***222]

    7分鐘前On Java 中文版套裝:基礎卷+進階卷(套裝共2冊) - On Java 中文版套裝:基礎卷+進階卷(套裝共2冊)

  • 臺南吳**[0920***788]

    15分鐘前On Java 中文版套裝:基礎卷+進階卷(套裝共2冊) - On Java 中文版套裝:基礎卷+進階卷(套裝共2冊)

  • 臺中錢**[0968***936]

    半小時前On Java 中文版套裝:基礎卷+進階卷(套裝共2冊) - On Java 中文版套裝:基礎卷+進階卷(套裝共2冊)

  • 臺中鍾**[0968***841]

    15分鐘前On Java 中文版套裝:基礎卷+進階卷(套裝共2冊) - On Java 中文版套裝:基礎卷+進階卷(套裝共2冊)

  • 新北謝**[0920***271]

    25分鐘前On Java 中文版套裝:基礎卷+進階卷(套裝共2冊) - On Java 中文版套裝:基礎卷+進階卷(套裝共2冊)

  • 桃園鄭**[0946***572]

    25分鐘前On Java 中文版套裝:基礎卷+進階卷(套裝共2冊) - On Java 中文版套裝:基礎卷+進階卷(套裝共2冊)

  • 高雄謝**[0956***755]

    4分鐘前On Java 中文版套裝:基礎卷+進階卷(套裝共2冊) - On Java 中文版套裝:基礎卷+進階卷(套裝共2冊)

  • 基隆孫**[0960***632]

    4分鐘前On Java 中文版套裝:基礎卷+進階卷(套裝共2冊) - On Java 中文版套裝:基礎卷+進階卷(套裝共2冊)

您可能會喜歡