出版时间: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
无
评论、评分、阅读与下载