第一图书网

Java解惑

(美)布洛克//加夫特|译者:陈昊鹏 人民邮电出版社
出版时间:

2010-11-22  

出版社:

人民邮电出版社  

作者:

(美)布洛克//加夫特|译者:陈昊鹏  

页数:

285  

译者:

陈昊鹏  

Tag标签:

无  

前言

与许多书一样,本书经历了长期的酝酿过程。我们收集Java谜题的时间与我们使用Java平台的时间一样长:如果你感兴趣的话,可以告诉你是从1996年年中开始的。在2001年年初,我们产生了一个想法:搞一次完全涉及Java谜题的演讲。我们把这个想法抛给了当时还在Oracle公司的Larry Jacobs,他完全同意。2001年11月,我们于旧金山举办的Oracle Open World会议上首次作了题为“Java谜题”的演讲。为了增添魅力,我们介绍自己是“Type-it兄弟,Click和Hack”,并且从Tom和Ray Magliozzi主持的Cair Talk节目中借用了一大堆笑话…。这个演讲被评选为最佳演讲秀,也许我们不投自己的票,结果可能也如此。由此,我们知道找对了路子。一身蓝领工人利落的制服,胸前别着Java的“咖啡杯”标志,我们在Java One 2002上再次利用Oracle会议上的演讲来鼓吹我们的观点——至少我们的朋友是这么认为的。在接下来的几年里,我们又作了另外三次“Java谜题”的演讲,并且在数不胜数的会议、公司和大学里宣讲它们,足迹遍及全球许多城市,从奥斯陆到东京。这些演讲受到普遍欢迎,起码没人冲我们扔烂苹果。在Linux Magazine的2003年3月刊上,我们发表了一篇完全由Java谜题构成的文章,没有收到任何厌恶我们的邮件。本书几乎包含了我们的演讲和文章中的所有谜题,以及许多其他的谜题。尽管本书集中关注Java平台的陷阱和缺陷,但我们并没有诋毁Java之意。我们热爱Java,并将近10年的职业生涯都奉献给了它。每一种具有强大能力的平台都会有某些问题,Java与大多数平台相比已经算少的了。你对问题理解得越透彻,就越不会受到它们的影响,这正是本书要达到的目的。书中的多数谜题都是一些短程序,它们看起来是在“明修栈道”,实际却是“暗渡陈仓”。这就是我们选择视觉幻图来装饰本书的原因。这些幻图看起来是某样事物,但实际上却是另一样东西。在你努力思考这些程序到底在做什么的时候,可以盯着这些幻图好好看看。我们希望本书能具有趣味性,真诚地希望你能够尽情享受解惑的乐趣,就如同我们享受编写它们的乐趣一样,还希望你能够从中学到很多东西,如我们曾经的那样。

内容概要

本书特写了95个有关Java或其类库的陷阱和缺陷的谜题,其中大多数谜题都采用短程序的形式给出,这些程序的实际行为与表面上大相径庭。在每个谜题之后都给出了详细的解惑方案,这些解惑方案超越了对程序行为的简单解释,向读者展示了如何一劳永逸地避免底层的陷阱与缺陷。 本书趣味十足、寓教于乐,适合于具备Java知识的学习者和有编程经验的Java程序员。

作者简介

作者:(美国)布洛克(Joshua Bloch) (美国)加夫特(Neal Gafter) 译者:陈昊鹏Joshua Bloch,Google公司的首席工程师。著有Jolt大奖作品Effective Java Programming Language Guide。他之前是Sun公司的杰出工程师和Transarc公司的资深系统设计师。Bloch领导了大量的Java平台特性的设计与实现工作。包括JDK 5.0中的语言改进和获奖的Java集合框架。他拥有卡耐基-梅隆大学计算机科学专业的博士学位。Neal Gafter现任微软架构师。曾任Google公司的软件工程师,还曾是Sun公司的资深工程师,领导了Java编译器的开发工作,并且实现了Java 1.4版至5.0版的许多语言特性。Gafter曾经是C++标准委员会的成员,他在Sun、Microtec Research和Texas Instrument时领导了C和C++编译器的开发工作。他拥有罗彻斯特大学计算机科学专业的博士学位。

