中国高校课件下载中心 》 教学资源 》 大学文库

《Thinking in Java》中文版 介绍

文档信息
资源类别:文库
文档格式:PDF
文档页数:18
文件大小:336.85KB
团购合买:点击进入团购
内容简介
介绍 “他带来了语言,语言又创造了思维,而思维是衡量万物的标准 《解放了的普罗米修斯》,雪莱 人类..很大程度上是在受语言的支配,而语言也已经成为一种媒介,透过 它我们可以了解社会的方方面面。你能想象,一个人能不借助语言而完全 适应这个世界,或是仅仅把语言当作解决具体问题的交流工具和表述手段 吗?实际上,“真实世界”在很大程度上是建立在人类语言的习惯之上 的,而这又是人们没有意识到的。
刷新页面文档预览

致读者 我从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(M NOPA!Q $$RS TTU3 1000 VW( XYZRS(@4[\]^_ `a b:c!Q,d(ef9 g 7 h ijk l,Dm(no4 cpqrst (u*vw$ xy1(U z{!,(|} ~/ 3 3 ce€‚ƒ„*…e†X‡(ƒ ˆ‚ƒ$‰Š‹(Œ Ž*…uc,>m‰‘i’ ˆ*…3Œ;ˆi•’=(Œ1™š 3eŒ›œ = žXŸ ¡¢£¤ ¥šQ$ X3¦, §¨ 3 ©‚ƒ(ª«¬©‚ƒ(ª( DE‡ŠV%­®¯‚ƒ š(°±…²X‡ AFˆ³ Œ´µ¶¯·¸¹‚ƒšºŠ»¼ 3 C ¥½¾šQ$ ¿À, Ám Bruce 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Ù(ÑÐ 1šF°±J(ÚÛÜÝÞßà1™š (áâ ;ãB,ŠVÁäJJ¶©( Ìåæ ç‰X‰Xè½(éê  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( ã ÄÅ¡‰X‘ Y 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 ×01 233Pƒ 1£N4567(89y4:;J Í ?ñ01ÏFŠÂâzJ@AFª%ƒ(BCuJ ( à üª*œm¹Dg(  ƒE 3FGE(rH" E dwa rd Sa p ir 1 9 2 9 }ª%ƒ Ja va [IJ,3†:ÖK(µÄÅLˆ‰ ¸ .67ÂMNOPQâz(IR Aº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áâ67 A*™nZºŽ™6 7 Ej 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×cC Y ¡vwF¡(z{*@A 3×;Ç¡|t¢££ ׃(}M ÄÅ~gnZ67 ;PA8 ¬ ×}M qAQ€  ‚O¡m3Ìáâ(õƒ„¡…†â‡ƒŒ(YZ …†â‡ ˆ‰ Š(ÖK …†Í ifÏ‹ŒƒŒàÍ wh i l eÏŽƒŒ - -¡Ý;FX‡(ZEg Ì( Ý;FˆŠƒáâ(M [Ý;Fˆ P erlu%(y4(Mó%¡ôõ«^3Ì⇠ž ¥ %r (áâÖKX‘g’0 ¡;   ¥) C â‡Q$º8ST ¥ C+ + (â‡Q$ºST DEÄÅ¡¥ e†ƒX•(› ‰ˆ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  ZTžX™,1 |t(££ ZTó™,š.â‡;ˆ§Aƒ(¤zQc¥

Java,毕竟Java是由它们发展而来的。我会尽量说得简单一些,并且对 那些我认为的,非C/C++的程序员可能不熟悉的东西都作一些解释 学习]ava 大约在我的第一部书 Using C++( Osborne/ McGraw-Hll11989)出 版的时候,我就开始教C++语言了。教授编程语言成了我的职业。算起 来从1987年开始,我也走了不少地方。无论在哪里,我都能看到,听众 中有的人在微微点头,有的人面无表情,有的人疑惑不解。等到我在课堂 上为较小的人群开始讲课的时候,我发现做练习的时候,甚至是那些微笑 点头的人都对很多问题不甚了了。我觉得,这么多年倡议和主持软件开发 研讨会( Software Development Conference)的C++专题(以及后来的 Java专题),使得我和其他一些发言人的形成一种普通听众无法接受的讲 话风格。通常我们讲得太多,而且讲得也太快了。所以最终,由于听众水 平的参差不齐,以及我本人的表述不当,我失去了部分听众。或许这个要 求高了点,但由于我是那种不太喜欢传统授课方式的人(我相信很多人都 是因为课堂教学太枯燥才不喜欢的),因此我要让每个人都能跟上进度。 有一段时间,我写了很多小的程序。于是,通过实验与迭代( teration 种很适于Java程序设计的技术),我学会了Java。最后总结过去的教 学经验,我开了一门课。这门课用一种不连续的,易于理解的步骤来解决 教学中遇到的问题。此外,在培训班里(这是最理想的学习环境),每节课 之后还有练习。现在,我的公司, Mindview,Inc.提供公开的和在课堂 教学的 Thinking in Java的课程。这是一门很重要的入门课程,是为其 它更高级的课程打基础的。你可以在www.Mindview.net网站上找到更 加详细的内容。(这门课程也以 Hands- On java cd rom的形式发布。 可以在同一个网站上找到相关信息。) 培训班上的反馈给了我很大帮助。据此我修改材料,重新设置重点,直到 认为它是一本好教材。但是本书并不是课堂笔记;我尽量介绍更多的内 容,经过编排之后一个专题一个专题地作介绍。最重要的是,本书是专为 那些独自一人,与一门新的编程语言作斗争的读者们设计的。 目标 同我前面写的一本书, Thinking in C++一样,这本书的结构也是遵照 教学的需要进行编排的。更何况我写这本书就是要给培训班准备教料。我 是从一堂好的课应该教些什么内容,这个角度来安排本书的章节的。我的 目标是,先整理出一些能在合理的时间内讲完的东西,再做一些在课堂里 面可以完成的练习 在本书中我的目标是 第3页共18页

shhgs@wgqqh.com ￾ 3 ✁ ✂ 18 ✁ Ja va ¦§ Ja va qA*ì¨àQ(º©$‰ST3Ì ž¥ YÌٙ( ¯ C/C+ + (â‡Ý;X•(ª«Æ13Ì££  Java ¬F(3 Using C++ (Osb orn e/M cGraw-H i l l , 1 989 ) ! (M ­ C+ + ƒ,­®á⃎,(¯n°9 Q 1 987  [±,X²rµÜmF³Ë Æ;֊VªÆ 智`­EÉרdXÒÓ() æò%ÇsתÆ;ÙJÚz m3Öî) áâãJ(ïð¬,ŠÂš.ñòïðòó ôaõC Òg ٙA3 ‘­ò žXº`ö÷ ©V(ì R õ^áøu3×È73×È7r1b%( ș YÌùý3ª „3Fô(áâƒ1úû(š*ab(  ‡¶«(3 Thinking in C++3¦ (Ýü[ý­ ­E(î%Úþáø(« %¬áâãÔù­ó 3`‘(ºvw­ÌnZìR פzQø (ûå((  /¤¢!3Ì;FZ¢(4ì©(ª« ÁT3ÌFº`Ë ¶ÝEŽ(½B F *(„

1.每次只介绍一小部分内容,这样在进入下一部分之前,你就能完全掌握 这些概念。 使用尽可能简单短小的例程。这点有时会妨碍我使用“真实世界”的例 子。不过我发觉初学者们更乐意理解例程中的所有细节,而不是去感叹 例程所解决的问题的难度。同时课堂环境有限制,代码不能太多。毫无 疑问,我会因此受到使用“玩具例程”的批评,但是为了教学的需要我 准备接受。 3.仔细地安排特性的讲解顺序,这样你就能在看到其用法之前先对这个课 题有一点认识。当然,有些情况下不可能做到这点;这时,我会先作 个简单的介绍 4.我不会把我知道的所有东西全都告诉你们,我只会教给你们一些我认为 最重要的东西。我相信信息是分重要性的,有些东西,也就是那些只会 把人搞昏,只会加深人们对语言复杂性成见的细枝末节,百分之九十五 的程序员永远都不需要知道。以C为例,如果你记得操作符优先级的顺 序(反正我从来不记),你就能写出非常高效的代码。但如果你真的那么 做的话,那么读代码和维护程序的人都会被你整死。所以还是别记了, 真的搞不清楚的时候就用括号 5.每一节都只讲一个问题,这样讲课时间以及每次练习之间的间隔会很 短。这样不仅能让学员在课堂上保持精力集中,思维活跃,而且能给读 者更高的成就感 6.帮你打下一个坚实的基础,为进入更为复杂的课程,阅读难度更大的书 作准备。 JDK的HTML文档 SunMicrosystems的Java语言和类库(可从Java.sun.com自由下载) 会附带一份可以用Web浏览器阅读的电子文档。实际上,所有第三方的 Java实现都带了它自己,或者相同的文档。出版的Java书籍也差不多 都是在重复这些文档。所以,既然你可以下载,或者已经有了这份文档, 那么除非必要,否则本书不准备再重复这些文档。况且用Web浏览器找 个类会比在书里查快得多(在线的文档可能还更新)。因此本书只会简单 的告诉你,去查“jDK文档”。只有在例程讲解的过程中需要用文档来做 补充说明的时候,才会详细介绍某个类。 章节 设计本书时,我始终在想:大家都是怎样学Java的。课堂上的反馈给了 我很大的帮助,使我认识到哪些是需要着重阐明的难点。有几次,我雄心 勃勃地准备了很多内容,打算一次讲完,但是随着课程的发展,我发现: 如果一次要讲很多新的特性,你就必须把它们全都讲清楚,但是这样 来,学员们容易就会被搞糊涂的。所以我费了很大功夫,尽量作到在介绍 新特性的时候,每次都只讲尽可能少的内容 第4页共18页

shhgs@wgqqh.com ￾ 4 ✁ ✂ 18 ✁ 1. s¨ó3»ìR ¦FÚt3u ¡;cž ÌÖK 2. 爩Ý;ST»(â CmºçˆÍ ?ñ01Ï( X^ìfEš*¹¢£â*(Dmëå àXϑ âD£N(67(Uz‡º`Žäm Œ _€X;ÉV]Ü ¸6 ºæò&gçˆÍ 4âÏ( ™,­E(î% ÔùÊ& 3. ërøXQ(©£‡ ¦¡;FÖÖî%Q( m̪« [YÌóº Pª óºä|ª*¥ƒOPQŽ (ëå u (â‡ÆXî%…†E C ™ ÄÅ¡÷‰1/ç( ‡(ïQX÷) ¡;«!¯·RØ(_€ÄÅ¡?(YZ T(› YZ_€â‡(ªÆº¡¤DE ÷, ?(X!"(Mˆ#$ 5. s3åÆó©3×67 ¦©º4Ejs¨½Bu4(4%ºŠ  ¦X3;ÇEFº`J&Ä'ãY* V( à;¬ šR(Ž‘ 6. š¡]3×)ñ(rè ™Út™OP(ºâ *UzÂ( 1Ôù JDK H TM L Su n M i crosystem s ( Ja va ƒ%+(Ý java. sun. com ýq,) º3úÝEˆ Web -./*(0…²ñ>J DmLµ( Ja va ñíÆ,Aý þ 2š>‡(…²!( Ja va 1[BXV ÆFO ̅²DE 2¡ÝE, 2šôõm, ú…² YZŸ¯g% 34 XÔùÁO ̅²ˆ Web -./é 3×%º8F Ë5›‰V (F6(…²Ý;ô)æò óºST (#¡ Ï5Í JD K …²ÏómFâ©£(^â*î%ˆ…²QT 78$9(M dºêë:×% ab  :F|„Â;ÆÕ¦E Ja va (º`J(ïð¬, ŠÂ(š. çÙDg³Ìî%.>rÔù,ŠVìR ]°3¨© ¸.ºâ(ì¨ ìí„ ÄÅ3¨%©ŠVô(XQ ¡ghPA*cÆ©!"  ¦3 Q E*RSº?@(DEA,ŠÂB ©1gF ôXQ(M s¨Æó©©Ý;²(ìR

因此,本书的目标就是,在不依赖尚未介绍过的特性的前提下,每一章都 只讲一个或者一组相关的特性。这样你就可以在开始下一阶段的学习之 前,先在现有的知识背景下掌握这部分内容 下面简要介绍一下本书的各章。这些章节分别与 Thinking in Java课程 的授课和练习时间相对应。 第一章:对象简介 CD ROM上有相关课程)。这一章是一个关于面向对象的编程都讲了些 什么的概述,并且它还回答了“对象是什么?”这一根本性的问题。本章 涉及到接口与实现,抽象与封装,消息与方法,继承与合成,以及多态性 这一微妙的概念。此外它还对对象创建方面的问题作了个概述,这些问题 包括构造函数,如何持有对象,对象创建之后保存在哪里,以及神奇的, 能清除无用对象的垃圾回收器。此外,这一章还会介绍一些别的内容,包 括用异常来处理错误,用于创建反映敏捷的用户界面的多线程,网络与 Internet。你会知道是什么使Java如此的卓尔不群,而它又是凭什么能 大获成功的。 第二章:万物皆对象 ( CD ROM上有相关课程)。学完这一章之后你就能写第一个Java程序 了。本章从本质问题入手,先作一个综述:对象的 reference的概念 如何创建一个对象; primitive类型和数组的简介;作用域以及用垃圾回 收器是如何清理对象的;Java里面的所有东西是怎样变成一种新的数据 类型(类)的;创建类的基本方法;方法,参数,和返回值;名字的可见范 围以及如何使用其它类库里面的组件( component); statio关键词 注释与内置的文档。 第三段:控制程序流程 ( Thinking in C的 CD ROM上有相关课程)。这一章从C和C++带到 java里的操作符入手。接下来会讲操作符的通病、传递、提升以及优先 级。然后是实际上每种语言都有的基本的流程控制和选择操作:if-else 的判断结构,for和whie的循环结构,用 break和 continue以及 Java的带标签的 break和带标签的 continue(它们使得Java不再需 要goto了),以及用 switch进行选择。尽管这部分内容同C和C++ 的是一脉相承,不过还是有些区别。 第4章:初始化和清理 ( CD ROM上有相关课程)。这一章从介绍构造函数开始。构造函数能保 证进行适当的初始化。定义构造函数又引出了方法的重载( overload,因 为你可能需要好几个构造函数)。接下来讨论清理过程,这可不像它看上 去那么简单。通常,不要用对象的时候,直接把它丢了就是了,垃圾回收 第5页共18页

shhgs@wgqqh.com ￾ 5 ✁ ✂ 18 ✁ æò ( FXCDEF^(XQ(I s3ûÆ ó©3×2š3W>(XQ ¦¡ÝEF3G¥v  (CD ROM Jm>ºâ) 3û3×)¶ ¥,(áâÆ©,Ì nZ(Ö žA€,Í ¥,nZÊ Ï 3K Q(67 û LjgÊM„ñí N,„OP Q öR„ZŽ EjVSQ 3¶T(ÖKò½A¥¥,@µ¶(671,×Ö Ì67 U#üڈ‰ ÄÄm¥, ¥,@u&VF³Ë EjWX( ;!ŸÜˆ¥,(YZ€[/ò½ 3ûº3Ì (ìR U #ˆ\·Q]¢^_ ˆ)@ï`a'(ˆb1¶(V6â Hc„ I n tern et¡º…†nZç Ja va Äò(deX¼ àAüfnZ; ÂgŽ(    (CD ROM Jm>ºâ)E 3ûu¡;«3× Ja va ⇠, û h67t; /13×f„¥,( reference (ÖK Ä@3×¥, p ri m iti ve %M‰W(S 1ˆiEjˆYZ€ [/Ä!¢¥,( Ja va ˶(Dmª«Õ¦jŽ3†ô(‰ñ %M(%)( @%(r µ µ ‰ k€l Ñm(Ý n oEjÄ爧A%+˶(WÆ (com p on en t) stati c p³ £„ìõ(…²   (Thinking in C ( CD ROM Jm>ºâ) 3û C  C+ + g Ja va Ë(1t;ÊQº©1(qr Ôsr ItEj/ çñ>Js†ƒÆm(r (9⋌uv1„i f-el se (wxÝü for  wh i l e (ŽÝü ˆ break  con ti n u e Ej Ja va (y( break y( con ti n u e(A*ç‰ Ja va XÁî % goto ,) Ejˆ swi tch Úþuv©z ìR‡ C  C+ + (3{>R X^mÌ|   4  (CD ROM Jm>ºâ) 3ûüڈ‰üڈ‰;& }Úþ/ (fNO^üڈ‰ü~!,µ(,(overl oad æ ™¡Ý;î%‘i×üڈ‰)ÊQlm!¢^â ÝX}A<J ÏYZST· X%ˆ¥,(M ÒÊPA,, YZ€[

器会接手处理并释放内存的。这部分深入分析了垃圾回收器及其与众不同 之处。最后,它对初始化作了一个详细的考察:成员数据的自动初始化 成员数据的赋值初始化,初始化的顺序, static(静态)初始化,以及数组 的初始化 第5章:隐藏实现 CD ROM上有相关课程)。本章介绍如何封装代码,并且解释了为什么 类库中的某些部分会被公之于众,而有些部分却被隐藏起来了。这部分内 容从讲解ρ ackage和 import这两个关键词入手。这两个关键词能进 行文件级别的封装,主要用于类库的构建。接下来的课题是目录路径与文 件名。本章剩余的部分探讨了 public, private和 protected这三个 关键词和 package访问权限( package access)的概念,以及在不同的 上下文环境中各种访问权限所表示的意义 第6章:复用类 ( CD ROM上有相关课程)。最简单的复用类的方法是合成 ( compostion),也就是将对象嵌入新的类里。然而,合成并不是唯 的,使用已有的类来创建新类的方法。实际上所有的OOP语言都有继承 的概念。这是一种能为已有的类添加新功能(也可以修改它——这是第7 章的主题)的方法。通常用继承来复用代码的时候,不需要改动“基 类”,而是通过对它进行修补来产生要用的东西。在本章,你会学到 Java是如何用合成和继承来复用代码的,以及它们是如何运用的。 第7章:多态性 ( CD ROM上有相关课程)。多态性是OOP的基石,如果你只靠自学 可能要花九个月时间才能发现和理解这个概念。在本章中,通过许多小 的、简单的例子,你会看到如何通过继承来创建一个类系( a family of types),并且使用这个类系的基类来操控属于这个类系的对象。Java的 多态性能让你以整体的角度来看待这个类系的所有对象,也就是说绝大多 数代码不依赖于某个具体的类型。这能使程序更为灵活,于是编程和维护 代码也变得更加简单和便宜了。 第8章:接口( nterface)和内部类( nner Class) Java为设计和关系复用提供了一种特殊的工具:接口( interface),这是 一种纯粹的对象接口的抽象。 interface不仅仅是抽象类( abstract class)的极端形式,它还能是C++里面的“多重继承”的一个变例。用 它创建类之后,你就可以把它上传到多个基类 乍看上去,内部类就像是一种简单的隐藏代码的机制;也就是把一些类放 在另一些类里。但是,你会发现内部类并不是那么简单的;它知道包在它 外面的那个类,并且还能同它通信。有了内部类,你就可以写出更为优 第6页共18页

shhgs@wgqqh.com ￾ 6 ✁ ✂ 18 ✁ /ºÊ;]¢ž£kìV( |t€,YZ€[/j§„µX‡ u]b A¥fN1,3×êë( ¥„މñ(ý fN މñ(lfN fN(‡ sta ti c (‚S)fN Ej‰W (fN  5  (CD ROM Jm>ºâ) ûÄOP_€ ž££,™nZ %+*(:̺Ku)µ àm̃„…9Q, ì R©£ package i m port e×p³t; e×p³;Ú þ…Æç (OP Ã%ˆ)%+(ü@ÊQ(º7†‡ˆ„… ÆÑ û‰o(Šl, pu bl i c pri vate  protected L× p³ p a cka g e ‹6Œ (p a cka g e a ccess) (ÖK EjFX‡( J…Žä*J†‹6Œ D:(¹^  6  (CD ROM Jm>ºâ)bST(Oˆ%(µZŽ (compostion) [¥,Žtô(%Ëà ZŽžX3 ( çˆôm(%Q@ô%(µñ>JDm( OOP ƒÆmöR (ÖK 3†;™ôm(%äô; ([ÝEïðA  7 û(Ã7) (µ·ˆöRQOˆ_€(M Xî%ð Í r %Ï à^¥AÚþï7Q‘0%ˆ(ª«F û ¡ºEg Ja va ĈZŽöRQOˆ_€( EjA*ÄLˆ(  7 !"# (CD ROM Jm>ºâ)VSQ OOP (r’ ÄÅ¡óýE Ý;%×4d;ìí¢£ ×ÖKF û* ^ÐV» (r ST( ¡º<gÄ^öRQ@3×% (a fam i l y of typ es) žçˆ ×%(r%Q‹•) ×%(¥,Ja va ( VSQ;Ç¡E¤5(¤zQ<\ ×%(Dm¥, [$ÂV ‰_€XCD):×45(%M ;ç⇙UV )áâ _€[j‰äST,  8 $% ( Interface) &' ( Inner Class) Ja va ™abOˆIJ,3†X™(y4„ÊM (interface)  3†š›(¥,ÊM(N,i n terface X33N,%(a b stra ct cl a ss)(œÉ´ A; C+ + ˶(Í VöRÏ(3×jˆ A@%u ¡ÝEPAJÔgV×r% ž<JÏ ì%}3†ST(„…_€(¡Œ [P3Ì%k FŸ3Ì%Ë ¡ºìíì%žXYZST( A…†UFA ½¶(Y×% ž;‡AÖm,ì% ¡ÝE«!™

雅、清晰的代码。然而对于绝大多数人来说,内部类还是一种新的概念, 要把它熟练地运用到设计中去还需要时间。 第9章:用异常( Exception)处理错误 Java的基本哲学就是,要让有问题的代码根本没有机会运行。编译器会 尽可能地捕捉错误,但有些问题——也许是程序员的错,也许程序正好好 地运行着,但是其它什么地方出了问题——只能到程序运行的时候才能被 发现并处理。Java有一种能处理程序运行时所发生的所有问题的“异常 处理( exception handling)”机制。本章会讲解Java的try, catch throw, throws,以及 finally关键词的工作机理,以及何时抛出异 常,捕获异常之后又应该做些什么。此外,你还会看到Java的标准异 常,如何创建你自己的异常,构造函数里面碰到异常之后又该怎么做,以 及异常处理程序是如何发现异常的。 第10章:检测类型 Java的运行时类型识别(run- time type identification缩写为RTTI)能 让你在只持有基类的 reference的情况下,找出对象的准确类型。通常 情况下,你会故意忽略对象的准确类型,然后让Java的动态绑定机制 (就是多态性)来实现这个类的正确行为。但是,有的时候,能够准确地 知道这个对象是什么类型的是非常有用的。通常是因为,你要利用这种信 息来更为有效地进行一些特定情况的操作。本章还会介绍Java的 reflection机制。此外还包括,为什么要有RTTI和 reflection,如何使 用,以及什么情况下应该不使用RTTI。 第11章:对象的集合 如果程序只处理数量有限,且寿命可知的对象,那么这个程序是相当简单 的。总之,程序总是在不断地创建对象,但是具体是在什么时候,只有到 程序运行的时候才能知道。此外,不到运行时你是不会知道到底需要创建 多少对象,甚至是什么类型的对象。要解决这一普遍的编程难题,你必须 能够随时随地创建任意数量的对象。本章深入探讨了Java所提供的各种 容器类库。这些类库就是用来保存待处理对象的,它包括简单的数组,以 及更为复杂的像 Array List和 Hash Map之类的容器(数据结构)。 第12章: Java i/o系统 从理论上讲,所有程序都可以分成三个部分:输入,处理,和输出。也就 是说I/O(输入/输出)是程序的重要组成部分。在本章中,你会学到Java 所提供的各种用以读写文件,内存块,以及控制台的类。然后是Java I/O架构的演进以及JDK1.4中的“新”I/O(nio)。此外,本章还演 示了如何使用Java的对象序列化( object seria∥ ization)将一个对象 “流”化(这样就把它能放进磁盘或是通过网络进行传输),然后再重 建。接下来会讲解 Java archive(JAR)文件格式所使用的Java的压缩 第7页共18页

shhgs@wgqqh.com ￾ 7 ✁ ✂ 18 ✁  r !¡(_€à¥)ÂV‰ªQ$ ì%3†ô(ÖK %PA•½rLˆgab*Ïî%4  9 () ( Excepti on ) *+, Ja va (r ¢E %Çm67(_€K œm¡ºLþá/º ©Ý;r£¤^_ mÌ67[Ðâ‡(^ [Ð⇑‘ rLþ. §AnZrµ!,67ó;gâ‡Lþ(Md; ìíž]¢Ja va m3†;]¢â‡LþDì0(Dm67(Í \· ]¢(exception handling)Ï¡Œ ûº©£ Ja va ( try catch th row th rows Ej fi n al l y p³(y1¡¢ Ej¥!\ · £g\·uüvwTÌnZò½ ¡º ST (Üu â‡ÜFXxr@¥, 45FnZM ómg â‡Lþ(Md;…†ò½ XgLþ¡Xº…†ghî%@ V²¥, ¾¿nZ%M(¥,%£N 3°(áâU7 ¡gh ;¬¸¸r@±¹‰(¥, û|tŠl, Ja va DIJ(J† R/%+ Ì%+ˆQ&V\]¢¥,( AU#ST(‰W E j™OP(} ArrayLi st  H ash M ap u%(R/(‰ñÝü )  1 2 Java I/O 34 ¢mJ© Dmâ‡ÆÝEŽLׄ²t ]¢ ²![ $ I /O(²t/²!)â‡(%WŽF û* ¡ºEg Ja va DIJ(J†ˆE«…Æ ìV³ Ej‹Œ´(% Ja va I /O µü(¶ÚEj JD K 1 .4 *(Í ôÏI /O (n i o)ò½ û¶ ,Äçˆ Ja va (¥,‡·N (object serialization) 3×¥, Í 9ÏN ( ¦PA;kÚ¸¹2^HcÚþÔ²) Á @ÊQº©£ Ja va ARch i ve (JAR) …Æè´Dçˆ( Ja va (¦

类。最后是新引入的 preference API和正则表达式( regular expression 第13章:并发 Java提供了内置的,能让你在单个程序里面并发运行多个被称为线程的 子任务的支持。(除非你的机器上有多个处理器,否则多个子任务只是表 象。)虽然,这种多线程技术能被运用于任何地方,但是最常见的还是用 来创建反映敏捷的用户界面,这样程序在进行处理的时候,就不会妨碍用 户去揿按钮或输入数据了。本章会帮你在多线程编程领域打下一个坚实的 基础。 第14章:创建窗口与 Applet Java有一个 Swing GUi类库,这是一组能创建跨平台的用户界面的 类。它所创建的窗口程序既可以是运行在 World wide web上的 applet,也可以是独立的应用程序。本章只是 Swing编程的一个介绍。 此外还示范了 Applet的签发和 Java Web start。当然,它还介绍了 Java beans这项重要的技术。这是创建RAD( Rapid Application Development)编程工具的基础。 第15章:发现问题 对于开发能正常运行的程序,语言的检査机制就只能做到这里了。这一章 介绍了一些能帮助我们解决编译器所不能解决的问题的工具。自动化的单 元测试( automated unit testing)是这个领域的一项重大进展。本书定 制了一个保证程序能产生正确输出的测试系统,但是我们也介绍了 JUnit,这个事实上的标准。自动编译是由开放源代码的标准工具,Ant 来实施的,此外还有用于团队编程的CVS。本章还介绍了能在程序运行 时报告问题的Java断言机制( assertion,这里同“订单设计( Design by Contract)”一起讲), logging API, debugger, profiler,甚至 doclet(它能帮助我们发现源代码里面的问题)。 第16章:分析与设计 面向对象是一种新的,不同的思考编程的方式,而且很多人在第一次接触 ooP项目的时候,确实碰到了麻烦。一旦你理解了对象的概念,并且越 来越多地以面向对象的方式来思考问题的时候,你就能利用OOP的优势 来构思“好”的设计了。本章介绍了分析和设计的概念,以及一些具体的 方法,以帮助你在合理的时间内开发一个好的OOP程序。这些内容包括 UML( Unified Modeling Language)图表及其相关的方法,使用情况 ( use case), Class- Responsibility- Collaboration(CRC)卡片,迭代 式的开发,极限编程( EXtreme Programmng缩写是XP),用来开发与 演进( evolve)可复用的程序的方法,以及向面向对象的开发方式迁移的策 略 第8页共18页

shhgs@wgqqh.com ￾ 8 ✁ ✂ 18 ✁ %bô~t( p referen ce AP I 4:º´(reg u l a r exp ressi on )  1 3 56 Ja va IJ,ìõ( ;Ç¡FT×â‡Ë¶žìLþV×»™6â( ±¼('Ä(Ÿ¯¡(¡/JmV×]¢/ 34V׍±¼ó: ,)¢ †V6â°±;Lˆ)±rµ b· (ˆ Q@ï`a'(ˆb1¶ ¦â‡FÚþ]¢(M Xºˆ bϽ¾¿2²t‰ñ, ûºš¡FV6âáâui]3×)ñ( rè  1 4 789%: Appl et Ja va m3× Swi n g GU I %+ 3W;@ÀÍ´(ˆb1¶( %AD@(ÁMâ‡2ÝELþF Worl d Wi de Web J( a p p l et [ÝEùA(vˆâ‡ ûó Swi n g áâ(3× ò½n, Ap p l et (yì Java Web Start  A, JavaBeans x%(°± @ RAD (Ra p i d Ap p l i ca ti on D evel opm en t)áây4(rè  1 5 6;:?@ ¶ ¥,3†ô( X‡( áâ(µ´ àŠVªF3¨ÊË OOP x(M §ñ~g,ÌÍ3Ρ¢£,¥,(ÖK žÏ QÏVrE¶ ¥,(µ´Q 67(M ¡;­ˆ OOP (Ð QüÍ ‘Ï(ab, û,€ab(ÖK Ej3Ì45( µ Eš.¡FZ¢(4ìì3ב( OOP ⇠ÌìRU# U M L (U n ifi ed M odel i n g La n g u a g e) Ñ:j§>(µ 爷 (u se ca se) Cl a ss-Resp on si b i l ity-Col l a b ora ti on (CRC) ÒÓ Û_ ´(ì œ áâ (Extreme Programmng ¦« XP ) ˆQì„ ¶Ú(evol ve)ÝOˆ(â‡(µ Ej ¶ ¥,(ìµ´ÔÕ(Ö ª

附录A:传递和返回对象 由于java里面只有通过 reference这一种办法跟对象打交道,因此把对 象传给方法以及从方法里面返回对象,就有了一些很有趣的结果。这个附 录会讲,向方法传递对象和从方法返回对象的时候,应该怎样管理对象。 此外本章还谈到了 String类。在这个问题上,它用了一种不同的方法 附录B:Java编程准则 这个附录囊括了这么多年来我所发现和整理的,能对你设计和编写底层程 序起到帮助和指导作用的经验 附录c:补充资料 Mindview所提供的其它学习资料的介绍: 1.本书背后的 CD ROM,其中包括了本书的预备教材—CD版的 Foundations for Java 2.Www.Mindview.net还提供Hands-OnJava的第三版的CD ROM。这是基于本书的CD版的课程 3. Thinking in Java的课程。这是 Mindview公司的主要的入门级课 程,其内容也是基于这本书的。WWW.Mindview.net上有课程的安 排以及报名表。 4. Thinking in Enterprise Java这本书是讲适合企业编程的,更高级 的Java课题的。可以从www.Mindview.net下载。 5.TheJ2 EE Seminar。这个课程会介绍如何用Java编写真正能用 的,可以在Web上发布的,分布式应用程序。参见 www.Mindview.net 6.对象与系统设计( Designing Objects& Systems)的课程。面向对象的 分析,设计以及实现的技巧。参见www.Mindviewnet 7. Thinking in Patterns(用Java语言描述),这本书探讨的是一些比 较高级的java课题,包括设计模式,以及解决问题的技巧。可以从 www.Mindview.net下载。 8. Thinking in Patterns Seminar.这门课就是在讲上面提到的那本 书。WwW.Mindview.net上提供课程的安排以及报名表。 9. Design Consulting and Reviews。主要针对项目管理。 附录D:资源 我认为特别有用的Java书籍的清单 练习 讲课的时候我发觉,做一些简单的练习会对学生完全掌握所学的内容产生 无法替代的作用,因此我会在每一章的最后都加一些练习。 第9页共18页

shhgs@wgqqh.com ￾ 9 ✁ ✂ 18 ✁ AB ACDEF q) Ja va ˶óm^ referen ce 3†×Ù¥,]8† æòP¥ ,Ô¬µEjµ˶k€¥, m,3̊mØ(ÝÅ × †º©  µÔs¥,µk€¥,(M vwÕ¦z¢¥, ò½ ûÙg, Stri n g %F ×67J Aˆ,3†X‡(µ BJava  ׆Ú#, ZVQDìí¤¢( ;¥¡abá«hÛ⠇9gš.ÜÝ1ˆ(õƒ AB CGHIJ M i n dVi ew DIJ(§AEBÞó(„ 1 . H( CD ROM §*U#, (?ù­òCD ( Foundations for Java 2 . www. MindView. net IJ Hands-On Java (L( CD ROM  r) ( CD (ºâ 3. Th i n ki n g i n Ja va (ºâ  M i n dVi ew Kæ(Ã%(tFçº â §ìR[r) (www. MindView. net Jmºâ( øEjÊÑ: 4. Thinking in Enterprise Java ©/Zßnáâ( Rç ( Ja va º7(ÝE www. MindView. net , 5 . The J2EE Seminar ׺âºĈ Ja va á«?;ˆ ( ÝEF Web Jìí( í´vˆâ‡ www. MindView. net 6. ¥,„Õab(Designing Objects & Systems)(ºâ¶ ¥,( € abEjñí(°à www. MindView. net 7. Thinking in Patterns (ˆ Java ƒá) Šl(3Ì8 Rç( Ja va º7 U#ab}´ Ej£N67(°àÝE www. MindView. net , 8. Thinking in Patterns Seminar. FºF©J¶Ig(Y www. MindView. net JIJºâ(øEjÊÑ: 9 . Design Consulting and ReviewsÃ%â¥xz¢ AB DIK ٙX mˆ( Ja va 1(!T  ©º(Mì T3ÌST(½Bº¥E0cžDE(ìR‘0 Üã_(1ˆ æòºFs3û(bÆä3̽B

绝大多数的练习都非常简单,因此它们都能在课堂里面,在有限的时间以 及教师的监督下完成,这样就能保证所有的学生都已经理解这些内容了。 有些难度大一点,但是都算不上很难。(我敢肯定你会自己去找一些真正 的挑战的——但是更可能的情况是,它们会自己找上门来。) The Thinking in Java Annotated Solution Guide电子文档会提供某 些练习的答案,只要付很小一笔钱就能从Www.BruceEckel.com下 载 CD ROM 这一版还附送了包装在书背面的 CD ROM。过去我是反对在我的书里加 CD的,因为我觉得为了区区几个k的源代码而支付一张CD的价格,是 很划不来的,因此我更喜欢让读者到我的网站上去下载。但是,你很快就 会看到,这张CD有点不一样 这张CD里面没有本书的源代码,相反只是加了一个连到 www.Mindview.net上的源代码的链接(你不一定要用CD上的链接。 你可以直接上这个网站去找)。这么做有两个原因:第一,把CD送给出 版商的时候,源代码还没有完全写完;第二,这个方法能让我对源代码作 些改进,而且出问题的时候,也可以及时更正。 由于本书在这三个版本里作了许多修改,因此CD还包括了HTML格式 的本书的第一和第二版。其中包括了,由于前面所提到的原因,在后面的 版本中被删掉的章节。有可能你会要用这几章。此外,你可以从 www.Mindview.net下载本书的HTML格式的最新版(第三版),以及勘 误表。HTML有一个好处,那就是索引都是超链接,因此查起来比较简 单 这张400多兆的CD的绝大部分内容都是一个名为 Foundations for Java的多媒体课程。这其中包括了 Thin kirηgiC的课程。这门课是介 绍C的语法,操作符和函数的,而Java的这部分东西正是来源于C。此 外,它还包括了由我亲自制作和讲解的,CD版的 Hands- On java课程 的第二版的前七章。虽然 Hands- On Java的CD一直是单独卖的(第三 版的 Hands-On Java CD也一样,读到本书的时候,已经可以买到这张 CD了—一见www.Mindview.net),但是从第二版起,我就决定在CD 里面放上前面七章。因为相比第三版,这部分内容不会有很大的变化,因 此它们(再加上 Thinking in C)不仅能为你学习本书和上 Thinking in Java的课程打下更好的基础,而且还能让你了解 Hands- On Java CD第三版的质量和价值。 最初,我要求 Chuck allison把这张CD课程里面的 Thinking in C部 分做成一个单独的产品,不过最后还是决定把它放到第二版的 Thinking iC++和 Thinking in Java里面,因为老是会有一些根本没有任何C 基础的人来上我的课。他们想法很明显“我是一个聪明的程序员,我不想 第10页共18页

shhgs@wgqqh.com ￾ 10 ✁ ✂ 18 ✁ ÂV‰(½BƯ·ST æòA*Æ;Fº`˶ Fm (4E j­ä(åæŽ ¦;&}Dm(E0Æôõ¢£ ÌìR, mÌUzÂ3C ưXJŠU(çèO¡ºý þÏé3Ì? (Þé(Ý;(· A*ºý þéJFQ) The Thinking in Java Annotated Solution Guide 0…²ºIJ: ̽B(ê ó%늻3öì; www. BruceEckel. com , CD ROM 3™,UPF H¶( CD ROM ^Ïï¥F( Ëä CD ( 晉™,||i× k (Æ_€à'ë3í CD (îè  ŠïXQ( æòÒÓÇšg(HIJÏ, ¡Š› ºïóä,3×Þg www. MindView. net J(Æ_€(ðÊ(¡X3O%ˆ CD J(ðÊ ¡ÝEÒÊJ ×HIÏé) ZTme×åæ„3 P CD ™¬! ñ(M Æ_€œmc«  ×µ;Ç¥Æ_€1 3ÌðÚ à!67(M [ÝEj q) F L× Ë1,ÐVïð æò CD U#, H TM L è´ ( (3§*U#, q)¶DIg(åæ F¶(  *òó(ûåmÝ;¡º%ˆ iûò½ ¡ÝE www. MindView. net , ( H TM L è´(bô(L) Ejô _:H TM L m3ב] Yõ~Æ{ðÊ æò59Q8S T í 40 0 Vö( CD (ÂìRÆ3×љ Foundations for Java (V(5ºâ §*U#, Thinking in C (ºâ Fº  C (ƒ 1ˆ‰( à Ja va ( ª«QÆ) Cò ½ AU#,q÷ýŒ1©£( CD ( H a n ds-On Ja va ºâ ((øû¢ Hands-On Java ( CD 3ÒTùù((L ( Hands-On Java CD [3¦ g (M ôõÝE5g í CD , www. MindView. net) 9 NOF CD ˶kJ¶øûæ™>8L ìRXºmŠÂ(jN æ òA* (ÁäJ Thinking in C)X3;™¡EB J Thinking in Java (ºâ]‘(rè à;Ç¡,£ Hands-On Java CD bf %Ñ Ch u ck Al l i son P í CD ºâ˶( Thinking in C  TŽ3×Tù(‘2 X^bNOPAkg( Thinking in C++ Thinking in Java ˶ æ™úºm3ÌK œm± C rè(ªQJ(ºG*|Š9ûÍ 3×ü9(⇠X|

共18页,试读已结束,阅读完整版请下载
刷新页面下载完整文档
VIP每日下载上限内不扣除下载券和下载次数;
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
相关文档