java编程思想(第五版) 高清

所需积分/C币:39 2017-09-28 17:15:55 2.45MB PDF
收藏 收藏
举报

java编程思想,java学习类必读,建议已学完java再读,不推荐初学阅读此书
的书才在我心目中占据了一个位置。我已向客户郑重推荐这本书。再次感谢。 ( Richard brooks,Java顾问,Sun专业服务公司,达拉斯市) 其他书讨论的都是Java“是什么”(讲述语法和库),或者Java“怎样用”(编程实 例)。《 Thinking in java》显然与众不同,是我所知唯一一木解释Java“为什么” 的书:为什么象这样设计,为什么象这样工作,为什么有时不能工作,为什么比 C++好,为什么没有C++好,等等。尽管这本书也很好讲述了“是什么”和“怎 样用”的问题,但它的特色并在于此。这本书特别适合那些想追根溯源的人 Robert. S. Stephenson 感谢您写出这么一本优秀的书,我对它越来越爱不释手。我的学生也喜欢它。 (Chuck Iverson) 向你在《 Thinking in java》的工作致敬。这本书对因特网的未来进行∫最恰当 的揭示,我只是想对你说声“谢谢”,它非常有价值。( Patrick barrell, Network Officer manco- QAF MIS公司) 市面上大多数Java书作为新手指南都是不错的。但它们的立意大多雷同,举的 例子也有过多的重复。从未没见过象您这样的一本书,它和那些书完全是两码事。 我认为它是迄今为止最好的一本参考书。请快些出版它!……另外,由于 《 Thinking in Java》都这么好了,我也赶快去买了一本《 Thinking in C++》。 ( George laframboise, LightWorx技术咨询公司) 从前给你写过信,主要是表达对《 Thinking in c+》一书的惊叹(那本书在我 的书架上占有突出的位置)。今天,我很欣慰地看到你投向了Java领域,并有幸 拜读了最浙的《 Thinking in Java》电了版。看过之后,我不得不说:“服了!” 内容非常精彩,有很强的说服力,不象读那些干巴巴的参考书。你讲到了Java 开发最重要、也最易忽略的方面:基木原理。( Sean brady) 你举的例子都非常浅显,很容易理解。Java的许多重要细节都照顾到了,而单 薄的Java文档根本没冇涉及那些方面。另外,这本书没有浪费读者的吋间。程 序员己经知道∫一些基本的事实,你在这个基础上进行了很好的发挥。(Kai Engert, Innovative software公司,德国) 我是您的《 Thinking in C+》的忠实读者。通读了您的Java书的电子版以后 发现您在这两本书上有同样高级别的写作水平。谢谢!( Peter r. Neuwald) 写得非常好的一本Java书……我认为您的工作简直可以说“伟大”。我是芝加哥 地区Java特别兴趣缃的头儿,口在最近的儿次聚会上推荐了您的书和Web站点。 以后每个月开SIG会的时候,我都想把《 Thinking in Java》作为基本的指导教 材使用。一般米说,我们会每次讨论书中的一章内容。( Mark artes) 衷心感谢你的书,它写得太好了。我已把它推荐给自己的用户和Ph.D.学生 Hugues Leroy //Irisa-Inria Rennes France Head of Scientific Computingand Industrial Tranfer) 我到现在只读了《 Thinking in Java》的40页内容,但已对它留下了深刻的印 象。这无疑是见过的最精彩的编程专业书……而且我本身航是一个作家,所以这 点儿看法还是有些权威吧。我已订购了《 Thinking in C++》,已经等得迫不及待 了——我是一名编程新手,最怕的就是散乱无章的学习线索。所以必须在这里向 您的出色工作表示敬意。以前看过的书似乎都有这方面的毛病,经常使我才提起 的兴致消弥于无形。但看了你的书以后,感觉好多了。( Glenn becker, Educational Theatre Association) 谢谢您这本出色的书。在终于认识了Java与C++之间纠缠不清的一些事实后, 我真的要非常感谢这本书。对您的书非常满意!( Felix bizaoui,Twin OaksIndustries, Louisa, Va) 恭喜你写出这么好的一书。我是在有了阅读《 Thinking in C+》的经历以后, 才来看这本《 Thinking in Java》的,它确实没让我失望。( Jaco van derMerwe, 软件专家, DataFusion Systems有限公司, Stellenbosch,南非) 这是我看过的最好的Jaa书之一。(E.E. Pritchard,资深软件工程师,英国剑 桥动画系统有限公司) 你的东东让其他Java参考收黯然失色。看来其他作者都应该向你看齐了 ( Brett g porter,资深程序员,Art& Logic) 我花了一、两个星期的时间来看你的书,并对以前我看过的一些Java书进行了 比较。显然,只有你的书才能让我真正“入门”。现在,我已向我的许多朋友推 荐了这本书,他们都对其作出了很高的评价。请接受我真诚的祝贺,并希望她早 些正式出版。( Rama Krishna bhupathi,软件工程师,TCSI公司,圣琼斯) 这是一本充满智慧的书,与简单的参考书有着截然不同的风格。它现在已成了我 进行Java创作一份主要参考。你的目录做得相当不错,让人一目了然,很快就 能找刭自己需要的东西。更高兴的是,这本书没有写成一本改头换面的APⅠ字典, 也没有把我们这些程序员看作傻瓜。( Grant saver, Java Components group Leader, Ceedata Systems Pty有限公司,澳大利亚) 啧啧,一本可读性强、论据允分的Java书。外面有太多用词贫乏的Java书(也 有几本好的),只有你的书是最好的。那些垃圾在你的书前面不值一提。(John Root,Web开发员,伦敦社会安全部) 我刚刚开始看《 Thinking in java》。我希望它能有更大的突破,因为《 Thinking inC艹+》写得实在太好了。我是一名有经验的C艹程序员,事先看那木书对学习 Java很有帮助。但我在Jaa上的经验不够,希望这本新书能让我满意。您真是 名“高产高质”作者。( Kevin K. Lewis, Objectspace公司技术员) 我认为这是本好书。从这本书中,我学到了与Java有关的所有知识。谢谢你能 让这本书通过互联网免费发行。如果不那样做,我根本不可能象现在这样有巨大 的进步。但最令人高兴的是,你的书并没有成为一本官方Java手册,指出了Jav 些不当的地方。你真是做了一件人好事。( Frederik fix, Belgium) 我现在绎常査阅你的书。大约两年前,当我想开始学习C+的时候,是《C+ Inside&0ut》指导我游历C++的世界。它使我在这方面的技能大增,并找到了 个较好的职位。现在出于工作上的原因需要学习Java,又是《 Thinking in java》 给我正确的指引。尽管现在可选择的书更多了,但我知道自己别无选择。很奇妙, 不是吗?现在看这木书的时候,我居然有一种重新认识自己的感觉。衷心感谢你, 我现在的理解又比以前深入多了。( Anand Kumar s.,软件工程师, Computervision公司,印度) 你的书给人一种“鹤立鸡群”的感觉。( Peter robinson,剑桥大学计算机实验 这是我看过的最好的一本Java参考书。现在想起来,能找到这样的一本书简直 是幸运。谢谢!( Chuck peterson,因特网产品线主管,IⅥ IS Internationa1公 这本书太棒了!它己是我看过的第三本Java书了,真后悔没有早点儿发现它 前两本书都没坚持看完,但我已决心看完这一本。不妨告诉你,当时我是想寻找 关于内部类使用的一些资料,是我的朋友告诉我网上能下载这木书。你千得真不 tH! (Jerry Nowlin, MTS, Lucent Technologies) 在我看过的6本Java书中,你的《 Thinking in Java》是最好和最有用的。 ( Michael van waas,Ph.D, TMR Associates公司总裁) 我很想对《 Thinking in Java》说声谢谢。这是一本多么出色的书—一并不单指 它在网上免费发送!作为一名学生,我认为你的书有不可估量的价值(我有《C+ Inside&Out》的拷贝,那是关于C+的另一本好书),因为它不仅教我怎样做, 而且解释∫为什么。这当然为我用C艹+或Jaa这样的语言编程打下∫坚实的基 础。我有许多朋友都象我一样热爱编程,在向他们推荐了这木书后,反映都非常 好,他们的看法同我一样。再次感谢您。顺使提一句,我是一个印尼畜牲,整大 都喜欢和Java泡在一起!( Ray frederick djajadinata, Trisat i大学学生, Indonesian pork) 你把这本书放在网上引起了相当程度的轰动,我对你的做法表示真诚的感谢与支 持!( Shane lebouthillier,加拿大艾伯特大学计算机工程系学生) 告诉你吧,我是多么热烈地盼望读到你每个月的专栏!作为0P设计的新手,我 要感谢你把即使最基本的概念都讲得那么透彻和全面。我已下载∫你的书,但我 保证会在它正式出版后另行购买。感谢你提供的所有帮助!( Dan casher, B C. Ziegler Co.) 祝贺你完成了一件伟大的作品。我现在下载的是《 Thinking in java》的PDF 版。这本书还没有读完,便迫不及待地跑到书店去找你的《 Thinking in C++》。 我在计算机界干了8年,是一个顾问,兼软件工程师、教师/培训专家,最近辞 职自己开了一间公司。所以见过不少的书。但是,正是这些书使我的女朋友称我 为“书呆子”!并不是我概念掌握得不深入一一只是由于现在的发展太快,使我 短期内不能适应新技术。但这两本书都给了我很大的启示,它与以前接触过或买 过的计算机参考书都大不相同。写作风格很棒,每个新概念都讲得很好,书中充 满了“智慧”。(Simongoland,Simonsen@ismartt.com,SimonSaysConsulting 公司) 必须认为你的《 Thinking in java》非常优秀!那正是我一直以来梦想的参考书 其中印象最深的是冇关使用Java1.1作软件设计时的一些优缺点分析。 (DirkDuchr, Lexikon Verlag, Bertelsmann AG, it F) 谢谢您写出两本空前绝后的书(《 Thinking in Jav》和《 Thinking in c+》) 它们使我在面向对象的程序设计上跨出了一大步。( Donal d Lawsof DCLEnterprises) 谢谢你花时问写出一本真正有用的Java参考书,你现在绝对能为自己的工作感 到骄傲了。( Dominic turner, GEAC Support) 这是我见过的最好的一木Java书。(Jean- Yves mengant, Chief Software Architect nat- SYSTEM,法国巴黎) Thinking in java》无论在覆盖的范围还是讲述方法上都有独到之处。看懂这 本书非常容易,摘录的代码段也很有说服力。( Ron chan,Ph.D, Expert choice 公司, Pittsburgh PA) 你的书太棒了。我看过许多编程书刊,只有你的书给人一种全新的视野。其他作 者都该向你好好学习才是。( Mingjian Wang,信息系统工程师, The vangurad Group 《 Thinking in java》是一本出色的、可读性极强的书,我向我的学生推荐阅 读。(Dr. Pual gorman,计算机科学系,0tago大学, Dunedin市,新西兰) 在我看过的书中,你的书最有品味,不象有的书那样粗制滥造。任何搞软件开发 的人都不应错过。( Jose Suri1, Scylax公司) 感谢您免费提供这本书,它是我看过或翻过的最好的一本。( Jefflapchinsky, Net results Technologies公司程序员) 这本简明扼要,看起来不仅亳不费力,而且象是一种享受。( Keith ritchie, Java研发组, KL Group公司) 这真的是我看过的最好的一本Java书!( Daniel eng) 我看过的最好的Java书!( Rich hoffarth, Senior architect, West group) 感谢你这本出色的书籍,我好久都没有绎历让人如此愉悦的阅读过程了。(Fred Trimble, Actium公司) 你的写作能准确把握轻重缓急,并能成功抓住细节。这本书让学习变成了一件有 趣的事情,我感觉满意,非常满意!谢谢你这木出色的学习教程。( Rajesh rau, 软件顾问) 《 Thinking in Java》让整个自由世界都感受到了震憾!(Miko0’ Sullivan Idocs公司总裁) 关于《 Thinking in C++》: 荣获1995年由《软件开发》杂志评选的“最佳书籍”奖! “这本书可算一个完美的典型。把它放到自己的书架上绝对不会后悔。关于I0 数据流的那部分内容包含了迄今为止我看过的最全面、最容易理解的文字。”(A1 Stevens,《道伯博士》杂志投稿编辑) Eckel的书是唯一一本清楚解释∫面向对象程序设计基础问趣的书。这本书也 是C艹的一本出色教材。”( Andrew binstock,巛 Unix review》编辑)” “ Bruce用他对C艹+深刻的洞察力震惊了我们,《 Thinking in C++》无疑是各种 伟大思想的岀色组合。如果想得到各种困难的C艹问题的答案,请购买这木杰出 的参考书”( Gary Entsminger,《对象之道》的作者) “《 Thinking in C++》非常耐心和有技巧地讲述了关于C++的各种问题,包括如 何使用内联、索引、运算符过载以及动态对象。另外还包括一些高级主题,比如 模板的正确使用、违例和多重继承等。所有这些都精巧地编织在一起,成为 Eckel 独特的对象和程序设计思想。所有C+廾发者的书架上都应摆上这本书。如果你 正在用C+搞正式开发,这本书绝对有借鉴价值。”( Richard hale shaw,《PC Magazine》投稿编辑)。 第1章对象入门 为什么面向对象的编程会在软件开发领域造成如此震憾的影响?” 面向对象编程(OOP)具有多方面的吸引力。对管理人员,它实现了更快和 更廉价的廾发与维护过程。对分析与设计人员,建模处理变得更加简单,能生成 清晰、易于维护的设计方案。对程序员,对象模型显得如此高雅和浅显。此外, 面向对象工具以及库的巨大威力使编程成为一项更使人愉悦的任务。每个人都可 从中获益,至少表面如此。 如果说它有缺点,那就是掌握亡需付出的代价。思考对象的时候,需要采用 形象思维,而不是程序化的思维。与程序化设计相比,对象的设计过程更具挑战 性—一特別是在尝试创建可重复使用(可再生)的对象时。过去,那些初涉面向 对象编程领域的人都必须进行一项令人痛苦的选择: (1)选择一种诸如 Smalltalk的语言,“出师”前必须掌握一个巨型的库 (2)选择几乎根木没有库的C++(注释①),然后深入学习这种语言,直至能 自行编写对象库。 ①:幸运的是,这一情况已有明显改观。现在有第三方库以及标准的C++库 供选用 事实上,很难很好地设计岀对象—一从而很难设讣好仼何东西。因此,只有 数量相当少的“专家”能设计出最好的对象,然后让其他人享用。对于成功的 OOP语言,它们不仅集成了这种语言的语法以及一个编译程序(编译器),而且 还有一个成功的开发环境,其中包含设计优良、易于使用的库。所以,大多数程 序员的首要任务就是用现有的对象解决自己的应用问题。本章的目标就是向大家 揭示出面向对象编程的概念,并证明它有多么简单。 本章将向大家解释Java的多项设计思想,并从概念上解释面向对象的程序设 计。但要注意在阅读完木章后,并不能立即编写出全功能的Java程序。所有详 细的说明和示例会在本书的其他章节慢慢道来。 1.1抽象的进步 所有编程语言的最终日的都是提供一种“抽象”方法。一种较有争议的说法 是:解决问题的复杂程度直接取决于抽象的种类及质量。这儿的“种类”是指准 备对什么进行“抽象”?汇编语言是对基础机器的少量抽象。后来的许多“命令 式”语言(如 FORTRAN, BASIC和C)是对汇编语言的一种抽象。与汇编语言 相比,这些语言已有了长足的进步,但它们的抽象原理依然要求我们着重考虑计 算机的结构,而非考虑问题本身的结构。在机器模型(位于“方案空间”)与实 际解决的问题模型(位于“问题空间”)之间,程序员必须建立起一种联系。这 个过程要求人们付出较大的精力,而且由于它脱离了编程语言本身的范围,造成 程序代码很难编写,而且要花较大的代价进行维护。山此造成的副作用便是一门 完善的“编程方法”学科。 为机器建模的弜一个方法是为要解决的问题制作模型。对一些早期语言来 说,如LISP和APL,它们的做法是“从不同的角度观察世界”—“所有问题 都归纳为列表”或“所有问题都归纳为算法”。 PROLOG则将所有问题都归纳为 决策链。对于这些语言,我们认为它们一部分是面向基于“强制”的编程,另 部分则是专为处理图形符号设计的。每种方法都有自己特殊的用途,适合解决某 类的问题。但只要超出了它们力所能及的范围,就会显得非常笨拙。 面向对象的程序设计在此基础上则跨出了一人步,程序员可利用一些工具表 达问题空间内的元素。由于这种表达非常普遍,所以不必受限于特定类型的问题。 我们将问题空间中的元素以及它们在方案空间的表小物称作“对象”( Object) 当然,还有一些在问题空间没有对应体的其他对象。通过添加新的对象类型,程 序可进行灵活的调整,以便与特定的问题配合。所以在阅读方案的描述代码吋, 会读到对问题进行表达的话语。与我们以前见过的相比,这无疑是一种更加灵活、 更加强大的语言抽象方法。总之,OOP允许我们根据问题来描述问题,而不是 根捃方案。然而,仍有一个联系途径回到讣算机。每个对象都类似一台小计算机 它们有自己的状态,而且可要求它们进行特定的操作。与现实世界的“对象”或 者“物体”相比,编程“对象”与它们也存在共通的地方:它们都有自己的特征 和行为。 Alan Kay总结了 Smalltalk的五大棊本特征。这是第一种成功的面向对象程 序设计语言,也是Java的基础语言。通过这些特征,我们可理解“纯粹”的面 向对象程序设计方法是什么样的: (1)所有东西都是对象。可将对象想象成一种新型变量:它保存着数据,但 可要求它对白身进行操作。理论上讲,可从要解决的问题身上提出所有概念性的 组件,然后在程序中将其表达为一个对象 (2)程序是一大堆对象的组合:通过消息传递,各对象知道自己该做些什么。 为了向对象发出请求,需向那个对象“发送一条消息”。更具体地讲,可将消息 想象为一个调用请求,它调用的是从属于目标对象的一个子例程或函数 (3)每个对象都冇自己的存储空间,可容纳其他对象。或者说,通过封装现 有对象,可制作出新型对象。所以,尽管对象的概念非常简单,但在程序中却可 达到任意高的复杂程度。 多,(4)每个对象都有一种类型。根据语法,每个对象都是某个“类”的一个“实 例”。其中,“类”(Clas)是“类型”(Type)的同义词。一个类最重要的特征 就是“能将什么消息发给它? 5)同一类所有对象都能接收相同的消息。这实际是别有含义的一种说法, 大家不久便能理解。由于类型为“圆”( Circle)的一个对象也属于类型为“形状” ( Shape)的一个对象,所以一个圆完全能接收形状消息。这意味着可计程序代 码统一指挥“形状”,令其自动控制所有符合“形状”描述的对象,其中自然包 括“圆”。这一特性称为对象的“可替换性”,是OOP最重要的概念之一。 些语言设计者认为面向对象的程序设计本身并不足以方便解决所有形式 的程序问题,提倡将不同的方法组合成“多形程序设计语言”(注释②)。 ②:参见 Timothy Budd编著的《 Multiparadigm Programming in Leda》, Addison- Wesley1995年出版。 1.2对象的接口 亚里士名德或许是认真研究“类型”概念的第一人,他曾谈及“鱼类和鸟类” 的问题。在世界首例面向对象语言 Simula-67中,第一次用到了这样的一个概念: 所有对象一一尽管各有特色一一都属于某一系列对象的一部分,这些对象具 有通用的特征和行为。在 Simula-67中,首次用到了 class这个关键字,它为程 序引入了一个全新的类型(clas和type通常可互换使用;注释③)。 ③:有些人进行了进一步的区分,他们强调“类型”决定了接口,而“类” 是那个接凵的一种特殊实现方式 Simula是一个很好的例子。正如这个名字所暗示的,它的作用是“模拟” ( Simulate)象“银行出纳员”这样的经典问题。在这个例子里,我们有一系列 出纳员、客户、帐号以及交易等。每类成员(元素)都具有一些通用的特征:每 个帐号都有一定的余额;每名出纳都能接收客户的存款;等等。与此同吋,每个 成员都有自己的状态;每个帐号都有不同的余额;每名出纳都有一个名字。所以 在计算机程序中,能用独一无二的实休分别表示出纳员、客户、帐号以及交易。 这个实体便是“对象”,而且每个对象都隶属一个特定的“类”,那个类具有自己 的通用特征与行为。 因此,在面向对象的程序设计中,尽管我们真正要做的是新建各种各样的数 据“类型”(Type),但几乎所有面向对象的程序设计语言都用∫“ class”关键 字。当您看到“type”这个字的时候,请同时想到“clas”;反之亦然。 建好一个类后,可根据情况生成许多对象。随后,可将那些对象作为要解决 问题中存在的元素进行处理。事实上,当我们进行面向对象的程序设计时,面临 的最大一项挑战性就是:如何在“问题空间”(问题实际存在的地方)的元素与 “方案空间”(对实际问题进行建模的地方,如计算机)的元素之间建立理想的 对一”对应或映射关系 如何利用对象完成真正冇用的工作呢?必须有一种办法能向对象发出请求, 令其做一些实际的事情,比如完成一次交易、在屏幕上画一些东西或者打开一个 开关等等。每个对象仅能接受特定的请求。我们向对象发出的请求是通过它的“接 口”( Interface)定义的,对象的“类型”或“类”则规定了它的接口形式。“类 型”与“接∏”的等价或对应关系是面向对象程序设计的基础。 下面让我们以电灯泡为例: 29页图 T ype name light OffO Interface Brighten Dimo Light It= new Light(; It on(, 在这个例子中,类型/类的名称是 Light,可向Ligh对象发出的请求包括包

