Java解惑

出版時間:2010-11-22  出版社:人民郵電出版社  作者:(美)布洛克//加夫特|譯者:陳昊鵬  頁數(shù):285  譯者:陳昊鵬  
Tag標簽:無  

前言

與許多書一樣,本書經(jīng)歷了長期的醞釀過程。我們收集Java謎題的時間與我們使用Java平臺的時間一樣長:如果你感興趣的話,可以告訴你是從1996年年中開始的。在2001年年初,我們產(chǎn)生了一個想法:搞一次完全涉及Java謎題的演講。我們把這個想法拋給了當時還在Oracle公司的Larry Jacobs,他完全同意。2001年11月,我們于舊金山舉辦的Oracle Open World會議上首次作了題為“Java謎題”的演講。為了增添魅力,我們介紹自己是“Type-it兄弟,Click和Hack”,并且從Tom和Ray Magliozzi主持的Cair Talk節(jié)目中借用了一大堆笑話…。這個演講被評選為最佳演講秀,也許我們不投自己的票,結果可能也如此。由此,我們知道找對了路子。一身藍領工人利落的制服,胸前別著Java的“咖啡杯”標志,我們在Java One 2002上再次利用Oracle會議上的演講來鼓吹我們的觀點——至少我們的朋友是這么認為的。在接下來的幾年里,我們又作了另外三次“Java謎題”的演講,并且在數(shù)不勝數(shù)的會議、公司和大學里宣講它們,足跡遍及全球許多城市,從奧斯陸到東京。這些演講受到普遍歡迎,起碼沒人沖我們扔爛蘋果。在Linux Magazine的2003年3月刊上,我們發(fā)表了一篇完全由Java謎題構成的文章,沒有收到任何厭惡我們的郵件。本書幾乎包含了我們的演講和文章中的所有謎題,以及許多其他的謎題。盡管本書集中關注Java平臺的陷阱和缺陷,但我們并沒有詆毀Java之意。我們熱愛Java,并將近10年的職業(yè)生涯都奉獻給了它。每一種具有強大能力的平臺都會有某些問題,Java與大多數(shù)平臺相比已經(jīng)算少的了。你對問題理解得越透徹,就越不會受到它們的影響,這正是本書要達到的目的。書中的多數(shù)謎題都是一些短程序,它們看起來是在“明修棧道”,實際卻是“暗渡陳倉”。這就是我們選擇視覺幻圖來裝飾本書的原因。這些幻圖看起來是某樣事物,但實際上卻是另一樣東西。在你努力思考這些程序到底在做什么的時候,可以盯著這些幻圖好好看看。我們希望本書能具有趣味性,真誠地希望你能夠盡情享受解惑的樂趣,就如同我們享受編寫它們的樂趣一樣,還希望你能夠從中學到很多東西,如我們曾經(jīng)的那樣。

內容概要

本書特寫了95個有關Java或其類庫的陷阱和缺陷的謎題,其中大多數(shù)謎題都采用短程序的形式給出,這些程序的實際行為與表面上大相徑庭。在每個謎題之后都給出了詳細的解惑方案,這些解惑方案超越了對程序行為的簡單解釋,向讀者展示了如何一勞永逸地避免底層的陷阱與缺陷。    本書趣味十足、寓教于樂,適合于具備Java知識的學習者和有編程經(jīng)驗的Java程序員。

作者簡介

作者:(美國)布洛克(Joshua Bloch) (美國)加夫特(Neal Gafter) 譯者:陳昊鵬Joshua Bloch,Google公司的首席工程師。著有Jolt大獎作品Effective Java Programming Language Guide。他之前是Sun公司的杰出工程師和Transarc公司的資深系統(tǒng)設計師。Bloch領導了大量的Java平臺特性的設計與實現(xiàn)工作。包括JDK 5.0中的語言改進和獲獎的Java集合框架。他擁有卡耐基-梅隆大學計算機科學專業(yè)的博士學位。Neal Gafter現(xiàn)任微軟架構師。曾任Google公司的軟件工程師,還曾是Sun公司的資深工程師,領導了Java編譯器的開發(fā)工作,并且實現(xiàn)了Java 1.4版至5.0版的許多語言特性。Gafter曾經(jīng)是C++標準委員會的成員,他在Sun、Microtec Research和Texas Instrument時領導了C和C++編譯器的開發(fā)工作。他擁有羅徹斯特大學計算機科學專業(yè)的博士學位。

