致读者 我从2002年7月开始翻译这本书,当时还是第二版。但是翻完前言和介绍部分 后, chinapub就登出广告,说要出版侯捷的译本。于是我中止了翻译,等着侯 先生的作品。 我是第一时间买的这本书,但是我失望了。比起第一版,我终于能看懂这本书 了,但是相比我的预期,它还是差一点。所以当 Bruce eckel在他的网站上公开 本书的第三版的时候,我决定把它翻译出来。 说说容易,做做难。一本1000多页的书不是那么容易翻的。期间我也曾打过退 堂鼓,但最终还是全部翻译出来了。从今年的两月初起,到7月底,我几乎放 弃了所有的业余时间,全身心地投入本书的翻译之中。应该说,这项工作的难 度超出了我的想像。 首先,读一本书和翻译一本书完全是两码事。英语与中文是两种不同的语言 用英语说得很畅的句子,翻成中文之后就完全破了相。有时我得花好几分钟, 用中文重述一句我能用几秒钟读懂的句子。更何况作为读者,一两句话没搞 懂,并不影响你理解整本书,但对译者来说,这就不一样了 其次,这是一本讲英语的人写给讲英语的人的书,所以同很多要照顾非英语读 者的技术文档不同,它在用词,句式方面非常随意。英语读者会很欣赏这 点,但是对外国读者来说,这就是负担了。 再有, Bruce eckel这样的大牛人,写了1000多页,如果都让你读懂,他岂不是 太没面子?所以,书里还有一些很有“禅意”的句子。比如那句著名的“The genesis of the computer revolution was in a machine. The genesis of our programming languages thus tends to look like that machine.”我就一直没吃准该怎 么翻译。我想大概没人能吃准,说不定 Bruce要的就是这个效果 这是一本公认的名著,作者在技术上的造诣无可挑剔。而作为译者,我的编程 能力差了很多。再加上上面讲的这些原因,使得我不得不格外的谨慎。当我重 读初稿的时候,我发现需要修改的地方实在太多了。因此,我不能现在就公开 全部译稿,我只能公开已经修改过的部分。不过这不是最终的版本,我还会继 续修订的。 本来,我准备到10月份,等我修改完前7章之后再公开。但是,我发现我又有 点要放弃了,因此我决定给自己一点压力,现在就公开。以后,我将修改完 章就公开一章,请关注www.wgqgh.com/shags/tii.htm 如果你觉得好,请给告诉我,你的鼓励是我工作的动力;如果你觉得不好,那 就更应该告诉我了,我会参考你的意见作修改的。我希望能通过这种方法,译 出一本配得上原著的书。 2003年9月8日 第1页共18页
shhgs@wgqqh.com 1 ✁ ✂ 18 ✁ 2002 7 chinapub !"#$%!&'( )*+,-.& /0(12 345( 67,893:);8(?@AB3CDE Bruce Eckel FG(HIJK (L(MNOPA!Q $$RSTTU3 1000 VW(XYZRS(@4[\]^_ `ab:c!Q,d(ef9g 7 hijk l,Dm(no4cpqrst (u*vw$ xy1(U z{!,(|} ~/3 3 ce* eX( $(* uc,>mi * 3;i=(13e =X ¡¢£¤ ¥Q$ X3¦, §¨ 3 ©(ª«¬©(ª(DEV%®¯ (°± ²XAF³´µ¶¯·¸¹º»¼ 3 C¥½¾Q$ ¿À, ÁmBruce Eckel ¦(Âê«, 1000 VWÄÅÆÇ¡=GÈX É¶Ê DEËm3ÌmÍ Î¹Ï(8ÄYÐÑ(Í The genesis of the computer revolution was in a machine. The genesis of our programming languages thus tends to look like that machine.Ï3ÒÓÔwÕ Z|ÂÖª;ÓÔ$XO Bruce %( ×ØÅ 3 KÙ(ÑÐ1F°±J(ÚÛÜÝÞßà1(áâ ;ãB,VÁäJJ¶©( ÌåæçXXè½(éê fë(Mìíî%ïð(rµñFÉV,æòX;íFK cëó;Kôõïð^(X^ Xb:( ºö ÷ïø( QÔùg 10 ú-ïð 7 ûuÁKìíüm C%kl,æòNO¬ý þ3CãíFKEïð3 ûK3û www.wgqqh.com/shhgs/tij.html ÄÅ¡¬#¡(ay1( ã ÄÅ¡XY vw#,º¡(¹ 1ïð(7;^ µ !3 JåÐ( shhgs 2003 9 8
介绍 “他带来了语言,语言又创造了思维,而思维是衡量万物的标准 《解放了的普罗米修斯》,雪莱 人类..很大程度上是在受语言的支配,而语言也已经成为一种媒介,透过 它我们可以了解社会的方方面面。你能想象,一个人能不借助语言而完全 适应这个世界,或是仅仅把语言当作解决具体问题的交流工具和表述手段 吗?实际上,“真实世界”在很大程度上是建立在人类语言的习惯之上 的,而这又是人们没有意识到的。 《语言学,一门科学的地位》, Edward Sapin,1929 就像人类语言,Java也提供了一种表述概念的方法。如果运用得当,随 着问题大型化和复杂性程度的提高,它会比其他方法更加简单灵活。 你不能仅仅将Java看作是一组特性的集合——有些特性,如果孤立看待 的话是毫无意义的。你不能只想着写代码,一定要树立了设计的观念,这 样才能发挥这些特性的综合效能。而要能这样理解Java,你必须先弄懂 它的,以及编程所共有的问题。本书讨论编程问题,它们为什么会成为问 题,以及]ava所采取的解决这些问题的方法。由此,我是基于Java语 言在解决这类问题上所采取的方法,来讲解每章所介绍的特性的。我希望 能用这种方法,一步一步地将你领入Java的殿堂,最终让它成为你的母 语 在这本书里始终贯穿着这样一个观点,那就是,你应该在你的头脑中建立 个能让你深入理解解这个语言的模型;如果碰到什么问题,就能把它交 给这个模型,然后由它来回答 预备知识 本书假定你有一些编程的经验:你知道程序是语句的集合;知道子程序, 函数,宏的概念;知道“if”是控制语句而“ while”是循环语句,等 等。你可能是在不同的场合学到这些的,可能是在用宏语言编程的时候, 也可能是在用Per之类的工具的时候。只要你已经写过一些程序,并且 对这类基本的编程概念不感到陌生,你就能读完这本书。当然本书对于C 程序员来说会比较简单,对C++的程序员来说会更简单,所以如果你对 这两种语言不熟悉的话,就得更用功一些(此外,随书附送的多媒体CD 会帮助你快速掌握学习Java所需的基本知识的)。不过除了介绍面向对象 的编程( object- oriented programming(OOP)的概念之外,我还是会 介绍Java的基本控制机制。 虽然我会经常提到一些C和C++的语言特性,但这么做并不是为了作更 深入的解释。这么做只是为了帮助程序员能用从其它语言的角度来观察 第2页共18页
shhgs@wgqqh.com 2 ✁ ✂ 18 ✁ Í GQ,üÚ,à(ÔÏ £k,( ï!" #$ ª%...ÂâzJF&('à[ôõ3()^ A*ÝE,£+º(µµ¶¶¡;|,3ת;X-.àc /v ×01233P 1£N4567(89y4:;JÍ ?ñ01ÏFÂâzJ@AFª%(BCuJ (à üª*m¹Dg( E3FGE(rH" E dwa rd Sa p ir1 9 2 9 }ª%Ja va [IJ,3:ÖK(µÄÅL ¸ .67ÂMNOPQâz(IRAº8§GµäSTUV ¡X;33 Ja va <13WXQ(YZmÌXQÄÅ[A<\ (]ܹ^(¡X;ó|.«_3O%`A,ab(cK ¦d;ìe ÌXQ(fZØ;à%; ¦¢£ Ja va ¡gh/i= A(EjáâDkm(67 lmáâ67A*nZº6 7Ej Ja va Dop(£N Ì67(µqòr) Ja va F£N %67JDop(µQ©£sûD(XQ(7 ; µ3t3tr¡ut Ja va (v`b:ÇA¡(w F Ë:xy. ¦3×cCY¡vwF¡(z{*@A 3×;Ç¡|t¢££ ×(}M ÄÅ~gnZ67;PA8 ¬ ×}MqAQ O¡m3Ìáâ(õ¡ â(YZ â (ÖK Í ifÏàÍ wh i l eÏ- -¡Ý;FX(ZEg Ì(Ý;Fáâ(M [Ý;F P erlu%(y4(Mó%¡ôõ«^3Ìâ ¥ %r (áâÖKXg0¡; ¥) C âQ$º8ST¥ C+ + (âQ$ºSTDEÄÅ¡¥ eX(3Ì(ò½¸(V(5 CD º.¡EB Ja va Dî(r D()X^,¶ ¥, (áâ(ob ject-ori en ted p rog ram m i n g (OOP ))(ÖKu½º Ja va (r ¡ ¢ºõ·Ig3Ì C C+ + (XQ ZTX,1 |t(££ ZTó,.â;§A(¤zQc¥