...展开详情
试读 127P java编程思想(第五版) 高清
立即下载 低至0.43元/次 身份认证VIP会员低至7折
    抢沙发
    一个资源只可评论一次,评论内容不能少于5个字
    img
    夢幻泡影

    关注 私信 TA的资源

    上传资源赚积分,得勋章
    最新推荐
    java编程思想(第五版) 高清 39积分/C币 立即下载
    1/127
    java编程思想(第五版) 高清第1页
    java编程思想(第五版) 高清第2页
    java编程思想(第五版) 高清第3页
    java编程思想(第五版) 高清第4页
    java编程思想(第五版) 高清第5页
    java编程思想(第五版) 高清第6页
    java编程思想(第五版) 高清第7页
    java编程思想(第五版) 高清第8页
    java编程思想(第五版) 高清第9页
    java编程思想(第五版) 高清第10页
    java编程思想(第五版) 高清第11页
    java编程思想(第五版) 高清第12页
    java编程思想(第五版) 高清第13页
    java编程思想(第五版) 高清第14页
    java编程思想(第五版) 高清第15页
    java编程思想(第五版) 高清第16页
    java编程思想(第五版) 高清第17页
    java编程思想(第五版) 高清第18页
    java编程思想(第五版) 高清第19页
    java编程思想(第五版) 高清第20页

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

    39积分/C币 立即下载 >