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格式下载


用户评论 (总计57条)

 
 

  •   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内部机制的探究。
  •   有用的评论~
  •   阿阿,,看看不错的
  •   整本书刚看完,我的评价是:太偏门啦。
  •   很简单 国内更流行 设计、架构这种噱头...
 

250万本中文图书简介、评论、评分,PDF格式免费下载。 第一图书网 手机版

京ICP备13047387号-7