书籍目录

第1章 绪论第2章 表达式之谜 谜题1:奇数性 谜题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章 循环之谜 谜题24:尽情享受每一个字节 谜题25:无情的增量操作 谜题26:在循环中 谜题27:变幻莫测的i值 谜题28:循环者 谜题29:循环者的新娘 谜题30:循环者的爱子 谜题31:循环者的鬼魂 谜题32:循环者的诅咒 谜题33:循环者遇到了狼人 谜题34:被计数击倒了 谜题35:分钟计数器第5章 异常之谜 谜题36:优柔寡断 谜题37:极端不可思议 谜题38:不受欢迎的宾客 谜题39:您好,再见 谜题40:不情愿的构造器 谜题41:字段和流 谜题42:异常为循环而抛 谜题43:异常地危险 谜题44:删除类 谜题45:令人疲惫不堪的测验第6章 类之谜 谜题46:令人混淆的构造器案例 谜题47:啊呀!狸猫变犬子 谜题48:我所得到的都是静态的 谜题49:比生命更大 谜题50:不是你的类型 谜题51:要点何在 谜题52:总和的玩笑 谜题53:做你的事吧 谜题54:Null与Void 谜题55:特创论第7章 库之谜 谜题56:大问题 谜题57:名字里有什么 谜题58:产生它的散列码 谜题59:差是什么 谜题60:一行以毙之 谜题61:日期游戏 谜题62:名字游戏 谜题63:更多同样的问题 谜题64:按余数编组 谜题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:类的战争 谜题94:迷失在混乱中 谜题95:来份甜点附录A 陷阱和缺陷的目录 A.1 词汇问题 A.2 整数运算 A.3 浮点运算 A.4 表达式计算 A.5 控制流 A.6 类初始化 A.7 实例的创建与销毁 A.8 其他与类和实例相关的主题 A.9 名字重用 A.10 字符串 A.11 I/O A.12 线程 A.13 反射 A.14 序列化 A.15 其他库附录B 书中幻图的注释参考文献索引

章节摘录

插图:

媒体关注与评论

“每一种编程语言都有其怪癖的行为。这本生动的书通过趣味十足和发人深省的编程谜题揭示了Java编程语言的奇异之处。”  ——Guy Steele,Sun院士,《Java语言规范》的合著者“我笑了。我叫起来了。我钦佩地扬起了双手。”  ——Tim Peieris, Prior Artisans公司总裁,JSR166专家组成员


编辑推荐

《Java解惑》:Effective Java作者又一力作,实例讲授Java中令人迷惑和不易掌握的知识点,寓教于乐,妙趣横生。你认为自己了解Java多少?你是个爱琢磨的代码侦探吗?你是否曾经花费数天时间去追踪一个Java或其类库的陷阱和缺陷而导致的bug?你喜欢智力测验吗?《Java解惑》正好适合你!Bloch和Gafter继承了Effective Java一书的传统。深入研究了Java编程语言及其核心类库的细微之处。《Java解惑》特写T95个噩梦般的谜题,中间穿插着许多有趣的视觉幻象。寓教于乐。任何具备Java知识的人都可以理解这些谜题,但甚至是最老练的程序员也会觉得它们具有挑战性。多数的谜题都是些小程序,其行为诡秘。不可貌相。你能指出它们会做什么吗?根据这些谜题用到的特性以及各题的详细解惑方案。我们将其松散地分成了几个部分。这些解惑方案超越了对程序行为的简单解释,向你展示了如何一劳永逸地避免底层的陷阱与缺陷。《Java解惑》最后列出了一些常见的陷阱和缺陷,可供读者参考。一旦你解决了这些谜题,那些曾经愚弄过最具经验的Java程序员的隐晦且有违直觉的语言行为,将再也无法把你骗过。

图书封面

图书标签Tags

广告

下载页面


Java解惑 PDF格式下载



Java的问题很好 容易懂


适合有一定开发经验的人看,有些东西不看不知道啊,明明应该是那样的,结果计算机算出来的不是那样,很有意思


