Java编程思想(Thinking in Java)中文版第四版带目录

所需积分/C币:32 2017-10-16 09:48:06 5.24MB PDF
收藏 收藏
举报

Bruce Eckel 也 是 《 Thinking in C++ 》 的 作 者 , 该 书 曾 获 1995 年 SoftwareDevelopment Jolt Award 最佳书籍大奖。作为一名有 20 经验的编程专 家,曾教授过世界上许多地区的人进行对象编程。最开始涉及的领域是 C++,现 在也进军 Java。他是 C++标准协会有表决权的成员之一,曾就面向对象程序设计 这一主题写过其他 5 本书,发表过 150 多篇文章,并是多家计算机杂志的专栏作家,其中包括《Web Techniques》的 Java 专栏。曾出席过 C++和 Java 的“软件 开发者会议”,并分获“应用物理”
最有价值的。(HmηFina,助教,计算机科学学院,耶路撒冷希伯来大学,以色列) 有史以来最好的一本JM参考书。( Rovi nd a p,①e公司SUN产品线) 这是关于JaMa的一本好书。非常不错,你干得太好了!书中涉及的深度真让人震惊。一旦正式出 版,我肯定会买下它。我从%6年十月就开始学习JωM了。通过比较几本书,你的书可以纳入“必 读”之列。这几个月来,我一直在搞一个完全用Joa写的产品。你的书巩固了我一些薄弱的地方, 并大大延伸了我已知的东西。甚至在会见承包商的时候,我都引用了书中的一些解释,它对我们的开 发小组太有用了。通过询问组内成员我从书中学来的知识(比如数组和矢量的区别),可以判断他们 对JaMa的掌握有多深。( St eve Wl ki ns∞n.M通信公司资深专家) 好书!我见过的最好的一本Jαwa教材。( Jeff si nd a r,软件工程师, Kestr oα nput i ng公司) 感谢你的《 Thi nki ng i n JαwC》。终于有人能突破传统的计算机参考书模式,进人一个更全面、更深 入的境界。我读过许多书,只有你的和 Patric wnst on的书才在我心目中占据了一个位置。我已向 客户郑重推荐这本书。再次感谢。( Ri char d Br ooks,Joo顾问,Sun专业服务公司,达拉斯市) 其他书讨论的都是Jαwα“是什么”(讲述语法和库),或者J“怎样用”(编程实例)。 Thi nki ng i n Javo》显然与众不同,是我所知唯一一本解释JoM“为什么”的书:为什么象这样 设计:为什么象这样工作,为什么有时不能工作,为什么比C++好,为什么没有¢+好,等等。尽管 这本书也很好讲述了“是什么”和“怎样用”的问题,但它的特色并在于此。这本书特别适合那些想 追根溯源的人。( Robert s. St ephens on) 感谢您写出这么一本优秀的书,我对它越来越爱不释手。我的学生也喜欢它。( uc I ver son) 向你在《 hi nki ng i n Ja∨o》的工作致敬。这本书对因特网的未来进行了最恰当的揭示;我只是想对 你说声“谢谢”,它非常有价值。(Ptri∝Bre, Net k o i cer Man∝Mg公司 市面上大多数Ja书作为新手指南都是不错的。但它们的立意大多雷同,举的例子也有过多的重 复。从未没见过象您这样的一本书,它和那些书完全是两码事。我认为它是迄今为止最好的一本参考 书。请快些出版它!……另外,由于 hi nki ng i n Java》都这么好了,我也赶快去买了一本 《 Thi nki ng in c+》。( Gear ge La r anoDise, Li gt vor x技术咨询公司) 从前给你写过信,主要是表达对《 Thi nki ng i n c+》一书的惊叹(那本书在我的书架上占有突出的 位置)。今天,我很欣慰地看到你投向了J领域,并有幸拜读了最新的《 Thi nki ng i n Java电 子版。看过之后,我不得不说:“服了!”内容非常精彩,有很强的说服力,不象读那些干巴巴的参 考书。你讲到了Ja开发最重要、也最易忽略的方面:基本原理。( Sean Br ady) 你举的例子都非常浅显,很容易理解。Jowa的许多重要细节都照顾到了,而单薄的Jawa文档根本没 有涉及那些方面。另外,这本书没有浪费读者的时间。程序员已经知道了一些基本的事实,你在这个 基础上进行了很好的发挥。( Kai Enger t, I nnova i ve Sof twa e公司,德国) 我是您的《 Thi nki ng i n C+》的忠实读者。通读了您的JaM书的电子版以后,发现您在这两本书上 有同样高级别的写作水平。谢谢!( Pet er R.Nbdd 与得非常好的一本Jwa书…….我认为您的工作简直可以说“伟大”。我是芝加哥地区」aMa特别兴趣 组的头儿,已在最近的几次聚会上推荐了您的书和W站点。以后每个月开S会的时候,我都想把 《 Thi nki ng i n Java》作为基本的指导教材使用。一般来说,我们会每次讨论书中的一章内容。 (Mr k Er tes) 衷心感谢你的书,它写得太好了。我已把它推荐给自己的用户和PhD学生。(Hge Ler oy//risal nri a rennes Fr ance, Hea of sa ent i fi c cnut i ngand i nastri d tranfer) 我到现在只读了《 Thi nki ng i n Java》的40页内容,但已对它留下了深刻的印象。这无疑是见过的 最精彩的编程专业书.而且我本身就是一个作家,所以这点儿看法还是有些权威吧。我已订购了 《 Thi nki ng i n¢+》,已经等得迫不及待了—我是一名编程新手,最怕的就是散乱无章的学习线 索。所以必须在这里向您的出色工作表示敬意。以前看过的书似乎都有这方面的毛病:经常使我才提 起的兴致消弥于无形。但看了你的书以后,感觉好多了。( Genn becker, Edaat i ond t heatre As s od at i on) 谢谢您这本出色的书。在终于认识了JaM与¢+之间纠缠不清的一些事实后,我真的要非常感谢这 木书。对您的书非常满意!( Fe ix Bi z arui,Twnα eksI ndustry es, Laui s,ve) 恭喜你写出这么好的一本书。我是在有了阅读《 Thi nki ng i n+》的经历以后,才来看这本 Thi nki ng i n Ja》的,它确实没让我失望。( Jaoo van der mer we,软件专家, Drt fusi on Sys tens有限公司, ste l enbas d,南非) 这是我看过的最好的Jaw书之一。(EE. Pr i t car c,资深软件工程师,英国剑桥动画系统有限公 司) 你的东东让其他JoWa参考收黯然失色。看来其他作者都应该向你看齐了。( Br ett g Par ter,资深 程序员,Art&Lagd 我花了一、两个星期的时间来看你的书,并对以前我看过的一些JaWa书进行了比较。显然,只有你 的书才能让我真正“入门”。现在,我己向我的许多朋友推荐了这本书,他们都对其作出了很高的评 价。请接受我真诚的祝贺,并希望她早些正式出版。( Rama kr i shna bhupat hi,软件工程师,TC 公司,圣琼斯) 这是一本充满智慧的书,与简单的参考书有着截然不同的风格。它现在已成了我进行JaMa创作一份 主要参考。你的目录做得相当不错,让人一目了然,很快就能找到自己需要的东西。更高兴的是,这 本书没有写成一本改头换面的AP字典,也没有把我们这些程序员看作傻瓜。( Gant Sayer,Java opponent s coup Leader, Geecat a Syst ens Pty有限公司,澳大利亚 啧啧,一本可读性强、论据充分的JM书。外面有太多用词贫乏的Jwa书(也有几本好的),只有 你的书是最好的。那些垃圾在你的书前面不值一提。( Jahn root,we开发员,伦敦社会安全部) 我刚刚开始看《 hi nki ng i n Jo。我希望它能有更大的突破,因为红 hi nki ng n C+》写得实 在太好了。我是一名有经验的¢+程序员,事先看那本书对学习JaM。很有帮助。但我在JM上的经 验不够,希望这本新书能让我满意。您真是一名“高产高质”作者。( Kevi n K.LeWS Q ect Space公司技术员) 我认为这是本好书。从这本书中,我学到了与Jaw有关的所有知识。谢谢你能让这本书通过互联网 免费发行。如果不那样做,我根本不可能象现在这样有巨大的进步。但最令人高兴的是,你的书并没 有成为一本宫方Jawa手册,指出了J。一些不当的地方。你真是做了一件大好事。( Fr edkrik fix Bel g u 我现在经常查阅你的书。大约两年前,当我想开始学习C+的时候,是《|nsic8Ot》指导我游 历¢}增的世界。它使我在这方面的技能大增,并找到了一个较好的职位。现在出于工作上的原因需要 学习JαMQ,又是《 Thi nki ng in Jav》给我正确的指引。尽管现在可选择的书更多了,但我知道自 己别无选择。很奇妙:不是吗?现在看这本书的时候:我居然有一种重新认识自己的感觉。衷心感谢 你,我现在的理解又比以前深入多了。( Anand Kunar s.,软件工程师,(uterⅵsin公司,印 度 你的书给人一种“鹤立鸡群”的感觉。( Pet er Rdb ns∞,剑桥大学计算机实验室) 这是我看过的最好的一本Jaw¤参考书。现在想起来,能找到这样的一本书简直是幸运。谢谢! ( luck Pet er s,因特网产品线主管,| Ms nt er nat i and公司) 这本书太棒了!它已是我看过的第三本JM书了,真后悔没有早点儿发现它。前两本书都没坚持看 完,但我已决心看完这一本。不妨告诉你,当时我是想寻找关于内部类使用的一些资料,是我的朋友 告诉我网上能下载这本书。你干得真不错!( Jerry nowi r,Ms, Lucent techno og es) 在我看过的6本JMa书中,你的《 Thi nki ng i n Javo》是最好和最有用的。( M dhae van wtrs, Ph.D, TMR Assoaαte公司总裁) 我很想对《 Thi nki ng i n Java》说声谢谢。这是一本多么出色的书—并不单指它在网上免费发送! 作为一名学生,我认为你的书有不可估量的价值(我有《C艹+ I nsi de&ot》的拷贝,那是关于CH+的 另一本好书),因为它不仅教我怎样做,而且解释了为什么。这当然为我用+或JavC这样的语言 编程打下了坚实的基础。我有许多朋友都象我一样热爱编稈,在向他们推荐了这本书后,反映都非常 好,他们的看法同我一样。再次感谢您。顺便提一句,我是一个印尼畜牲,整天都喜欢和Jaa泡在 一起!( Ray Fr eder i c d g ad nat a, Tri sti大学学生, I ndonesi an Pa k) 你把这本书放在网上引起了相当程度的轰动,我对你的做法表示真诚的感谢与支持!( Shane Lebot hilli er,加拿大艾伯特大学计算机工程系学生) 告诉你吧,我是多么热烈地盼望读到你每个月的专栏!作为¢设计的新手,我要感谢你把即使最基 本的概念都讲得那么透彻和全面。我已下载了你的书:但我保证会在它正式出版后另行购买。感谢你 提供的所有帮助!( Dan gos hna,B. CZi eg c&o.) 祝贺你完成了一件伟大的作品。我现在下载的是《 Thi nki ng i n javω》的PD版。这本书还没有读 完,便迫不及待地跑到书店去找你的《 Thi nki ng i n+》。我在计算机界干了8年,是一个顾问 兼软件工桯师、教师/培训专家,最近辞职自己开了一问公司。所以见过不少的书。但是,正是这些 书使我的女朋友称我为“书呆子”!并不是我概念掌握得不深入——只是由于现在的发展太快,使我 短期内不能适应新技术。但这两本书都给了我很大的启示,它与以前接触过或买过的计算机参考书都 大不相同。写作风格很棒,每个新概念都讲得很好,书中充满了“智慧”。(Sirαη(α, SI nons ez@mrt. am Si non Says Gansu ti ng公司) 必须认为你的“ Thi nki ng i n Java》非常优秀!那正是我一直以来梦想的参考书。其中印象最深的是 有关使用Jawa1.1作软件设计时的一些优缺点分析。( Dr kEhr, Lexi kon Ver I ao, Bertesnar AG德国 谢谢您写出两本空前绝后的书(《 Thi nki ng i n Jac和《 Thi nki ngin c+》)。它们使我在面向 对象的程序设计上跨出了一大步。( Dond d lams an, DEnt er prise) 谢谢你花时间写出一本真正有用的Jw参考书,你现在绝对能为自己的工作感到骄傲了。( Domni c Tur na AC Suppor t) 这是我见过的最好的一本Jawa书。(Je- Yves meNAN, ni ef Sof twa e a ci t ec N- SYSTEM法国巴黎) 《 Thi nki ng i n Jave》无论在覆盖的范圉还是讲述方法上都有独到之处。看懂这本书非常容易,摘录 的代码段也很有说服力。(Ron,PhD, Exper t choi ce公司, Pi tshr gh PA 你的书太棒了。我看过许多编程书刊,只有你的书给人一种全新的视野。其他作者都该向你好好学习 才是。( N ng i an wang,信息系统工程师, The langur and Ga Thi nki ng i n Jaω》是一本出色的、可读性极强的书,我已向我的学生推荐阅读。(D.P rnan,计算机科学系,Q∝大学, Dined n市,新西兰) 在我看过的书中,你的书最有品味,不象有的书那样粗制滥造。任何搞软件开发的人都不应错过。 ( Jose suri d,Scy∝公司) 感谢您免费提供这本书,它是我看过或翻过的最好的一本。( Jef f lapchi ns ky, Net resul ts Meand og e公司程序员) 这本书简明扼要,看起来不仅毫不费力,而且象是一种亨受。( Ke th rit chi e,JM研发组,KL Gau公司) 这真的是我看过的最好的一本Ja书!( Doni e Eng 我看过的最好的JoMa书!( Ri c hof fa t h, Seni aa ci t ect, West a) 感谢你这本出色的书籍,我好久都没有经历让人如此愉悦的阅读过程了。( Fr ed tr i nd e, Act i un 公司) 你的写作能准确把握轻重缓急,并能成功抓住细节。这本书让学习变成了一件有趣的事情,我感觉满 意,非常满意!谢谢你这本出色的学习教程。( Rg es h rau,软件顾问) 《 Thi nki ng i n javo》让整个自由世界都感受到了震憾! Mko o sul li van,d∝公司总裁) 关于《 Thi nki ng i n G+》 荣获1995年由《软件开发》杂志评选的“最佳书籍”奖! “这本书可算一个完美的典型。把它放到自己的书架上绝对不会后悔。关于O数据流的那部分内容 包含了迄今为止我看过的最全面、最容易理解的文字。”( A St evens,《道伯博士》杂志投稿编 辑) E∝ke的书是唯—一本清楚解释了面向对象稈序设计基础问题的书。这本书也是C艹的一本出色教 材。”( And ew bi sto;《 Uhi x Reⅵew编辑)” Bu用他对(艹深刻的洞察力震惊了我们,《 Thi nki ng i n(+》无疑是各种伟大思想的出色组 合。如果想得到各种困难的C++问题的答案,请购买这本杰出的参老书”( ar y Ent snn nger,《对 象之道》的作者) ““ Thi nki ng in G+》非常耐心和有技巧地讲述了关于G的各种问题,包括如何使用內联、索 引、运算符过载以及动态对象。另外还包括一些高级主题,比如模板的正确使用、违例和多重继承 等。所有这些都精巧地编织在一起,成为E∝ke独特的对象和程序设计思想。所有C+开发者的书架 上都应摆上这本书。如果你正在用C+搞正式开发,这本书绝对有借鉴价值。”( chard Hd e Shw,《PC№αzire》投稿编辑)。 写在前面的话 我的兄弟ταα目前正在进行从硬件到编程领域的工作转变。我曾提醒他下一次大革命的重点将是遗传工程。 我们的微生物技术将能制造食品、燃泊和塑料;它们都是清洁的,不会造成污染,而且能使人类进一步透视 物理世界的奥秘。我认为相比之下电脑的进步会显得微不足道 但随后,我又意识到自己正在犯一些科幻作家常犯的错误:在技术中迷失了(这种事情在科幻小说里常有发 生)!如果是一名有经验的作家,就知道绝对不能就事论事,必须以人为中心。遗传对我们的生命有非常大 的影响,但不能十分确定它能抹淡计算机革命——或至少信息革命—的影响。信息涉及人相互间的沟通: 的确,汽车和轮子的发明都非常重要,但它们最终亦如此而已。真正重要的还是我们与世界的关系,而其中 最关键的就是通信。 这本书或许能说明一些问题。许多人认为我有点儿大胆或者稍微有些狂妄,居然把所有家当都摆到了Web 上。“这样做还有谁来买它呢?”他们问。假如我是一个十分守旧的人,那么绝对不这样干。但我确实不想 再沿原来的老路再写一本计算机参考书了。我不知道最终会发生什么事情,但的确认为这是我对一本书作出 的最明智的一个决定。 至少有一件事是可以肯定的,人们开始向我发送纠错反馈。这是一个令人震惊的体验,因为读者会看到书中 的每—个角落,并揪出那些藏匿得很深的技术及语法错诶。这样一来,和其他以传统方式发行的书不同,我 就能及时改正已知的所有类别的错误,而不是让它们最终印成铅字,堂而皇之地出现在各位的面前。俗话 说,“当局者迷,旁观者清”。人们对书中的错误是非常敏感的,往往毫不客气地指出:“我想这样说是错 误的:我的看法是…”。在我仔细研究后,往往发现自己确实有不当之处,而这是当初写作时根本没有意 识到的(检查多少遍也不行)。我意识到这是群体力量的一个可喜的反映,它使这本书显得的确与众不同。 但我随之又听到了另一个声音:“好吧,你在那儿放的电子版的确很有创意,但我想要的是从真正的出版社 那里印刷的一个版本!”事实上,我作出了许多努力,让它用普通打印机机就毹得到很好的阅读效果,但仍 然不象真正印刷的书那样正规。许多人不想在屏幕上看完整本书,也不喜欢拿着一叠纸阅读。无论打印格式 有多么好,这些人喜欢是仍然是真正的“书”(激光打印机的墨盒也太贵了一点)。现在看来,计算机的革 命仍未使出版界完全走岀传统的模式。但是,有一个学生向我推荐了未来出版的一种模式:书籍将首先在互 联网上出版,然后只有在绝对必要的前提下,才会印刷到纸张上。目前,为数众多的书籍销售都不十分理 想,许多出版社都在亏本。但如采用这种方式出版,就显得灵活得多,也吏容易保证嬴利。 这本书也从另一个角度也给了我深刻的启迪。我刚开始的时候以为Jα“只是另一种程序设计语言”。这个 想法在许多情况下都是成立的。但随着时间的推移,我对它的学习也愈加深人,开始意识到它的基本宗旨与 我见过的其他所有语言都有所区别。 程序设计与对复杂性的操控有很大的关系:对一个准备解决的问题,它的复东程度取决用于解决它的机器的 复杂稈度。正是由于这一复杂性的存在,我们的程序设计项目屡屡失败。对于我以前接触过的所有编程语 乞们都没能跳过这一框框,由此决定了它们的主要设计目标就是克服程序开发与维护中的复杂性。当 然,许多语言在设计时就已考虑到了复杂性的问题。但从另一角度看,实际设计时肯定会有另一些问题浮现 出来,需把它们考虑到这个复杂性的问题里。不可避免地,其他那些问题最后会变成最让程序员头痛的。例 如,¢+必须同C保持向后兼容(使C程序员能尽快地适应新环境),同时又要保证编程的效率。¢+在这两 个方面都设计得很好,为其赢得了不少的声誉。但它们同时也暴露出了额外的复杂性,阻碍了某些项目的成 功实现(当然,你可以责备程序员和管理层,但假如一种语言能通过捕获你的错误而提供帮助,它为什么不 那样做呢?)。作为另一个例子,Ⅵ sud bcsi c(VB)同当初的BASC有关的紧密的联系。而BASC并没有 打算设计成一种能全面解决问题的语言,所以堆加到\B身上的所有扩展都造成了令人头痫和难于管理和维护 的语法。另一方面,C+、Ⅴ和其他如 Sd i k之类的语言均在复杂性的问题上下了一番功夫。由此得到 的结果使是,它们在解决特定类型的问题时是非常成功的。 在理解到Jα¤最终的目标是减轻程序员的负担时,我才真正感受到了震憾,尽管它的潜台词好象是说:“除 了缩短时间和减小产生健壮代码的难度以外,我们不关心其他任何事情。”在目前这个初级阶段:达到那个 目标的后果便是代码不能特别快地运行(尽管有许多保证都说」α终究有一天会运冇得多么快),但它确实 将开发时间缩短到令人惊讶的地步——几乎只有创建一个等效C+程序一半甚至更短的时间。这段节省下来 的时间可以产生更大的效益,但Jawa并不仅止于此。它甚至更上一层楼,将重要性越来越明显的一切复杂任 务都封裝在内,比如网络程序和多线程处理等等。Jαa的各种语言特性和库在任何时候都能使那些任务轻而 易举完成。而且最后,它解决了一些真正有些难度的复杂问题:跨平台程序、动态代码改换以及安全保护等 等。换在从前,其中任何每一个都能使你头大如斗。所以不管我们见到了什么性能问题,Jowo的保证仍然是 非常有效的:它使程序员显著提高了程序设计的效率 在我看来,编程效率提升后影响最大的就是Wh网络程序设计以前非常困难,而」Mo使这个问题迎刃而解 (而且Jav也在不断地进步,使解决这类问题变得越来越容易)。网络程序的设计要求我们相互间史有效率 地沟通,而且至少要比电话通信来得便宜(仅仅电子函件就为许多公司带来了好处)。随着我们网上通信越 来越频繁,令人震惊的事情会慢慢发生,而且它们令人吃惊的程度绝不亚于当初工业革命给人带来的震憾。 在各个方面:创建栏序;按计划编制程序;构造用户界面,使桯序能与用户沟通;在不冋类型的机器上运行 程序:以及方便地编写程序,使其能通过因特网通信—Jaa提高了人与人之间的“通信带宽”。而且我认 为通信革命的结果可能并不单单是数量庞大的比特到处传来传去那么简单。我们认为认清真正的革命发生在 哪里,因为人和人之间的交流变得更方便了——个体与个体之间,个体与组之间,组与组之间,甚至在星球 之间。有人预言下一次大革命的发生就是由于足够多的人和足够多的相互连接造成的,而这种革命是以整个 世界为基础发生的。JaM可能是、也可能不是促成那次革命的直接因素,但我在这里至少感觉自己在做一些 有意义的工作尝试教会大家一种重要的语言! 引|言 同人类任何语言一样,Jova为我们提供了一种表达思想的方式。如操作得当,同其他方式相比,随着问题变 得愈大和愈复杂,这种表达方式的方便性和灵活性会显露无遗。 不可将JωM简单想象成一系列特性的集合;如孤立地看,有些特性是没有任何意义的。只有在考虑“设 计”、而非考虑简单的编码时,才可真正体会到」αwvo的强大。为了按这种方式理解Joo,首先必须掌握它 与编程的一些基本概念。本书讨论了编程问题、它们为何会成为问题以及Jaa用以解决它们的方法。所以, 我对每一章的解释都建立在如何用语言解决一种特定类型的问题基础上。按这种方式,我希望引导您一步一 步地进入Jowa的世界,使其最终成为您最自然的一种语言。 贯穿本书,我试图在您的大脑里建立一个模型——或者说一个“知识结构”。这样可加深对语言的理解。若 遇到难解之处,应学会把它填入这个模型的对应地方,然后自行演绎出答案。事实上,学习任何语言时,脑 海里有一个现成的知识结构往往会起到事半功倍的效果。 1.前提 本书假定读者对编程多少有些熟悉。应已知道程序是一系列语句的集合:知道子程序/函数/宏是什么,知 道象“f”这样的控制语句,也知道象wile"”这样的循环结构。注意这些东西在大量语言里都是类似的。 假如您学过一种宏语言,或者用过Pr|之类的工具,那么它们的基本概念并无什么区别。总之,只要能习惯 基本的编程概念,就可顺利阅读本书。当然,QC+程序员在阅读时能占到更多的便宜。但即使不熟悉C 样不要把自己排除在外(尽管以后的学习要付出更大的努力)。我会讲述面向对象编程的概念,以及Jw的 基本控制机制,所以不用担心自己会打不好基础。况且,您需要学习的第一类知识就会涉及到基本的流程控 制语句。 尽管经常都会谈及C和¢+语言的一些特性,但并没有打算使它们成为内部参考,而是想帮助所有程序员都 能正确地看待那两种语言。毕竟,JαM是从它们那里衍生出来的。我将试着尽可能地简化这些引用和参考, 并合理地解释一名非¢C艹程序员通常不太熟悉的內容。 2.Java的学习 在我第一本书《ing¢艹》面市的几乎同一时间(brne№GαwHIl于1989年出版),我开始教授那 种语言。程序设计语言的教授已成为我的专业。自1989年以来,我便在世界各地见过许多昏昏欲睡、满脸茫 然以及困惑不解的面容。开始在室内面向较少的一组人授课以后,我从作业中发现了一些特别的问题。即使 那些上课面带会心的微笑或者频频点头的学生:对许多问题也存在认识上的混淆。在过去几年间的“软件开 发会议”上,由我主持C+分组讨论会(现在变成了Jav讨论会)。有的演讲人试图在很短的时间内向听众 灌输过多的主题。所以到最后,尽管听众的水平都还可以,而且提供的材料也很充足,但仍然损失了一部分 听众。这可能是由于问得太多了,但由于我是那些采取传统授课方式的人之一,所以很想使每个人都能跟上 讲课进度。 有段时间,我编制了大量教学简报。经过不断的试验和修订(或称“反复”,这是在Jo程序设计中非常有 用的一项技术),最后成功地在一门诛程中集成了从我的教学经验中总结出来的所有东西我在很长一段 时间里都在使用。其中由一系列离散的、易于消化的小步骤组成,而且每个小课程结束后都有一些适当的练 习。我目前已在JαMa公开研讨会上公布了这一课程,大家可到httr// Ww Br uceEckel.m了解详情(对矸 讨会的介绍也以①RO的形式提供,具体信息可在同样的W站点找到)。 从每一次研讨会收到的反馈都帮助我修改及重新制订学习材料的重心,直到我最后认为它成为一个完善的教 学载体为止。但本书并非仅仅是一本教科书—我尝试在其中装入尽可能多的信息,并按照主题进行了有序 的分类。无论如何,这本书的主要宗旨是为那些独立学习的人士服务,他们正准备深入一门新的程序设计语 而没有太大的可能参加此类专业研讨会 3.目标 就象我的前一本书巛 Thi nki ng i n∝+》一样,这本书面向语言的教授进行了良好的结构与组织。特别地,我 的目标是建立一套有序的机制,可帮助我在自己的研讨会上更好地进行语言教学。在我思考书中的一章时 实际上是在想如何教好一堂识。我的目标是得到一系列规模适中的教学模块,可以在合理的时间内教完。随 后是一些精心挑选的练习,可以在课堂上当即完成。 在这本书中,我想达到的目标总结如下 8 (1)每一次都将教学内容向前推进一小步,便于读者在继续后面的学习前消化前面的内容 (2)采用的示例尽可能简短。当然,这样做有时会妨碍我解决“现实世界”的问题。但我同时也发现对那些 新手来说,如果他们能理解每一个细节,那么一般会产生更大的学习兴趣。而假如他们一开始就被要解决的 问颎的深庋和广度所震惊,那么一般都不会收到很好的学习效果。另外在实砾教学过程中,对能够摘录的代 码数量是有严重限制的。另一方面,这样做无疑会有些人会批评我采用了“不真实的例子”,但只要能起到 良好的效果,我宁愿接受这一指责。 (3)要揭示的特性按照我精心挑选的顺序依次出场;而且尽可能符合读者的思想历程。当然;我不可能永远 都做到这一点;在那些情况下:会给出一段简要的声明,指出这个问题。 (4)只把我认为有助于理解语言的东西介绍绘读者,而不是把我知道的一切东西都抖出来,这并非藏私。我 认为信息的重要程度是存在一个合埕的层次的。有些情况是95%的程序员都永远不必了解的。如强行学习, 只会干扰他们的正常思维,从而加深语言在他们面前表现出来的难度。以C语言为例,假如你能记住运算符 优先次序表(我从来记不住),那么就可以写出更“聪明”的代码。但再深入想一层,那也会使代码的读者 /维护者感到因扰。所以忘了那些次序吧,在拿不准的时候加上括号即可。 (5)每一节都有明确的学习重点,所以教学时间(以及练习的间隔时间)非常短。这样做不仅能保持读者思 想的活跃,也能使问题更容易理解,对自己的学习产生更大的信心。 6)提供一个坚实的基础,使读者能充分理解问题,以便更容易转向一些更加困难的课程和书籍。 4.联机文档 由sun微系统公司提供的Java语言和库(可免费下载)配套提供了电子版的用户帮助手册,可用Web浏览器 阅读。此外,由其他厂商开发的几乎所有类似产品都有一套等价的文档系统。而目前出版的与JaMa有关的几 乎所有书籍都重复了这分文档。所以你要么已经拥有了它,要么需要下载。所以除非特别必要,否则本书不 会重复那份文档的内容。因为一般地说,用W浏览器查找与类有关的资料比在书中查找方便得多(电子版 的东西更新也快)。只有在需要对文档进行补充,以便你能理解一个特定的例子时,本书才会提供有关类的 些附加说明。 5.章节 本书在设计时认真考虑了人们学习Jowa语言的方式。在我授课时,学生们的反映有效地帮助了我认识哪些部 分是比较困难的,需特别加以留意。我也曾经一次讲述了太多的问题,但得到的教训是:假如包括了大量新 特性:就需要对它们全部作岀解释,而这特别容易加深学生们的混淆。因此,我进行了大量努力:使这本书 次尽可能地少涉及一些问题 所以:我在书中的目椓是让每一章都讲述一种语言特性:或者只讲述少数几个相互关联的特性。这样一来 读者在转向下一主题时,就能史容易地消化前面学到的知识 下面列出对本书各章的一个简要说明,它们与我实际进行的课堂教学是对应的。 1)第1章:对象入门 这一章是对面向对象的程序设计(P)的一个综述,其中包括对“什么是对象”之类的基本问题的回答,并 讲述了接口与实现、抽象与封装、消息与函数、继承与合成以及非常重要的多形性的概念。这一章会向大家 提出一些对象创建的基夲问题,比如构建器、对象存在于何处、创建好后把它们置于什么地方以及魔术般的 垃圾收集器(能够清除不再需要的对象)。要介绍的另一些问还包括通过违例实现的错误控制机訇、反应 灵敏的用户界面的多线程处理以及连网和因特网等等。大家也会从中了解到是什么使得JaM如业特别,它为 什么取得了这么大的成功,以及与面向对象的分析与设计有关的问题。 (2)第2章:切都是对象 本章将大家带到可以着手写自己的第一个JαMw程序的地方,所以必须对一些基本概念作出解释,其中包括对 象“勹柄”的概念;恁样创建一个对象;对基本数据类型和数组的一个介绍;作用域以及垃圾收集器清除对 象的方式;如何将Jowa中的所有东西都归为—种新数据类型(类),以及如何创建自己的类;函数、自变量 以及返回值;名字的可见度以及使用来自其他库的组件; stati c关键字;注释和嵌入文档等等。 3)第3章:控制程序流程 本章开始介绍起源于C和C+,由Jw继承的所有运算符。除此以外,还要学习运算符一些不易使人注意的 问题,以及涉及造型、升迁以及优先次序的问题。随后要讲述的是基本的流程控制以及选择运算,这些是几

...展开详情
试读 127P Java编程思想(Thinking in Java)中文版第四版带目录
立即下载 低至0.43元/次 身份认证VIP会员低至7折
    抢沙发
    一个资源只可评论一次,评论内容不能少于5个字
    关注 私信 TA的资源
    上传资源赚积分,得勋章
    最新推荐
    Java编程思想(Thinking in Java)中文版第四版带目录 32积分/C币 立即下载
    1/127
    Java编程思想(Thinking in Java)中文版第四版带目录第1页
    Java编程思想(Thinking in Java)中文版第四版带目录第2页
    Java编程思想(Thinking in Java)中文版第四版带目录第3页
    Java编程思想(Thinking in Java)中文版第四版带目录第4页
    Java编程思想(Thinking in Java)中文版第四版带目录第5页
    Java编程思想(Thinking in Java)中文版第四版带目录第6页
    Java编程思想(Thinking in Java)中文版第四版带目录第7页
    Java编程思想(Thinking in Java)中文版第四版带目录第8页
    Java编程思想(Thinking in Java)中文版第四版带目录第9页
    Java编程思想(Thinking in Java)中文版第四版带目录第10页
    Java编程思想(Thinking in Java)中文版第四版带目录第11页
    Java编程思想(Thinking in Java)中文版第四版带目录第12页
    Java编程思想(Thinking in Java)中文版第四版带目录第13页
    Java编程思想(Thinking in Java)中文版第四版带目录第14页
    Java编程思想(Thinking in Java)中文版第四版带目录第15页
    Java编程思想(Thinking in Java)中文版第四版带目录第16页
    Java编程思想(Thinking in Java)中文版第四版带目录第17页
    Java编程思想(Thinking in Java)中文版第四版带目录第18页
    Java编程思想(Thinking in Java)中文版第四版带目录第19页
    Java编程思想(Thinking in Java)中文版第四版带目录第20页

    试读已结束,剩余107页未读...

    32积分/C币 立即下载 >