首页 Java编程思想第四版完整中文高清版(免费).pdf

Java编程思想第四版完整中文高清版(免费).pdf

Java编程思想第四版完整中文高清版(免费).pdf

上传者: zq541727568 2011-11-07 评分1 评论0 下载29 收藏0 阅读量450 暂无简介 简介 举报

简介:本文档为《Java编程思想第四版完整中文高清版(免费)pdf》,可适用于专题技术领域,主题内容包含《ThinkingInJava》中文版作者:BruceEckel主页:http:wwwBruceEckelcom编译:TransBot主页:http符等。

《ThinkingInJava》中文版作者:BruceEckel主页:http:wwwBruceEckelcom编译:TransBot主页:http:memberneteasecom~transbot致谢--献给那些直到现在仍在孜孜不倦创造下一代计算机语言的人们!指导您利用万维网的语言进行面向对象的程序设计完整的正文、更新内容及程序代码可从http:wwwbruceeckelcom下载从Java的基本语法到它最高级的特性(网络编程、高级面向对象能力、多线程)《ThinkingInJava》都能对您有所裨益。BruceEckel优美的行文以及短小、精悍的程序示例有助于您理解含义模糊的概念。面向初学者和某种程度的专家教授Java语言而不是与平台有关的理论覆盖Java的大多数重要方面:Swing和新集合系统讲述Java的高级理论:网络编程、多线程处理、虚拟机性能以及同非Java代码的连接个有用的Java程序行以上代码解释面向对象基本理论从继承到设计方案来自与众不同的获奖作者BruceEckel可通过万维网免费索取源码和持续更新的本书电子版从wwwBruceEckelcom获得配套CD(含小时以上的合成语音授课)读者如是说:“最好的Java参考书绝对让人震惊”“购买Java参考书最明智的选择”“我见过的最棒的编程指南”。BruceEckel也是《ThinkinginC》的作者该书曾获年SoftwareDevelopmentJoltAward最佳书籍大奖。作为一名有经验的编程专家曾教授过世界上许多地区的人进行对象编程。最开始涉及的领域是C现在也进军Java。他是C标准协会有表决权的成员之一曾就面向对象程序设计这一主题写过其他本书发表过多篇文章并是多家计算机杂志的专栏作家其中包括《WebTechniques》的Java专栏。曾出席过C和Java的“软件开发者会议”并分获“应用物理”与“计算机工程”的学士和硕士学位。读者的心声比我看过的Java书好多了非常全面举例都恰到好处显得颇具“智慧”。和其他许多Java书籍相比我觉得它更成熟、连贯、更有说服力、更严谨。总之写得非常好肯定是一本学习Java的好书。(AnatolyVorobeyTechnionUniversityHaifa以色列)。是我见过的最好的编程指南对任何语言都不外如是。(JoakimzieglerFIX系统管理员)感谢你写出如此优秀的一本Java参考书。(DrGavinPillayRegistrarKingEdwardVIIHospital南非)再次感谢您这本令人震惊的书。我以前真的有点儿不知所从的感觉(因为不是C程序员)但你的书浅显易懂使我能很快掌握Java差不多就是阅读的速度吧。能从头掌握基本原理和概念的感觉真好再也不用通过不断的试验和出错来建立概念模型了。希望不久能有机会参加您的讲座。(RandallRHawleyAutomationTechnicianEliLillyCo)我迄今为止看过的最好的计算机参考书。(TomHolland)这是我读过的关于程序设计的最好的一本书第章有关设计方案的内容是我这么久以来看过的最有价值的。(HanFinci助教计算机科学学院耶路撒冷希伯来大学以色列)有史以来最好的一本Java参考书。(RavindraPaiOracle公司SUNOS产品线)这是关于Java的一本好书。非常不错你干得太好了!书中涉及的深度真让人震惊。一旦正式出版我肯定会买下它。我从年十月就开始学习Java了。通过比较几本书你的书可以纳入“必读”之列。这几个月来我一直在搞一个完全用Java写的产品。你的书巩固了我一些薄弱的地方并大大延伸了我已知的东西。甚至在会见承包商的时候我都引用了书中的一些解释它对我们的开发小组太有用了。通过询问组内成员我从书中学来的知识(比如数组和矢量的区别)可以判断他们对Java的掌握有多深。(SteveWilkinsonMCI通信公司资深专家)好书!我见过的最好的一本Java教材。(JeffSinclair软件工程师KestralComputing公司)感谢你的《ThinkinginJava》。终于有人能突破传统的计算机参考书模式进入一个更全面、更深入的境界。我读过许多书只有你的和PatrickWinston的书才在我心目中占据了一个位置。我已向客户郑重推荐这本书。再次感谢。(RichardBrooksJava顾问Sun专业服务公司达拉斯市)其他书讨论的都是Java“是什么”(讲述语法和库)或者Java“怎样用”(编程实例)。《ThinkinginJava》显然与众不同是我所知唯一一本解释Java“为什么”的书:为什么象这样设计为什么象这样工作为什么有时不能工作为什么比C好为什么没有C好等等。尽管这本书也很好讲述了“是什么”和“怎样用”的问题但它的特色并在于此。这本书特别适合那些想追根溯源的人。(RobertSStephenson)感谢您写出这么一本优秀的书我对它越来越爱不释手。我的学生也喜欢它。(ChuckIverson)向你在《ThinkinginJava》的工作致敬。这本书对因特网的未来进行了最恰当的揭示我只是想对你说声“谢谢”它非常有价值。(PatrickBarrellNetworkOfficerMamcoQAFMfg公司)市面上大多数Java书作为新手指南都是不错的。但它们的立意大多雷同举的例子也有过多的重复。从未没见过象您这样的一本书它和那些书完全是两码事。我认为它是迄今为止最好的一本参考书。请快些出版它!另外由于《ThinkinginJava》都这么好了我也赶快去买了一本《ThinkinginC》。(GeorgeLaframboiseLightWorx技术咨询公司)从前给你写过信主要是表达对《ThinkinginC》一书的惊叹(那本书在我的书架上占有突出的位置)。今天我很欣慰地看到你投向了Java领域并有幸拜读了最新的《ThinkinginJava》电子版。看过之后我不得不说:“服了!”内容非常精彩有很强的说服力不象读那些干巴巴的参考书。你讲到了Java开发最重要、也最易忽略的方面:基本原理。(SeanBrady)你举的例子都非常浅显很容易理解。Java的许多重要细节都照顾到了而单薄的Java文档根本没有涉及那些方面。另外这本书没有浪费读者的时间。程序员已经知道了一些基本的事实你在这个基础上进行了很好的发挥。(KaiEngertInnovativeSoftware公司德国)我是您的《ThinkinginC》的忠实读者。通读了您的Java书的电子版以后发现您在这两本书上有同样高级别的写作水平。谢谢!(PeterRNeuwald)写得非常好的一本Java书我认为您的工作简直可以说“伟大”。我是芝加哥地区Java特别兴趣组的头儿已在最近的几次聚会上推荐了您的书和Web站点。以后每个月开SIG会的时候我都想把《ThinkinginJava》作为基本的指导教材使用。一般来说我们会每次讨论书中的一章内容。(MarkErtes)衷心感谢你的书它写得太好了。我已把它推荐给自己的用户和PhD学生。(HuguesLeroyIrisaInriaRennesFranceHeadofScientificComputingandIndustrialTranfert)我到现在只读了《ThinkinginJava》的页内容但已对它留下了深刻的印象。这无疑是见过的最精彩的编程专业书而且我本身就是一个作家所以这点儿看法还是有些权威吧。我已订购了《ThinkinginC》已经等得迫不及待了我是一名编程新手最怕的就是散乱无章的学习线索。所以必须在这里向您的出色工作表示敬意。以前看过的书似乎都有这方面的毛病经常使我才提起的兴致消弥于无形。但看了你的书以后感觉好多了。(GlennBeckerEducationalTheatreAssociation)谢谢您这本出色的书。在终于认识了Java与C之间纠缠不清的一些事实后我真的要非常感谢这本书。对您的书非常满意!(FelixBizaouiTwinOaksIndustriesLouisaVa)恭喜你写出这么好的一本书。我是在有了阅读《ThinkinginC》的经历以后才来看这本《ThinkinginJava》的它确实没让我失望。(JacovanderMerwe软件专家DataFusionSystems有限公司Stellenbosch南非)这是我看过的最好的Java书之一。(EEPritchard资深软件工程师英国剑桥动画系统有限公司)你的东东让其他Java参考收黯然失色。看来其他作者都应该向你看齐了。(BrettgPorter资深程序员ArtLogic)我花了一、两个星期的时间来看你的书并对以前我看过的一些Java书进行了比较。显然只有你的书才能让我真正“入门”。现在我已向我的许多朋友推荐了这本书他们都对其作出了很高的评价。请接受我真诚的祝贺并希望她早些正式出版。(RamaKrishnaBhupathi软件工程师TCSI公司圣琼斯)这是一本充满智慧的书与简单的参考书有着截然不同的风格。它现在已成了我进行Java创作一份主要参考。你的目录做得相当不错让人一目了然很快就能找到自己需要的东西。更高兴的是这本书没有写成一本改头换面的API字典也没有把我们这些程序员看作傻瓜。(GrantSayerJavaComponentsGroupLeaderCeedataSystemsPty有限公司澳大利亚)啧啧一本可读性强、论据充分的Java书。外面有太多用词贫乏的Java书(也有几本好的)只有你的书是最好的。那些垃圾在你的书前面不值一提。(JohnRootWeb开发员伦敦社会安全部)我刚刚开始看《ThinkinginJava》。我希望它能有更大的突破因为《ThinkinginC》写得实在太好了。我是一名有经验的C程序员事先看那本书对学习Java很有帮助。但我在Java上的经验不够希望这本新书能让我满意。您真是一名“高产高质”作者。(KevinKLewisObjectSpace公司技术员)我认为这是本好书。从这本书中我学到了与Java有关的所有知识。谢谢你能让这本书通过互联网免费发行。如果不那样做我根本不可能象现在这样有巨大的进步。但最令人高兴的是你的书并没有成为一本官方Java手册指出了Java一些不当的地方。你真是做了一件大好事。(FrederikFix,Belgium)我现在经常查阅你的书。大约两年前当我想开始学习C的时候是《CInsideOut》指导我游历C的世界。它使我在这方面的技能大增并找到了一个较好的职位。现在出于工作上的原因需要学习Java又是《ThinkinginJava》给我正确的指引。尽管现在可选择的书更多了但我知道自己别无选择。很奇妙不是吗?现在看这本书的时候我居然有一种重新认识自己的感觉。衷心感谢你我现在的理解又比以前深入多了。(AnandKumarS软件工程师Computervision公司印度)你的书给人一种“鹤立鸡群”的感觉。(PeterRobinson剑桥大学计算机实验室)这是我看过的最好的一本Java参考书。现在想起来能找到这样的一本书简直是幸运。谢谢!(ChuckPeterson因特网产品线主管IVISInternational公司)这本书太棒了!它已是我看过的第三本Java书了真后悔没有早点儿发现它。前两本书都没坚持看完但我已决心看完这一本。不妨告诉你当时我是想寻找关于内部类使用的一些资料是我的朋友告诉我网上能下载这本书。你干得真不错!(JerryNowlinMTSLucentTechnologies)在我看过的本Java书中你的《ThinkinginJava》是最好和最有用的。(MichaelVanWaasPhDTMRAssociates公司总裁)我很想对《ThinkinginJava》说声谢谢。这是一本多么出色的书并不单指它在网上免费发送!作为一名学生我认为你的书有不可估量的价值(我有《CInsideOut》的拷贝那是关于C的另一本好书)因为它不仅教我怎样做而且解释了为什么。这当然为我用C或Java这样的语言编程打下了坚实的基础。我有许多朋友都象我一样热爱编程在向他们推荐了这本书后反映都非常好他们的看法同我一样。再次感谢您。顺便提一句我是一个印尼畜牲整天都喜欢和Java泡在一起!(RayFrederickDjajadinataTrisakti大学学生IndonesianPork)你把这本书放在网上引起了相当程度的轰动我对你的做法表示真诚的感谢与支持!(ShaneLeBouthillier加拿大艾伯特大学计算机工程系学生)告诉你吧我是多么热烈地盼望读到你每个月的专栏!作为OOP设计的新手我要感谢你把即使最基本的概念都讲得那么透彻和全面。我已下载了你的书但我保证会在它正式出版后另行购买。感谢你提供的所有帮助!(DanCashmerBCZieglerCo)祝贺你完成了一件伟大的作品。我现在下载的是《ThinkinginJava》的PDF版。这本书还没有读完便迫不及待地跑到书店去找你的《ThinkinginC》。我在计算机界干了年是一个顾问兼软件工程师、教师/培训专家最近辞职自己开了一间公司。所以见过不少的书。但是正是这些书使我的女朋友称我为“书呆子”!并不是我概念掌握得不深入只是由于现在的发展太快使我短期内不能适应新技术。但这两本书都给了我很大的启示它与以前接触过或买过的计算机参考书都大不相同。写作风格很棒每个新概念都讲得很好书中充满了“智慧”。(SimonGolandsimonsezsmarttcomSimonSaysConsulting公司)必须认为你的《ThinkinginJava》非常优秀!那正是我一直以来梦想的参考书。其中印象最深的是有关使用Java作软件设计时的一些优缺点分析。(DirkDuehrLexikonVerlagBertelsmannAG德国)谢谢您写出两本空前绝后的书(《ThinkinginJava》和《ThinkinginC》)。它们使我在面向对象的程序设计上跨出了一大步。(DonaldLawsonDCLEnterprises)谢谢你花时间写出一本真正有用的Java参考书你现在绝对能为自己的工作感到骄傲了。(DominicTurnerGEACSupport)这是我见过的最好的一本Java书。(JeanYvesMENGANTChiefSoftwareArchitectNATSYSTEM法国巴黎)《ThinkinginJava》无论在覆盖的范围还是讲述方法上都有独到之处。看懂这本书非常容易摘录的代码段也很有说服力。(RonChanPhDExpertChoice公司PittsburghPA)你的书太棒了。我看过许多编程书刊只有你的书给人一种全新的视野。其他作者都该向你好好学习才是。(NingjianWang信息系统工程师TheVanguradGroup)《ThinkinginJava》是一本出色的、可读性极强的书我已向我的学生推荐阅读。(DrPualGorman计算机科学系Otago大学Dunedin市新西兰)在我看过的书中你的书最有品味不象有的书那样粗制滥造。任何搞软件开发的人都不应错过。(JoseSuriolScylax公司)感谢您免费提供这本书它是我看过或翻过的最好的一本。(JeffLapchinskyNetResultsTechnologies公司程序员)这本书简明扼要看起来不仅毫不费力而且象是一种享受。(KeithRitchieJava研发组KLGroup公司)这真的是我看过的最好的一本Java书!(DanielEng)我看过的最好的Java书!(RichHoffarthSeniorArchitectWestGroup)感谢你这本出色的书籍我好久都没有经历让人如此愉悦的阅读过程了。(FredTrimbleActium公司)你的写作能准确把握轻重缓急并能成功抓住细节。这本书让学习变成了一件有趣的事情我感觉满意非常满意!谢谢你这本出色的学习教程。(RajeshRau软件顾问)《ThinkinginJava》让整个自由世界都感受到了震憾!(MikoO'SullivanIdocs公司总裁)关于《ThinkinginC》:荣获年由《软件开发》杂志评选的“最佳书籍”奖!“这本书可算一个完美的典型。把它放到自己的书架上绝对不会后悔。关于IO数据流的那部分内容包含了迄今为止我看过的最全面、最容易理解的文字。”(AlStevens《道伯博士》杂志投稿编辑)“Eckel的书是唯一一本清楚解释了面向对象程序设计基础问题的书。这本书也是C的一本出色教材。”(AndrewBinstock《UnixReview》编辑)”“Bruce用他对C深刻的洞察力震惊了我们《ThinkinginC》无疑是各种伟大思想的出色组合。如果想得到各种困难的C问题的答案请购买这本杰出的参考书”(GaryEntsminger《对象之道》的作者)“《ThinkinginC》非常耐心和有技巧地讲述了关于C的各种问题包括如何使用内联、索引、运算符过载以及动态对象。另外还包括一些高级主题比如模板的正确使用、违例和多重继承等。所有这些都精巧地编织在一起成为Eckel独特的对象和程序设计思想。所有C开发者的书架上都应摆上这本书。如果你正在用C搞正式开发这本书绝对有借鉴价值。”(RichardHaleShaw《PCMagazine》投稿编辑)。写在前面的话我的兄弟Todd目前正在进行从硬件到编程领域的工作转变。我曾提醒他下一次大革命的重点将是遗传工程。我们的微生物技术将能制造食品、燃油和塑料它们都是清洁的不会造成污染而且能使人类进一步透视物理世界的奥秘。我认为相比之下电脑的进步会显得微不足道。但随后我又意识到自己正在犯一些科幻作家常犯的错误:在技术中迷失了(这种事情在科幻小说里常有发生)!如果是一名有经验的作家就知道绝对不能就事论事必须以人为中心。遗传对我们的生命有非常大的影响但不能十分确定它能抹淡计算机革命或至少信息革命的影响。信息涉及人相互间的沟通:的确汽车和轮子的发明都非常重要但它们最终亦如此而已。真正重要的还是我们与世界的关系而其中最关键的就是通信。这本书或许能说明一些问题。许多人认为我有点儿大胆或者稍微有些狂妄居然把所有家当都摆到了Web上。“这样做还有谁来买它呢?”他们问。假如我是一个十分守旧的人那么绝对不这样干。但我确实不想再沿原来的老路再写一本计算机参考书了。我不知道最终会发生什么事情但的确认为这是我对一本书作出的最明智的一个决定。至少有一件事是可以肯定的人们开始向我发送纠错反馈。这是一个令人震惊的体验因为读者会看到书中的每一个角落并揪出那些藏匿得很深的技术及语法错误。这样一来和其他以传统方式发行的书不同我就能及时改正已知的所有类别的错误而不是让它们最终印成铅字堂而皇之地出现在各位的面前。俗话说“当局者迷旁观者清”。人们对书中的错误是非常敏感的往往毫不客气地指出:“我想这样说是错误的我的看法是”。在我仔细研究后往往发现自己确实有不当之处而这是当初写作时根本没有意识到的(检查多少遍也不行)。我意识到这是群体力量的一个可喜的反映它使这本书显得的确与众不同。但我随之又听到了另一个声音:“好吧你在那儿放的电子版的确很有创意但我想要的是从真正的出版社那里印刷的一个版本!”事实上我作出了许多努力让它用普通打印机机就能得到很好的阅读效果但仍然不象真正印刷的书那样正规。许多人不想在屏幕上看完整本书也不喜欢拿着一叠纸阅读。无论打印格式有多么好这些人喜欢是仍然是真正的“书”(激光打印机的墨盒也太贵了一点)。现在看来计算机的革命仍未使出版界完全走出传统的模式。但是有一个学生向我推荐了未来出版的一种模式:书籍将首先在互联网上出版然后只有在绝对必要的前提下才会印刷到纸张上。目前为数众多的书籍销售都不十分理想许多出版社都在亏本。但如采用这种方式出版就显得灵活得多也更容易保证赢利。这本书也从另一个角度也给了我深刻的启迪。我刚开始的时候以为Java“只是另一种程序设计语言”。这个想法在许多情况下都是成立的。但随着时间的推移我对它的学习也愈加深入开始意识到它的基本宗旨与我见过的其他所有语言都有所区别。程序设计与对复杂性的操控有很大的关系:对一个准备解决的问题它的复杂程度取决用于解决它的机器的复杂程度。正是由于这一复杂性的存在我们的程序设计项目屡屡失败。对于我以前接触过的所有编程语言它们都没能跳过这一框框由此决定了它们的主要设计目标就是克服程序开发与维护中的复杂性。当然许多语言在设计时就已考虑到了复杂性的问题。但从另一角度看实际设计时肯定会有另一些问题浮现出来需把它们考虑到这个复杂性的问题里。不可避免地其他那些问题最后会变成最让程序员头痛的。例如C必须同C保持向后兼容(使C程序员能尽快地适应新环境)同时又要保证编程的效率。C在这两个方面都设计得很好为其赢得了不少的声誉。但它们同时也暴露出了额外的复杂性阻碍了某些项目的成功实现(当然你可以责备程序员和管理层但假如一种语言能通过捕获你的错误而提供帮助它为什么不那样做呢?)。作为另一个例子VisualBasic(VB)同当初的BASIC有关的紧密的联系。而BASIC并没有打算设计成一种能全面解决问题的语言所以堆加到VB身上的所有扩展都造成了令人头痛和难于管理和维护的语法。另一方面C、VB和其他如Smalltalk之类的语言均在复杂性的问题上下了一番功夫。由此得到的结果便是它们在解决特定类型的问题时是非常成功的。在理解到Java最终的目标是减轻程序员的负担时我才真正感受到了震憾尽管它的潜台词好象是说:“除了缩短时间和减小产生健壮代码的难度以外我们不关心其他任何事情。”在目前这个初级阶段达到那个目标的后果便是代码不能特别快地运行(尽管有许多保证都说Java终究有一天会运行得多么快)但它确实将开发时间缩短到令人惊讶的地步几乎只有创建一个等效C程序一半甚至更短的时间。这段节省下来的时间可以产生更大的效益但Java并不仅止于此。它甚至更上一层楼将重要性越来越明显的一切复杂任务都封装在内比如网络程序和多线程处理等等。Java的各种语言特性和库在任何时候都能使那些任务轻而易举完成。而且最后它解决了一些真正有些难度的复杂问题:跨平台程序、动态代码改换以及安全保护等等。换在从前其中任何每一个都能使你头大如斗。所以不管我们见到了什么性能问题Java的保证仍然是非常有效的:它使程序员显著提高了程序设计的效率!在我看来编程效率提升后影响最大的就是Web。网络程序设计以前非常困难而Java使这个问题迎刃而解(而且Java也在不断地进步使解决这类问题变得越来越容易)。网络程序的设计要求我们相互间更有效率地沟通而且至少要比电话通信来得便宜(仅仅电子函件就为许多公司带来了好处)。随着我们网上通信越来越频繁令人震惊的事情会慢慢发生而且它们令人吃惊的程度绝不亚于当初工业革命给人带来的震憾。在各个方面:创建程序按计划编制程序构造用户界面使程序能与用户沟通在不同类型的机器上运行程序以及方便地编写程序使其能通过因特网通信Java提高了人与人之间的“通信带宽”。而且我认为通信革命的结果可能并不单单是数量庞大的比特到处传来传去那么简单。我们认为认清真正的革命发生在哪里因为人和人之间的交流变得更方便了个体与个体之间个体与组之间组与组之间甚至在星球之间。有人预言下一次大革命的发生就是由于足够多的人和足够多的相互连接造成的而这种革命是以整个世界为基础发生的。Java可能是、也可能不是促成那次革命的直接因素但我在这里至少感觉自己在做一些有意义的工作尝试教会大家一种重要的语言!引言同人类任何语言一样Java为我们提供了一种表达思想的方式。如操作得当同其他方式相比随着问题变得愈大和愈复杂这种表达方式的方便性和灵活性会显露无遗。不可将Java简单想象成一系列特性的集合如孤立地看有些特性是没有任何意义的。只有在考虑“设计”、而非考虑简单的编码时才可真正体会到Java的强大。为了按这种方式理解Java首先必须掌握它与编程的一些基本概念。本书讨论了编程问题、它们为何会成为问题以及Java用以解决它们的方法。所以我对每一章的解释都建立在如何用语言解决一种特定类型的问题基础上。按这种方式我希望引导您一步一步地进入Java的世界使其最终成为您最自然的一种语言。贯穿本书我试图在您的大脑里建立一个模型或者说一个“知识结构”。这样可加深对语言的理解。若遇到难解之处应学会把它填入这个模型的对应地方然后自行演绎出答案。事实上学习任何语言时脑海里有一个现成的知识结构往往会起到事半功倍的效果。前提本书假定读者对编程多少有些熟悉。应已知道程序是一系列语句的集合知道子程序/函数/宏是什么知道象“If”这样的控制语句也知道象“while”这样的循环结构。注意这些东西在大量语言里都是类似的。假如您学过一种宏语言或者用过Perl之类的工具那么它们的基本概念并无什么区别。总之只要能习惯基本的编程概念就可顺利阅读本书。当然CC程序员在阅读时能占到更多的便宜。但即使不熟悉C一样不要把自己排除在外(尽管以后的学习要付出更大的努力)。我会讲述面向对象编程的概念以及Java的基本控制机制所以不用担心自己会打不好基础。况且您需要学习的第一类知识就会涉及到基本的流程控制语句。尽管经常都会谈及C和C语言的一些特性但并没有打算使它们成为内部参考而是想帮助所有程序员都能正确地看待那两种语言。毕竟Java是从它们那里衍生出来的。我将试着尽可能地简化这些引用和参考并合理地解释一名非CC程序员通常不太熟悉的内容。Java的学习在我第一本书《UsingC》面市的几乎同一时间(OsborneMcGrawHill于年出版)我开始教授那种语言。程序设计语言的教授已成为我的专业。自年以来我便在世界各地见过许多昏昏欲睡、满脸茫然以及困惑不解的面容。开始在室内面向较少的一组人授课以后我从作业中发现了一些特别的问题。即使那些上课面带会心的微笑或者频频点头的学生对许多问题也存在认识上的混淆。在过去几年间的“软件开发会议”上由我主持C分组讨论会(现在变成了Java讨论会)。有的演讲人试图在很短的时间内向听众灌输过多的主题。所以到最后尽管听众的水平都还可以而且提供的材料也很充足但仍然损失了一部分听众。这可能是由于问得太多了但由于我是那些采取传统授课方式的人之一所以很想使每个人都能跟上讲课进度。有段时间我编制了大量教学简报。经过不断的试验和修订(或称“反复”这是在Java程序设计中非常有用的一项技术)最后成功地在一门课程中集成了从我的教学经验中总结出来的所有东西我在很长一段时间里都在使用。其中由一系列离散的、易于消化的小步骤组成而且每个小课程结束后都有一些适当的练习。我目前已在Java公开研讨会上公布了这一课程大家可到http:wwwBruceEckelcom了解详情(对研讨会的介绍也以CDROM的形式提供具体信息可在同样的Web站点找到)。从每一次研讨会收到的反馈都帮助我修改及重新制订学习材料的重心直到我最后认为它成为一个完善的教学载体为止。但本书并非仅仅是一本教科书我尝试在其中装入尽可能多的信息并按照主题进行了有序的分类。无论如何这本书的主要宗旨是为那些独立学习的人士服务他们正准备深入一门新的程序设计语言而没有太大的可能参加此类专业研讨会。目标就象我的前一本书《ThinkinginC》一样这本书面向语言的教授进行了良好的结构与组织。特别地我的目标是建立一套有序的机制可帮助我在自己的研讨会上更好地进行语言教学。在我思考书中的一章时实际上是在想如何教好一堂课。我的目标是得到一系列规模适中的教学模块可以在合理的时间内教完。随后是一些精心挑选的练习可以在课堂上当即完成。在这本书中我想达到的目标总结如下:()每一次都将教学内容向前推进一小步便于读者在继续后面的学习前消化前面的内容。()采用的示例尽可能简短。当然这样做有时会妨碍我解决“现实世界”的问题。但我同时也发现对那些新手来说如果他们能理解每一个细节那么一般会产生更大的学习兴趣。而假如他们一开始就被要解决的问题的深度和广度所震惊那么一般都不会收到很好的学习效果。另外在实际教学过程中对能够摘录的代码数量是有严重限制的。另一方面这样做无疑会有些人会批评我采用了“不真实的例子”但只要能起到良好的效果我宁愿接受这一指责。()要揭示的特性按照我精心挑选的顺序依次出场而且尽可能符合读者的思想历程。当然我不可能永远都做到这一点在那些情况下会给出一段简要的声明指出这个问题。()只把我认为有助于理解语言的东西介绍给读者而不是把我知道的一切东西都抖出来这并非藏私。我认为信息的重要程度是存在一个合理的层次的。有些情况是%的程序员都永远不必了解的。如强行学习只会干扰他们的正常思维从而加深语言在他们面前表现出来的难度。以C语言为例假如你能记住运算符优先次序表(我从来记不住)那么就可以写出更“聪明”的代码。但再深入想一层那也会使代码的读者/维护者感到困扰。所以忘了那些次序吧在拿不准的时候加上括号即可。()每一节都有明确的学习重点所以教学时间(以及练习的间隔时间)非常短。这样做不仅能保持读者思想的活跃也能使问题更容易理解对自己的学习产生更大的信心。()提供一个坚实的基础使读者能充分理解问题以便更容易转向一些更加困难的课程和书籍。联机文档由Sun微系统公司提供的Java语言和库(可免费下载)配套提供了电子版的用户帮助手册可用Web浏览器阅读。此外由其他厂商开发的几乎所有类似产品都有一套等价的文档系统。而目前出版的与Java有关的几乎所有书籍都重复了这份文档。所以你要么已经拥有了它要么需要下载。所以除非特别必要否则本书不会重复那份文档的内容。因为一般地说用Web浏览器查找与类有关的资料比在书中查找方便得多(电子版的东西更新也快)。只有在需要对文档进行补充以便你能理解一个特定的例子时本书才会提供有关类的一些附加说明。章节本书在设计时认真考虑了人们学习Java语言的方式。在我授课时学生们的反映有效地帮助了我认识哪些部分是比较困难的需特别加以留意。我也曾经一次讲述了太多的问题但得到的教训是:假如包括了大量新特性就需要对它们全部作出解释而这特别容易加深学生们的混淆。因此我进行了大量努力使这本书一次尽可能地少涉及一些问题。所以我在书中的目标是让每一章都讲述一种语言特性或者只讲述少数几个相互关联的特性。这样一来读者在转向下一主题时就能更容易地消化前面学到的知识。下面列出对本书各章的一个简要说明它们与我实际进行的课堂教学是对应的。()第章:对象入门这一章是对面向对象的程序设计(OOP)的一个综述其中包括对“什么是对象”之类的基本问题的回答并讲述了接口与实现、抽象与封装、消息与函数、继承与合成以及非常重要的多形性的概念。这一章会向大家提出一些对象创建的基本问题比如构建器、对象存在于何处、创建好后把它们置于什么地方以及魔术般的垃圾收集器(能够清除不再需要的对象)。要介绍的另一些问题还包括通过违例实现的错误控制机制、反应灵敏的用户界面的多线程处理以及连网和因特网等等。大家也会从中了解到是什么使得Java如此特别它为什么取得了这么大的成功以及与面向对象的分析与设计有关的问题。()第章:一切都是对象本章将大家带到可以着手写自己的第一个Java程序的地方所以必须对一些基本概念作出解释其中包括对象“句柄”的概念怎样创建一个对象对基本数据类型和数组的一个介绍作用域以及垃圾收集器清除对象的方式如何将Java中的所有东西都归为一种新数据类型(类)以及如何创建自己的类函数、自变量以及返回值名字的可见度以及使用来自其他库的组件static关键字注释和嵌入文档等等。()第章:控制程序流程本章开始介绍起源于C和C由Java继承的所有运算符。除此以外还要学习运算符一些不易使人注意的问题以及涉及造型、升迁以及优先次序的问题。随后要讲述的是基本的流程控制以及选择运算这些是几乎所有程序设计语言都具有的特性:用ifelse实现选择用for和while实现循环用break和continue以及Java的标签式break和contiune(它们被认为是Java中“不见的gogo”)退出循环以及用switch实现另一种形式的选择。尽管这些与C和C中见到的有一定的共通性但多少存在一些区别。除此以外所有示例都是完整的Java示例能使大家很快地熟悉Java的外观。()第章:初始化和清除本章开始介绍构建器它的作用是担保初始化的正确实现。对构建器的定义要涉及函数过载的概念(因为可能同时有几个构建器)。随后要讨论的是清除过程它并非肯定如想象的那么简单。用完一个对象后通常可以不必管它垃圾收集器会自动介入释放由它占据的内存。这里详细探讨了垃圾收集器以及它的一些特点。在这一章的最后我们将更贴近地观察初始化过程:自动成员初始化、指定成员初始化、初始化的顺序、static(静态)初始化以及数组初始化等等。()第章:隐藏实现过程本章要探讨将代码封装到一起的方式以及在库的其他部分隐藏时为什么仍有一部分处于暴露状态。首先要讨论的是package和import关键字它们的作用是进行文件级的封装(打包)操作并允许我们构建由类构成的库(类库)。此时也会谈到目录路径和文件名的问题。本章剩下的部分将讨论publicprivate以及protected三个关键字、“友好”访问的概念以及各种场合下不同访问控制级的意义。()第章:类再生继承的概念是几乎所有OOP语言中都占有重要的地位。它是对现有类加以利用并为其添加新功能的一种有效途径(同时可以修改它这是第章的主题)。通过继承来重复使用原有的代码时(再生)一般需要保持“基础类”不变只是将这儿或那儿的东西串联起来以达到预期的效果。然而继承并不是在现有类基础上制造新类的唯一手段。通过“合成”亦可将一个对象嵌入新类。在这一章中大家将学习在Java中重复使用代码的这两种方法以及具体如何运用。()第章:多形性若由你自己来干可能要花个月的时间才能发现和理解多形性的问题这一特性实际是OOP一个重要的基础。通过一些小的、简单的例子读者可知道如何通过继承来创建一系列类型并通过它们共有的基础类对那个系列中的对象进行操作。通过Java的多形性概念同一系列中的所有对象都具有了共通性。这意味着我们编写的代码不必再依赖特定的类型信息。这使程序更易扩展包容力也更强。由此程序的构建和代码的维护可以变得更方便付出的代价也会更低。此外Java还通过“接口”提供了设置再生关系的第三种途径。这儿所谓的“接口”是对对象物理“接口”一种纯粹的抽象。一旦理解了多形性的概念接口的含义就很容易解释了。本章也向大家介绍了Java的“内部类”。()第章:对象的容纳对一个非常简单的程序来说它可能只拥有一个固定数量的对象而且对象的“生存时间”或者“存在时间”是已知的。但是通常我们的程序会在不定的时间创建新对象只有在程序运行时才可了解到它们的详情。此外除非进入运行期否则无法知道所需对象的数量甚至无法得知它们确切的类型。为解决这个常见的程序设计问题我们需要拥有一种能力可在任何时间、任何地点创建任何数量的对象。本章的宗旨便是探讨在使用对象的同时用来容纳它们的一些Java工具:从简单的数组到复杂的集合(数据结构)如Vector和Hashtable等。最后我们还会深入讨论新型和改进过的Java集合库。()第章:违例差错控制Java最基本的设计宗旨之一便是组织错误的代码不会真的运行起来。编译器会尽可能捕获问题。但某些情况下除非进入运行期否则问题是不会被发现的。这些问题要么属于编程错误要么则是一些自然的出错状况它们只有在作为程序正常运行的一部分时才会成立。Java为此提供了“违例控制”机制用于控制程序运行时产生的一切问题。这一章将解释try、catch、throw、throws以及finally等关键字在Java中的工作原理。并讲述什么时候应当“掷”出违例以及在捕获到违例后该采取什么操作。此外大家还会学习Java的一些标准违例如何构建自己的违例违例发生在构建器中怎么办以及违例控制器如何定位等等。()第章:JavaIO系统理论上我们可将任何程序分割为三部分:输入、处理和输出。这意味着IO(输入/输出)是所有程序最为关键的部分。在这一章中大家将学习Java为此提供的各种类如何用它们读写文件、内存块以及控制台等。“老”IO和Java的“新”IO将得到着重强调。除此之外本节还要探讨如何获取一个对象、对其进行“流式”加工(使其能置入磁盘或通过网络传送)以及重新构建它等等。这些操作在Java的版中都可以自动完成。另外我们也要讨论Java的压缩库它将用在Java的归档文件格式中(JAR)。()第章:运行期类型鉴定若只有指向基础类的一个句柄Java的运行期类型标鉴定(RTTI)使我们能获知一个对象的准确类型是什么。一般情况下我们需要有意忽略一个对象的准确类型让Java的动态绑定机制(多形性)为那一类型实现正确的行为。但在某些场合下对于只有一个基础句柄的对象我们仍然特别有必要了解它的准确类型是什么。拥有这个资料后通常可以更有效地执行一次特殊情况下的操作。本章将解释RTTI的用途、如何使用以及在适当的时候如何放弃它。此外Java的“反射”特性也会在这里得到介绍。()第章:传递和返回对象由于我们在Java中同对象沟通的唯一途径是“句柄”所以将对象传递到一个函数里以及从那个函数返回一个对象的概念就显得非常有趣了。本章将解释在函数中进出时什么才是为了管理对象需要了解的。同时也会讲述String(字串)类的概念它用一种不同的方式解决了同样的问题。()第章:创建窗口和程序片Java配套提供了“抽象Windows工具包”(AWT)。这实际是一系列类的集合能以一种可移植的形式解决视窗操纵问题。这些窗口化程序既可以程序片的形式出现亦可作为独立的应用程序使用。本章将向大家介绍AWT以及网上程序片的创建过程。我们也会探讨AWT的优缺点以及Java在GUI方面的一些改进。同时重要的“JavaBeans”技术也会在这里得到强调。JavaBeans是创建“快速应用开发”(RAD)程序构造工具的重要基础。我们最后介绍的是Java的“Swing”库它使Java的UI组件得到了显著的改善。()第章:多线程Java提供了一套内建的机制可提供对多个并发子任务的支持我们称其为“线程”。这线程均在单一的程序内运行。除非机器安装了多个处理器否则这就是多个子任务的唯一运行方式。尽管还有别的许多重要用途但在打算创建一个反应灵敏的用户界面时多线程的运用显得尤为重要。举个例子来说在采用了多线程技术后尽管当时还有别的任务在执行但用户仍然可以毫无阻碍地按下一个按钮或者键入一些文字。本章将对Java的多线程处理机制进行探讨并介绍相关的语法。()第章网络编程开始编写网络应用时就会发现所有Java特性和库仿佛早已串联到了一起。本章将探讨如何通过因特网通信以及Java用以辅助此类编程的一些类。此外这里也展示了如何创建一个Java程序片令其同一个“通用网关接口”(CGI)程序通信揭示了如何用C编写CGI程序也讲述了与Java的“Java数据库连接”(JDBC)和“远程方法调用”(RMI)有关的问题。()第章设计范式本章将讨论非常重要、但同时也是非传统的“范式”程序设计概念。大家会学习设计进展过程的一个例子。首先是最初的方案然后经历各种程序逻辑将方案不断改革为更恰当的设计。通过整个过程的学习大家可体会到使设计思想逐渐变得清晰起来的一种途径。()第章项目本章包括了一系列项目它们要么以本书前面讲述的内容为基础要么对以前各章进行了一番扩展。这些项目显然是书中最复杂的它们有效演示了新技术和类库的应用。有些主题似乎不太适合放到本书的核心位置但我发现有必要在教学时讨论它们这些主题都放入了本书的附录。()附录A:使用非Java代码对一个完全能够移植的Java程序它肯定存在一些严重的缺陷:速度太慢而且不能访问与具体平台有关的服务。若事先知道程序要在什么平台上使用就可考虑将一些操作变成“固有方法”从而显著加快执行速度。这些“固有方法”实际是一些特殊的函数以另一种程序设计语言写成(目前仅支持CC)。Java还可通过另一些途径提供对非Java代码的支持其中包括CORBA。本附录将详细介绍这些特性以便大家能创建一些简单的例子同非Java代码打交道。()附录B:对比C和Java对一个C程序员他应该已经掌握了面向对象程序设计的基本概念而且Java语法对他来说无疑是非常眼熟的。这一点是明显的因为Java本身就是从C衍生而来。但是C和Java之间的确存在一些显著的差异。这些差异意味着Java在C基础上作出的重大改进。一旦理解了这些差异就能理解为什么说Java是一种杰出的语言。这一附录便是为这个目的设立的它讲述了使Java与C明显有别的一些重要特性。()附录C:Java编程规则本附录提供了大量建议帮助大家进行低级程序设计和代码编写。()附录D:性能通过这个附录的学习大家可发现自己Java程序中存在的瓶颈并可有效地改善执行速度。()附录E:关于垃圾收集的一些话这个附录讲述了用于实现垃圾收集的操作和方法。()附录F:推荐读物列出我感觉特别有用的一系列Java参考书。练习为巩固对新知识的掌握我发现简单的练习特别有用。所以读者在每一章结束时都能找到一系列练习。大多数练习都很简单在合理的时间内可以完成。如将本书作为教材可考虑在课堂内完成。老师要注意观察确定所有学生都已消化了讲授的内容。有些练习要难些他们是为那些有兴趣深入的读者准备的。大多数练习都可在较短时间内做完有效地检测和加深您的知识。有些题目比较具有挑战性但都不会太麻烦。事实上练习中碰到的问题在实际应用中也会经常碰到。多媒体CDROM本书配套提供了一片多媒体CDROM可单独购买及使用。它与其他计算机书籍的普通配套CD不同那些CD通常仅包含了书中用到的源码(本书的源码可从wwwBruceEckelcom免费下载)。本CDROM是一个独立的产品包含了一周“HadsOnJava”培训课程的全部内容。这是一个由BruceEckel讲授的、长度在小时以上的课程含张以上的演示幻灯片。该课程建立在这本书的基础上所以是非常理想的一个配套产品。CDROM包含了本书的两个版本:()本书一个可打印的版本与下载版完全一致。()为方便读者在屏幕上阅读和索引CDROM提供了一个独特的超链接版本。这些超链接包括:个章、节和小标题链接个索引链接CDROM刻录了MB以上的数据。我相信它已对所谓“物超所值”进行了崭新的定义。CDROM包含了本书打印版的所有东西另外还有来自五天快速入门课程的全部材料。我相信它建立了一个新的书刊品质评定标准。若想单独购买此CDROM只能从Web站点wwwBruceEckelcom处直接订购。源代码本书所有源码都作为保留版权的免费软件提供可以独立软件包的形式获得亦可从http:wwwBruceEckelcom下载。为保证大家获得的是最新版本我用这个正式站点发行代码以及本书电子版。亦可在其他站点找到电子书和源码的镜像版(有些站点已在http:wwwBruceEckelcom处列出)。但无论如何都应检查正式站点确定镜像版确实是最新的版本。可在课堂和其他教育场所发布这些代码。版权的主要目标是保证源码

职业精品

打卡考勤管理制度(附各式详细申请表).doc

员工考勤与值班管理制度(全网最详细制度).doc

指纹打卡考勤细则.doc

办公设备、办公用品管理制度.doc

用户评论

0/200
    暂无评论
上传我的资料

精彩专题

相关资料换一换

资料评价:

/ 688
所需积分:5 立即下载

意见
反馈

返回
顶部