买书如山倒,读书如抽丝...还没看完


好书,准备研读!


的确是平常工作中常犯或者忽略的问题


技巧性学习


有一定难度,但是很有用


上面的例子很好


虽然对我没有太大的帮助
但是对于新参加工作的童鞋们很有用


第一次是借图书馆的,刚好有新版就买来收藏了。


很喜欢这种以问题带出知识点的书,可以让知识点更加生动。


很有意思的书。还没怎么看


看过Think In Java和这本书才知道人家大牛是怎么玩语言的,尤其是这本书的内容,看了之后其实对于一门语言本身(语法和一点常用类库)的学习要达到什么程度心里就有了一个标杆,也知道了自己和大牛的差距了。


讨论的几个主题还不错,适合有一定编程经验的人读


这本书,找了好久了。


说多了都是赞,真的很好


书的质量还可以1


不错了,其实可以把平时没有注意到的东西提出来,算是一种思考。也是一种提高。


看了前面几页后就被深深地吸引了,很多的问题平时几乎都没有遇到过,对于书里提到的问题也都是想当然,结果编译出来的结果还真总是让我大吃一惊的。同时也映射出自己学习上很多细节的不足。
书里我觉得不好的一点是让人眼花缭乱的图案太多了,一方面占用了空间,一方面看了头晕。当然,我觉得主要是排版空出了空间,为了不浪费空间,所以作者补了些图案上去。


很满意,纸张质量比较好,印刷也可以。内容和第一版的差别不大,只是价格有点贵啊


对java中比较让人发晕的问题进行了详细描述,适合提高晋级行读者


看了评论买的, 结果一看太失望了, 都是一些比较基本的东西, 没什么特别的, 直接看java编程思想就行了


这本书初看了下,没什么太多用,讲的很多东西,只要你编程有良好的习惯,不容易碰上,最让人晕的是这书的插图,全是那种让人看着头晕的图,我只能用一只手把图盖上再看文字,要不没法看


java解惑这本书,我非常喜欢 爱不释手 一口气看了半本 希望java爱好者好好看看


对有一定Java开发程序员是很好的一本书。在开发过程中遇到的一些细节问题这里可找到满意的答案。不知别的书友有怎样收获,对于我是解决了一些长期困扰问题,还有不曾注意的细节。


帮人买的,以前看过,有些知识点比较新颖


他说这本书还可以,里面讲了很多知识点


每天翻两页,看着书的内容总会有点收获~


这本书很不错,推荐。


每一段都有一个主题,没有主题短小精悍,适合没事多翻翻看


很有意思的书,好多都不知道


知其然,更要知其所以然。以前有很多只停留在用java上。为了提高一个层次,必须要了解为什么。 如果有英文原版就更好了。


理论方面的比较多,但掌握这些理论,离高手也不远了!


看这本书感觉就像是被打了一记一记的闷棍


专业知识部分翻译的比较生涩幸好里面的小puzzle设置精妙。把语言当玩具是真爱这门语言的人才能写出来的。后面推荐的编程习惯都是金玉良言。早点读此书可以少走很多弯路


尽管不是那种详细的大部头。。


不错,纸张质量都不错


让你清楚很多问题


java,一些经典问题。


还行吧,还没自己看还行吧,还没自己看


还没有仔细看,上午才收到的


