本書介紹了在Java編程中78條具有實用價值的經驗規則,這些經驗規則涵蓋了大多數開發人員每天所面臨的問題的解決方案。通過對Java平臺設計專家所使用的技術的描述,揭示了應該做什么,不應該做什么才能產生清晰、健壯和高效的代碼。
本書中的每條規則都以簡短、獨立的小文章形式出現,并通過例子代碼加以進一步說明。本書內容,結構清晰,講解詳細。可作為技術人員的參考用書。
相關閱讀>>>
Effective Python:編寫高質量Python代碼的59個有效方法
Effective Ruby:改善Ruby程序的48條建議
“我很希望10年前就擁有這本書。可能有人認為我不需要任何Java方面的書籍,但是我需要這本書。”
——Java之父James Gosling
編碼平添樂趣,程序更加,高效成為習慣,工作如此輕松。
你是否正在尋找一本能夠更加深入地了解Java編程語言的書,以便編寫出更清晰、更正確、更健壯且更易于重用的代碼。不用找了!本書為我們帶來了共78條程序員必備的經驗法則,針對你每天都會遇到的編程問題提出了有效、實用的解決方案。
這本經典Jolt獲獎作品實屬眾望所歸。作者對新版進行了徹底的更新。涵蓋了自第l版之后所引入的Java E5和Java SE 6的特性,同時開發了新的設計模式和語言習慣用法,介紹了如何充分利用從泛型到枚舉、從注解到自動裝箱的各種特性。
書中的每一章都包含幾個“條目”,以簡潔的形式呈現,自成獨立的短文,它們提出了具體的建議,對于Java平臺精妙之處的獨到見解,以及的代碼范例。每個條目的綜合描述和解釋都闡明了應該怎么做,不應該怎么做,以及為什么。
本書的內容包括:
全新的泛型、枚舉、注解、自動裝箱、fof-each循環、可變參數、并發機制,等等。
經典主題的全新技術和實踐,包括對象.類、類庫、方法和序列化。
如何避免Java編程語言中常被誤解的細微之處:陷阱和缺陷。
重點關注Java語言本身和基本的類庫及其擴展java.langjava.utiljava.util.concurrent和java.io。
Joshua Bloch是Google公司的首席Java架構師。是Jolt大獎的獲得者。他曾是Sun公司的杰出工程師,和Transarc公司的高級系統設計師。Bloch曾帶領團隊設計和實現過無數的Java平臺特性,包括JDK 5.0語言增強版和獲獎的Java Collections Framework。他的著作還包括:《Java Puzzler
譯者序
序
前言
致謝
第1章 引言
第2章 創建和銷毀對象
第1條:考慮用靜態工廠方法代替構造器
第2條:遇到多個構造器參數時要考慮用構建器
第3條:用私有構造器或者枚舉類型強化Singleton屬性
第4條:通過私有構造器強化不可實例化的能力
第5條:避免創建不必要的對象
第6條:消除過期的對象引用
第7條:避免使用終結函數
第3章 對于所有對象都通用的方法
第8條:改寫equals時請遵守通用約定
第9條:改寫equals時總要改寫hashCode
第10條:始終要改寫toString
第11條:謹慎地改寫clone
第12條:考慮實現Comparable接口
第4章 類和接口
第13條:使類和成員的可訪問性最小化
第14條:在公有類中使用訪問方法而非公有域
第15條:使非可變性最小化
第16條:復合優先于繼承
第17條:要么為繼承而設計,并提供文檔說明,要么就禁止繼承
第18條:接口優于抽象類
第19條:接口只用于定義類型
第20條:類層次優于標簽類
第21條:用函數對象表示策略
第22條:優先考慮靜態成員類
第5章 泛型
第23條:請不要在新代碼中使用原生態類型
第24條:消除非受檢警告
第25條:列表優先于數組
第26條:優先考慮泛型
第27條:優先考慮泛型方法
第28條:利用有限制通配符來提升API的靈活性
第29條:優先考慮類型安全的異構容器
第6章 枚舉和注解
第30條:用enum代替int常量
第31條:用實例域代替序數
第32條:用EnumSet代替位域
第33條:用EnumMap代替序數索引
第34條:用接口模擬可伸縮的枚舉
第35條:注解優先于命名模式
第36條:堅持使用Override注解
第37條:用標記接口定義類型
第7章 方法
第38條:檢查參數的有效性
第39條:必要時進行保護性拷貝
第40條:謹慎設計方法簽名
第41條:慎用重載
第42條:慎用可變參數(varargs)
第43條:返回零長度的數組或者集合,而不是null
第44條:為所有導出的API元素編寫文檔注釋
第8章 通用程序設計
第45條:將局部變量的作用域最小化
第46條:for-each循環優先于傳統的for循環
第47條:了解和使用類庫
第48條:如果需要的答案,請避免使用float和double
第49條:原語類型優先于裝箱的原語類型
第50條:如果其他類型更適合,則盡量避免使用字符串
第51條:了解字符串連接的性能
第52條:通過接口引用對象
第53條:接口優先于反射機制
第54條:謹慎地使用本地方法
第55條:謹慎地進行優化
第56條:遵守普遍接受的命名慣例
第9章 異常
第57條:只針對異常的條件才使用異常
第58條:對可恢復的條件使用受檢異常,對編程錯誤使用運行時異常
第59條:避免不必要地使用受檢的異常
第60條:盡量使用標準的異常
第61條:拋出與抽象相對應的異常
第62條:每個方法拋出的所有異常都要有文檔
第63條:在細節消息中包含失敗-捕獲信息
第64條:努力使失敗保持原子性
第65條:不要忽略異常
第10章 并發
第66條:同步訪問共享的可變數據
第67條:避免過多同步
第68條:executor和task優先于線程
第69條:并發工具優先于wait和notify
第70條:線程安全性的文檔化
第71條:慎用延遲初始化
第72條:不要依賴于線程調度器
第73條:避免使用線程組
第11章 序列化
第74條:謹慎地實現Serializable
第75條:考慮使用自定義的序列化形式
第76條:保護性地編寫readObject方法
第77條:對于實例控制,枚舉類型優先于readResolve
第78條:考慮用序列化代替序列化實例
第2章 創建和銷毀對象
第4條:通過私有構造器強化不可實例化的能力
有時候,你可能需要編寫只包含靜態方法和靜態域的類。這些類的名聲很不好,因為有些人在面向對象的語言中濫用這樣的類來編寫過程化的程序。盡管如此,它們也確實有它們特有的用處。我們可以利用這種類,以java.1ang.Math或者java.util.Arrays的方式,把基本類型的值或者數組類型上的相關方法組織起來。我們也可以通過java.util.Collections的方式,把實現特定接口的對象上的靜態方法(包括工廠方法,見第1條)組織起來。,還可以利用這種類把final類上的方法組織起來,以取代擴展該類的做法。
這樣的工具類(utility class)不希望被實例化,實例對它沒有任何意義。然而,在缺少顯式構造器的情況下,編譯器會自動提供一個公有的、無參的缺省構造器(default constructor)。對于用戶而言,這個構造器與其他的構造器沒有任何區別。在已發行的API中常常可以看到一些被無意識地實例化的類。
企圖通過將類做成抽象類來強制該類不可被實例化,這是行不通的。該類可以被子類化,并且該子類也可以被實例化。這樣做甚至會誤導用戶,以為這種類是專門為了繼承而設計的(見第17條)。然而,有一些簡單的習慣用法可以確保類不可被實例化。由于只有當類不包含顯式的構造器時,編譯器才會生成缺省的構造器,因此我們只要讓這個類包含私有構造器,它就不能被實例化了。
……
當當越來越用心了。送來的書外面都有一層薄膜 ,這樣不會弄花書了。
這是一本被Java之父看好的書,而且講解的知識都是Java開發中常用切重點的東西,要想成為合格的出色Java工程師,還真的不得不看!
書本身紙張質量不錯的,內容還沒看,快遞很快,昨天晚上下單,今天中午拿到的。當場拆開驗證的然后付款的!!
很好的書 但是和引言說的一樣 可能有些內容只有在真正進行開發之后才會有所考慮
程序語言的基礎,對于深入了解java體系有很大的幫助,細節成就一切,對細節了解越多,才能對原理理解越深
java的經典書籍,很重要,里面的知識點再寫代碼時需要考慮。非常實用的工具書
EFFECTIVE JAVA中文版(第2版)象引用 第條:避免使用終結函U數第章對于所有R對象都通用的方法 第條:改寫時請遵守通用約定
定義類型 10第K條:類層次優于標簽類 第條:用函數對象表示策略 第條:優先考慮靜態成員類第章泛型F 第條:EFFECTIVE
東西挺好的,但就是快遞很不給力,當當的快遞需要改進的地方太多了,你們的客戶為什么流失的多,有很大一部分原因是你們的物流,什么如風達,飛遠,能不能用點有名氣的快遞???
不得不承認,這本書寫的很深入,看到了平時不知道的好多的java方面的知識,即使工作很長時間的人也不一定了解,不錯!
本書內容第一次看,好像應該是一本初學者使用的介紹性書籍。但是當我閱讀完第二遍的時候,我發現在淺顯的文字描述中有很多需要深思的地方。結合在實際工作過程中思考的問題,有一種茅塞頓開的感覺。
Effective Java 一書是我在學習JAVA中覺得非常有用,非常好用的一本書,其中的內容對于“現實”中的編程有著非常重要的借鑒作用。但讀此書需要對編程算法等有一定的基礎。很不錯的一本書。
“我很希望10年前就擁有這本書。可能有人認為我不需要任何java方面的書籍,但是我需要這本書”java之父james gosling之言。我在10年擁有了這本書,讓我對java有了更深的認識,推薦大家品讀這本書
這個是java進階手冊,幫助程序員更好的寫出高效,健壯代碼的好書
針對的是java1.5 1.6進行的講解,雖然不是最新版的java,但對于java編程確實有提升,給出了很多java編程的建議,吸收消化用于實踐中還是不錯的。
我看的第一本java書籍,也就是我的java入門書,公司架構師推薦的,寫的好就不多說了,主要是想說很多人把這本書當作java的進階讀物,其實如果有開發經驗,直接看完這本書再看Think In Java會是Java入門的不錯組合。
JAVA程序員分兩種,看過effective Java的和沒看過effective Java的!