書籍目錄

第1章  緒論第2章  表達式之謎  謎題1:奇數(shù)性  謎題2:找零時刻  謎題3:長整除  謎題4:初級問題  謎題5:十六進制的趣事  謎題6:多重轉型  謎題7:互換內容  謎題8:Dos Equis  謎題9:半斤  謎題10:八兩第3章  字符之謎  謎題11:最后的笑聲  謎題12:ABC  謎題13:動物莊園  謎題14:轉義字符的潰敗  謎題15:令人暈頭轉向的Hello  謎題16:行打印程序  謎題17:嗯?  謎題18:字符串奶酪  謎題19:漂亮的火花(塊注釋符)  謎題20:我的類是什么  謎題21:我的類是什么?鏡頭2  謎題22:URL的愚弄  謎題23:不勞無獲第4章  循環(huán)之謎  謎題24:盡情享受每一個字節(jié)  謎題25:無情的增量操作  謎題26:在循環(huán)中  謎題27:變幻莫測的i值  謎題28:循環(huán)者  謎題29:循環(huán)者的新娘  謎題30:循環(huán)者的愛子  謎題31:循環(huán)者的鬼魂  謎題32:循環(huán)者的詛咒  謎題33:循環(huán)者遇到了狼人  謎題34:被計數(shù)擊倒了  謎題35:分鐘計數(shù)器第5章  異常之謎  謎題36:優(yōu)柔寡斷  謎題37:極端不可思議  謎題38:不受歡迎的賓客  謎題39:您好,再見  謎題40:不情愿的構造器  謎題41:字段和流  謎題42:異常為循環(huán)而拋  謎題43:異常地危險  謎題44:刪除類  謎題45:令人疲憊不堪的測驗第6章  類之謎  謎題46:令人混淆的構造器案例  謎題47:啊呀!貍貓變犬子  謎題48:我所得到的都是靜態(tài)的  謎題49:比生命更大  謎題50:不是你的類型  謎題51:要點何在  謎題52:總和的玩笑  謎題53:做你的事吧  謎題54:Null與Void  謎題55:特創(chuàng)論第7章  庫之謎  謎題56:大問題  謎題57:名字里有什么  謎題58:產(chǎn)生它的散列碼  謎題59:差是什么  謎題60:一行以斃之  謎題61:日期游戲  謎題62:名字游戲  謎題63:更多同樣的問題  謎題64:按余數(shù)編組  謎題65:疑似排序的驚人傳奇第8章  更多類之謎  謎題66:一件私事  謎題67:對字符串上癮  謎題68:灰色的陰影  謎題69:黑色的漸隱  謎題70:一攬子交易  謎題71:進口稅  謎題72:終極危難  謎題73:隱私在公開  謎題74:同一性的危機  謎題75:頭還是尾?  名字重用的術語表第9章  更多庫之謎  謎題76:乒乓  謎題77:亂鎖之妖  謎題78:反射的影響  謎題79:狗狗的幸福生活  謎題80:更深層的反射  謎題81:無法識別的字符化  謎題82:啤酒爆炸  謎題83:誦讀困難者的一神論  謎題84:戛然而止  謎題85:延遲初始化第10章  高級謎題  謎題86:有害的括號垃圾  謎題87:緊張的關系  謎題88:原始類型的處理  謎題89:泛型迷藥  謎題90:荒謬痛苦的超類  謎題91:序列殺手  謎題92:雙絞線  謎題93:類的戰(zhàn)爭  謎題94:迷失在混亂中  謎題95:來份甜點附錄A  陷阱和缺陷的目錄  A.1  詞匯問題  A.2  整數(shù)運算  A.3  浮點運算  A.4  表達式計算  A.5  控制流  A.6  類初始化  A.7  實例的創(chuàng)建與銷毀  A.8  其他與類和實例相關的主題  A.9  名字重用  A.10  字符串  A.11  I/O  A.12  線程  A.13  反射  A.14  序列化  A.15  其他庫附錄B  書中幻圖的注釋參考文獻索引