里面很多java有趣的例子


  看完前三章,大量求值顺序和转型的坑,基本和C别无二致
  
  下面两个关于char的坑是我觉得比较有可能栽进去的
  能用String就别用char,char类型会默默地类型提升成int,拼接的时候也会出问题,杀人与无形,比如
  new StringBuffer('a');
  System.out.println('a' + 'b');
  
  其他比如
  对操作数求值顺序的依赖、数字类型提升和窄化都是老生长谈了。
  
  另外一个语言API设计的坑就是String#replaceAll
  这货第一个参数是一个正则式,你很可能把他当作一个普通字符串
  后来你从坑里爬出来,知道了replaceAll的第一个参数可以写正则,于是你在一个for循环里使用了replaceAll,上线后机器负载莫名其妙的高,你才恍然大悟这货每次replace都要compile一次Pattern...
  
  
  待续


  排序
  
  
   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一段时间再看会有很多帮助,见意从业1年半后滴人业阅读,会有很大帮助,会少走不少弯路。都是基础的基础,不会像框架那些东西学完过一阵子就落伍。
   很好滴一本书,不信可以先整个电子版的浅尝一下下哦!
   啊亲,给个好评吧。


  Joshua Bloch 的书,光看名字就知道应该买了。Effective Java也同时应该看一下,也是这位大师写的。真的很喜欢Bloch的书,大师的着眼点跟什么《X天精通Java》这类书完全不同。书中介绍了很多Java语言的细节,有很多都是很少人知道的,并且还有大师对于Java语言设计,类库设计的反思,无论作为对技术的精益求精,还是为了兴趣增大视野,哪怕只是为了在同事面前“装X”,都是必读之作。


  别怀疑这本书中提到的某些题目,你一定会回答错误,没关系,那很正常,正式这些错误,才会使你从另一个角度考虑问题


  从当当网上买的,翻看了很多次,对其中的大部分puzzler已经熟悉了。
  作者在preface中郑重建议:
   大家先思考自己的答案,然后运行代码看真实答案,一般来说,你想的和程序运行结果是不会相同的,而且程序结果往往会让你百思不得其解。这正是这本书的魅力所在。
   这些puzzler中的一部分是我们写程序的时候经常会遇到的,可能你已经不知不觉中克服了,重新读这本书,会让你重新思考这些pitfall。还有一些puzzler是我们基本上没有遇到的,读了也起到了很好的开阔视野的作用。
   总之,这本书给我的感觉是非常有趣,太值得一读了!
   遗憾的是,我周围的人听说过这本书的人都很少,更别说读过了!


  其中的大部分命题不看答案都不会解答,看来java还有的东西要学呢;不能只关注于应用,这些基础的东西也丢不得;总的来说,大部分都挺有用的,但还有一些个人认为比较没用、纯属乱叩的。
  看了百利!


  在没有读这本书之前,觉得用Java编写程序很舒服,思路十分清晰。但是读完这本书之后,才发现Java世界没有想象的那么好,你随时都有可能掉某些进陷阱之中。这些陷阱有可能是自己的粗心大意造成(如谜题95的第一个小题),有可能是对数字边界问题考虑欠佳造成的,还有可能是对于Java的一些基本概念没有理解清楚造成的。另外,序列化,多线程、泛型以及继承这些地区都是事故的多发地带。在阅读完这本书后,你在编写程序和阅读别人的程序时会考虑的更多些。
  另外,这本书的内容是以一个一个谜题的形式组织而成的,一般一个谜题一道两页,而且谜题之间的相关性不是很大,不需要按照某一顺序去看。所以这本书十分适合随意式的阅读。中文翻译总体感觉还可以,但是如果看英文版我觉得乐趣可能会更大一些:)


  学习java好长时间了,没想到书里的好多问题自己都没有解决,看了这本书感觉自己java的水平又有点提高了


   由于工作的需要,去了书店无意间发现这本书,刚翻了几页就被迷住了,索性买回来看看。很少有介绍技术的书香这本书一样让人着迷的。书中通过一个个小疑惑激发您去想,去思考,去实践java中的奥秘。同时书中还附有每个疑惑的解答,让您掀开那层神奇的面纱!


  不晓得为什么国内的java大牛对这本书的关注会这么少?以至于java puzzlers出版这么久还没有很势力的书评,这种爆冷的场面是我始料未及的。
  但是凭着Joshua Bloch的大名也应该来仔细阅读这本小书,想想当年的effective java给我们带来多大的震撼吧。
  java puzzlers比effective java浅显的多,再加上每个puzzler都有例子先行就更容易理解,但浅显绝对不能以次降低java puzzlers的分量,Joshua Bloch是又一次引导我们对java内部机制的探究。


有用的评论~


阿阿,,看看不错的


整本书刚看完,我的评价是:太偏门啦。


很简单 国内更流行 设计、架构这种噱头...


相关图书