Effective Java (第3版 英文版)

約書亞·布洛克(Joshua Bloch)

  • 出版商: 人民郵電
  • 出版日期: 2024-02-01
  • 定價: $599
  • 售價: 8.5$509
  • 語言: 簡體中文
  • 頁數: 376
  • ISBN: 7115628998
  • ISBN-13: 9787115628992
  • 相關分類: Java 程式語言英文 English
  • 已絕版

  • Effective Java (第3版 英文版)-preview-1
  • Effective Java (第3版 英文版)-preview-2
Effective Java (第3版 英文版)-preview-1

相關主題

商品描述

本書是經典Jolt獲獎作品《Effective Java》的第3版,對上一版進行了系統更新,涵蓋了從Java 5到Java 9的種種特性,是Java開發人員不可缺少的一本參考書。

本書分為12章,包含90個條目,形式簡潔。每個條目中都講述了對Java的獨到見解,闡明瞭如何編寫高效、優雅的程序,並且提供了清晰、易懂的示例代碼。與上一版相比,本書增加了Lambda表達式、流、Optional類、接口默認方法、try-with-resources、@SafeVarargs註解、模塊等Java 7及以後所引入的新特性。本書介紹瞭如何充分利用泛型、枚舉、註解、自動裝箱、for-each循環、可變參數、並發機制等各種特性,幫助讀者更加有效地使用Java編程語言及其基本類庫:java.lang、java.util和java.io,以及子包,如java.util.concurrent和java.util.function等。

本書並非面向Java初學者,而是要求讀者有一定的Java編程經驗。對於在Java開發方面已經積累一定經驗的讀者而言,本書可以幫助其更深入地理解Java編程語言,以成為更卓越、高效的Java開發人員。

作者簡介

约书亚·布洛克(Joshua Bloch)是美国卡内基-梅隆大学教授,曾是Google公司首席Java架构师、Sun公司杰出工程师和Transarc公司高级系统设计师。他带领团队设计和实现过无数的Java平台特性,包括JDK 5.0语言增强版和获奖的Java Collections Framework。他拥有哥伦比亚大学的计算机科学学士学位和卡内基-梅隆大学的计算机科学博士学位。他的著作还包括Java Puzzlers和《Java并发编程实战》(Java Concurrency in Practice,曾获Jolt大奖提名)等。

目錄大綱

目錄

序言 6

前言 7

第3版前言 7

第 2版前言 7

第 1版前言 8

致謝 9

第3版致謝 9

第 2版致謝 10

第 1版致謝 11

第 1章 引言 13

第 2章 創建和銷毀對象 16

條目1:用靜態工廠方法代替構造器 16

條目2:當構造器參數較多時考慮使用生成器 19

條目3:利用private構造器或枚舉類型實現單件 26

條目4:利用private構造器防止類被實例化 28

條目5:優先考慮通過依賴註入來連接資源 29

條目6:避免創建不必要的對象 31

條目7:清除過期的對象引用 34

條目8:避免使用終結方法和清理方法 36

條目9:與try-finally相比,首選try-with-resources 41

第3章 所有對象通用的方法 44

條目10:在重寫equals方法時要遵守通用約定 44

條目11:重寫equals方法時應該總是重寫hashCode方法 55

條目12:總是重寫toString方法 59

條目13:謹慎重寫clone方法 61

條目14:考慮實現Comparable接口 68

第4章 類和接口 74

條目15:最小化類和成員的可訪問性 74

條目16:在公開類中,使用訪問方法,而不使用public的字段 77

條目17:使可變性最小化 79

條目18:組合優先於繼承 85

條目19:要麽為繼承而設計並提供文檔說明;要麽就禁止繼承 90

條目20:與抽象類相比,優先選擇接口 95

條目21:為傳諸後世而設計接口 99

條目22:接口僅用於定義類型 101

條目23:優先使用類層次結構而不是標記類 102

條目24:與非靜態成員類相比,優先選擇靜態成員類 105

條目25:限制在一個源文件中放一個頂層類 107

第5章 泛型 109

條目26:不要使用原始類型 110

條目27:消除unchecked類型的警告 114

條目28:列表優先於數組 116

條目29:首選泛型類型 120

條目30:首選泛型方法 124

條目31:使用有限制的通配符增加API的靈活性 128

條目32:謹慎混用泛型和可變參數 133

條目33:考慮類型安全的異構容器 137

第6章 枚舉和註解 142

條目34:使用enum代替int常量 142

條目35:使用實例字段代替序號 152

條目36:使用EnumSet代替位域 153

條目37:不要以序號作為索引,使用EnumMap代替 154

條目38:使用接口模擬可擴展的枚舉 159

條目39:與命名模式相比首選註解 162

條目40:始終使用Override註解 169

條目41:使用標記接口來定義類型 171

第7章 Lambda表達式和流 173

條目42:與匿名類相比,優先選擇Lambda表達式 173

條目43:與Lambda表達式相比,優先選擇方法引用 176

條目44:首選標準的函數式接口 178

條目45:審慎地使用流 181

條目46:在流中首選沒有副作用的函數 187

條目47:作為返回類型時,首選集合類而不是流 191

條目48:將流並行化時要謹慎 196

第8章 方法 200

條目49:檢查參數的有效性 200

條目50:必要時進行保護性拷貝 203

條目51:仔細設計方法簽名 207

條目52:謹慎使用重載 208

條目53:謹慎使用可變參數 214

條目54:返回空的集合或數組,而不是null 215

條目55:謹慎返回Optional 217

條目56:為所有導出的API元素編寫文檔註釋 221

第9章 通用編程 227

條目57:最小化局部變量的作用域 227

條目58:與傳統的for循環相比,首選for-each循環 230

條目59:瞭解並使用庫 232

條目60:如果需要精確的答案,避免使用float和double 235

條目61:首選基本類型,而不是其封裝類 237

條目62:如果其他類型更適合,就不要使用字符串 239

條目63:註意字符串連接操作的性能 241

條目64:通過接口來引用對象 242

條目65:與反射相比,首選接口 244

條目66:謹慎使用本地方法 246

條目67:謹慎進行優化 247

條目68:遵循普遍接受的命名慣例 249

第 10章 異常 253

條目69:異常機制應該僅用於異常的情況 253

條目70:對於可恢復的條件,使用檢查型異常;對於編程錯誤,使用運行時異常 255

條目71:避免不必要地使用檢查型異常 256

條目72:優先使用標準異常 258

條目73:拋出適合於當前抽象的異常 260

條目74:將每個方法拋出的所有異常都寫在文檔中 261

條目75:將故障記錄信息包含在詳細信息中 263

條目76:努力保持故障的原子性 264

條目77:不要忽略異常 266

第 11章 並發 267

條目78:同步對共享可變數據的訪問 267

條目79:避免過度同步 271

條目80:與線程相比,首選執行器、任務和流 276

條目81:與wait和notify相比,首選高級並發工具 278

條目82:將線程安全性寫在文檔中 282

條目83:謹慎使用惰性初始化 285

條目84:不要依賴線程調度器 287

第 12章 序列化 290

條目85:優先選擇其他序列化替代方案 290

條目86:在實現Serializable接口時要特別謹慎 293

條目87:考慮使用自定義的序列化形式 295

條目88:防禦性地編寫readObject方法 301

條目89:對於實例受控的類,首選枚舉類型而不是readResolve 306

條目90:考慮使用序列化代理代替序列化實例 310

附錄 與第 2版中條目的對應關系 314

參考文獻 317