章節(jié)摘錄

插圖:

媒體關注與評論

“每一種編程語言都有其怪癖的行為。這本生動的書通過趣味十足和發(fā)人深省的編程謎題揭示了Java編程語言的奇異之處?!薄  狦uy Steele,Sun院士,《Java語言規(guī)范》的合著者“我笑了。我叫起來了。我欽佩地揚起了雙手?!薄  猅im Peieris, Prior Artisans公司總裁,JSR166專家組成員

編輯推薦

《Java解惑》:Effective Java作者又一力作,實例講授Java中令人迷惑和不易掌握的知識點,寓教于樂,妙趣橫生。你認為自己了解Java多少?你是個愛琢磨的代碼偵探嗎?你是否曾經(jīng)花費數(shù)天時間去追蹤一個Java或其類庫的陷阱和缺陷而導致的bug?你喜歡智力測驗嗎?《Java解惑》正好適合你!Bloch和Gafter繼承了Effective Java一書的傳統(tǒng)。深入研究了Java編程語言及其核心類庫的細微之處?!禞ava解惑》特寫T95個噩夢般的謎題,中間穿插著許多有趣的視覺幻象。寓教于樂。任何具備Java知識的人都可以理解這些謎題,但甚至是最老練的程序員也會覺得它們具有挑戰(zhàn)性。多數(shù)的謎題都是些小程序,其行為詭秘。不可貌相。你能指出它們會做什么嗎?根據(jù)這些謎題用到的特性以及各題的詳細解惑方案。我們將其松散地分成了幾個部分。這些解惑方案超越了對程序行為的簡單解釋,向你展示了如何一勞永逸地避免底層的陷阱與缺陷?!禞ava解惑》最后列出了一些常見的陷阱和缺陷,可供讀者參考。一旦你解決了這些謎題,那些曾經(jīng)愚弄過最具經(jīng)驗的Java程序員的隱晦且有違直覺的語言行為,將再也無法把你騙過。

圖書封面

圖書標簽Tags

評論、評分、閱讀與下載


    Java解惑 PDF格式下載


用戶評論 (總計57條)

 
 

  •   Java的問題很好 容易懂
  •   適合有一定開發(fā)經(jīng)驗的人看,有些東西不看不知道啊,明明應該是那樣的,結果計算機算出來的不是那樣,很有意思
  •   買書如山倒,讀書如抽絲...還沒看完
  •   好書,準備研讀!
  •   的確是平常工作中常犯或者忽略的問題
  •   技巧性學習
  •   有一定難度,但是很有用
  •   上面的例子很好
  •   雖然對我沒有太大的幫助
    但是對于新參加工作的童鞋們很有用
  •   第一次是借圖書館的,剛好有新版就買來收藏了。
  •   很喜歡這種以問題帶出知識點的書,可以讓知識點更加生動。
  •   很有意思的書。還沒怎么看
  •   看過Think In Java和這本書才知道人家大牛是怎么玩語言的,尤其是這本書的內容,看了之后其實對于一門語言本身(語法和一點常用類庫)的學習要達到什么程度心里就有了一個標桿,也知道了自己和大牛的差距了。
  •   討論的幾個主題還不錯,適合有一定編程經(jīng)驗的人讀
  •   這本書,找了好久了。
  •   說多了都是贊,真的很好
  •   書的質量還可以1
  •   不錯了,其實可以把平時沒有注意到的東西提出來,算是一種思考。也是一種提高。
  •   看了前面幾頁后就被深深地吸引了,很多的問題平時幾乎都沒有遇到過,對于書里提到的問題也都是想當然,結果編譯出來的結果還真總是讓我大吃一驚的。同時也映射出自己學習上很多細節(jié)的不足。
    書里我覺得不好的一點是讓人眼花繚亂的圖案太多了,一方面占用了空間,一方面看了頭暈。當然,我覺得主要是排版空出了空間,為了不浪費空間,所以作者補了些圖案上去。
  •   很滿意,紙張質量比較好,印刷也可以。內容和第一版的差別不大,只是價格有點貴啊
  •   對java中比較讓人發(fā)暈的問題進行了詳細描述,適合提高晉級行讀者
  •   看了評論買的, 結果一看太失望了, 都是一些比較基本的東西, 沒什么特別的, 直接看java編程思想就行了
  •   這本書初看了下,沒什么太多用,講的很多東西,只要你編程有良好的習慣,不容易碰上,最讓人暈的是這書的插圖,全是那種讓人看著頭暈的圖,我只能用一只手把圖蓋上再看文字,要不沒法看
  •   java解惑這本書,我非常喜歡 愛不釋手 一口氣看了半本 希望java愛好者好好看看
  •   對有一定Java開發(fā)程序員是很好的一本書。在開發(fā)過程中遇到的一些細節(jié)問題這里可找到滿意的答案。不知別的書友有怎樣收獲,對于我是解決了一些長期困擾問題,還有不曾注意的細節(jié)。
  •   幫人買的,以前看過,有些知識點比較新穎
  •   他說這本書還可以,里面講了很多知識點
  •   每天翻兩頁,看著書的內容總會有點收獲~
  •   這本書很不錯,推薦。
  •   每一段都有一個主題,沒有主題短小精悍,適合沒事多翻翻看
  •   很有意思的書,好多都不知道
  •   知其然,更要知其所以然。以前有很多只停留在用java上。為了提高一個層次,必須要了解為什么。 如果有英文原版就更好了。
  •   理論方面的比較多,但掌握這些理論,離高手也不遠了!
  •   看這本書感覺就像是被打了一記一記的悶棍
  •   專業(yè)知識部分翻譯的比較生澀幸好里面的小puzzle設置精妙。把語言當玩具是真愛這門語言的人才能寫出來的。后面推薦的編程習慣都是金玉良言。早點讀此書可以少走很多彎路
  •   盡管不是那種詳細的大部頭。。
  •   不錯,紙張質量都不錯
  •   讓你清楚很多問題
  •   java,一些經(jīng)典問題。
  •   還行吧,還沒自己看還行吧,還沒自己看
  •   還沒有仔細看,上午才收到的
  •   里面很多java有趣的例子
  •     看完前三章,大量求值順序和轉型的坑,基本和C別無二致
      
      下面兩個關于char的坑是我覺得比較有可能栽進去的
      能用String就別用char,char類型會默默地類型提升成int,拼接的時候也會出問題,殺人與無形,比如
      new StringBuffer('a');
      System.out.println('a' + 'b');
      
      其他比如
      對操作數(shù)求值順序的依賴、數(shù)字類型提升和窄化都是老生長談了。
      
      另外一個語言API設計的坑就是String#replaceAll
      這貨第一個參數(shù)是一個正則式,你很可能把他當作一個普通字符串
      后來你從坑里爬出來,知道了replaceAll的第一個參數(shù)可以寫正則,于是你在一個for循環(huán)里使用了replaceAll,上線后機器負載莫名其妙的高,你才恍然大悟這貨每次replace都要compile一次Pattern...
      
      
      待續(xù)
  •     排序
      
      
       Arrays.sort(array, new Comparator<Integer>() {
      
       public int compare(Integer i1, Integer i2) {
      
       return i1 < i2 ? -1 : (i2 > i1 ? 1 : 0);
      
       }
      
       });
      
      輸出 [1, 1, 3, 4, 5, 9]
      
      而非書中寫的 [3, 1, 4, 1, 5, 9] 1.6 是這樣的
  •      當用了java一段時間再看會有很多幫助,見意從業(yè)1年半后滴人業(yè)閱讀,會有很大幫助,會少走不少彎路。都是基礎的基礎,不會像框架那些東西學完過一陣子就落伍。
       很好滴一本書,不信可以先整個電子版的淺嘗一下下哦!
       啊親,給個好評吧。
  •     Joshua Bloch 的書,光看名字就知道應該買了。Effective Java也同時應該看一下,也是這位大師寫的。真的很喜歡Bloch的書,大師的著眼點跟什么《X天精通Java》這類書完全不同。書中介紹了很多Java語言的細節(jié),有很多都是很少人知道的,并且還有大師對于Java語言設計,類庫設計的反思,無論作為對技術的精益求精,還是為了興趣增大視野,哪怕只是為了在同事面前“裝X”,都是必讀之作。
  •     別懷疑這本書中提到的某些題目,你一定會回答錯誤,沒關系,那很正常,正式這些錯誤,才會使你從另一個角度考慮問題
  •     從當當網(wǎng)上買的,翻看了很多次,對其中的大部分puzzler已經(jīng)熟悉了。
      作者在preface中鄭重建議:
       大家先思考自己的答案,然后運行代碼看真實答案,一般來說,你想的和程序運行結果是不會相同的,而且程序結果往往會讓你百思不得其解。這正是這本書的魅力所在。
       這些puzzler中的一部分是我們寫程序的時候經(jīng)常會遇到的,可能你已經(jīng)不知不覺中克服了,重新讀這本書,會讓你重新思考這些pitfall。還有一些puzzler是我們基本上沒有遇到的,讀了也起到了很好的開闊視野的作用。
       總之,這本書給我的感覺是非常有趣,太值得一讀了!
       遺憾的是,我周圍的人聽說過這本書的人都很少,更別說讀過了!
  •     其中的大部分命題不看答案都不會解答,看來java還有的東西要學呢;不能只關注于應用,這些基礎的東西也丟不得;總的來說,大部分都挺有用的,但還有一些個人認為比較沒用、純屬亂叩的。
      看了百利!
  •     在沒有讀這本書之前,覺得用Java編寫程序很舒服,思路十分清晰。但是讀完這本書之后,才發(fā)現(xiàn)Java世界沒有想象的那么好,你隨時都有可能掉某些進陷阱之中。這些陷阱有可能是自己的粗心大意造成(如謎題95的第一個小題),有可能是對數(shù)字邊界問題考慮欠佳造成的,還有可能是對于Java的一些基本概念沒有理解清楚造成的。另外,序列化,多線程、泛型以及繼承這些地區(qū)都是事故的多發(fā)地帶。在閱讀完這本書后,你在編寫程序和閱讀別人的程序時會考慮的更多些。
      另外,這本書的內容是以一個一個謎題的形式組織而成的,一般一個謎題一道兩頁,而且謎題之間的相關性不是很大,不需要按照某一順序去看。所以這本書十分適合隨意式的閱讀。中文翻譯總體感覺還可以,但是如果看英文版我覺得樂趣可能會更大一些:)
  •     學習java好長時間了,沒想到書里的好多問題自己都沒有解決,看了這本書感覺自己java的水平又有點提高了
  •      由于工作的需要,去了書店無意間發(fā)現(xiàn)這本書,剛翻了幾頁就被迷住了,索性買回來看看。很少有介紹技術的書香這本書一樣讓人著迷的。書中通過一個個小疑惑激發(fā)您去想,去思考,去實踐java中的奧秘。同時書中還附有每個疑惑的解答,讓您掀開那層神奇的面紗!
  •     不曉得為什么國內的java大牛對這本書的關注會這么少?以至于java puzzlers出版這么久還沒有很勢力的書評,這種爆冷的場面是我始料未及的。
      但是憑著Joshua Bloch的大名也應該來仔細閱讀這本小書,想想當年的effective java給我們帶來多大的震撼吧。
      java puzzlers比effective java淺顯的多,再加上每個puzzler都有例子先行就更容易理解,但淺顯絕對不能以次降低java puzzlers的分量,Joshua Bloch是又一次引導我們對java內部機制的探究。
  •   有用的評論~
  •   阿阿,,看看不錯的
  •   整本書剛看完,我的評價是:太偏門啦。
  •   很簡單 國內更流行 設計、架構這種噱頭...
 

250萬本中文圖書簡介、評論、評分,PDF格式免費下載。 第一圖書網(wǎng) 手機版

京ICP備13047387號-7