友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!
富士康小说网 返回本书目录 加入书签 我的书架 我的书签 TXT全本下载 『收藏到我的浏览器』

Java编程思想第4版[中文版](PDF格式)-第3部分

快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部! 如果本书没有阅读完,想下次继续接着阅读,可使用上方 "收藏到我的浏览器" 功能 和 "加入书签" 功能!



复使用代码的这两种方法,以及具体如何运用。  

  

(7) 第 7 章:多形性  

若由你自己来干,可能要花9 个月的时间才能发现和理解多形性的问题,这一特性实际是 OOP 一个重要的基 

础。通过一些小的、简单的例子,读者可知道如何通过继承来创建一系列类型,并通过它们共有的基础类对 

那个系列中的对象进行操作。通过 Java 的多形性概念,同一系列中的所有对象都具有了共通性。这意味着我 

们编写的代码不必再依赖特定的类型信息。这使程序更易扩展,包容力也更强。由此,程序的构建和代码的 

维护可以变得更方便,付出的代价也会更低。此外,Java 还通过“接口”提供了设置再生关系的第三种途 

径。这儿所谓的“接口”是对对象物理“接口”一种纯粹的抽象。一旦理解了多形性的概念,接口的含义就 

很容易解释了。本章也向大家介绍了Java 1。1 的“内部类”。  

  

(8) 第8 章:对象的容纳  

对一个非常简单的程序来说,它可能只拥有一个固定数量的对象,而且对象的“生存时间”或者“存在时 

间”是已知的。但是通常,我们的程序会在不定的时间创建新对象,只有在程序运行时才可了解到它们的详 

情。此外,除非进入运行期,否则无法知道所需对象的数量,甚至无法得知它们确切的类型。为解决这个常 

见的程序设计问题,我们需要拥有一种能力,可在任何时间、任何地点创建任何数量的对象。本章的宗旨便 

是探讨在使用对象的同时用来容纳它们的一些 Java 工具:从简单的数组到复杂的集合(数据结构),如 

Vector 和 Hashtable 等。最后,我们还会深入讨论新型和改进过的 Java 1。2 集合库。  

  

(9) 第9 章:违例差错控制  

Java 最基本的设计宗旨之一便是组织错误的代码不会真的运行起来。编译器会尽可能捕获问题。但某些情况 

下,除非进入运行期,否则问题是不会被发现的。这些问题要么属于编程错误,要么则是一些自然的出错状 

况,它们只有在作为程序正常运行的一部分时才会成立。Java 为此提供了“违例控制”机制,用于控制程序 

运行时产生的一切问题。这一章将解释try、catch、throw、throws 以及finally 等关键字在 Java 中的工作 

原理。并讲述什么时候应当“掷”出违例,以及在捕获到违例后该采取什么操作。此外,大家还会学习 Java 

的一些标准违例,如何构建自己的违例,违例发生在构建器中怎么办,以及违例控制器如何定位等等。  

  

(10) 第 10 章:Java IO 系统  

理论上,我们可将任何程序分割为三部分:输入、处理和输出。这意味着 IO (输入/输出)是所有程序最为 



                                                                      10 


…………………………………………………………Page 12……………………………………………………………

关键的部分。在这一章中,大家将学习Java 为此提供的各种类,如何用它们读写文件、内存块以及控制台 

等。“老”IO和 Java 1。1 的“新”IO 将得到着重强调。除此之外,本节还要探讨如何获取一个对象、对其 

进行“流式”加工(使其能置入磁盘或通过网络传送)以及重新构建它等等。这些操作在Java 的1。1 版中都 

可以自动完成。另外,我们也要讨论Java 1。1 的压缩库,它将用在Java 的归档文件格式中(JAR)。  

  

(11) 第 11 章:运行期类型鉴定  

若只有指向基础类的一个句柄,Java 的运行期类型标鉴定(RTTI )使我们能获知一个对象的准确类型是什 

么。一般情况下,我们需要有意忽略一个对象的准确类型,让 Java 的动态绑定机制(多形性)为那一类型实 

现正确的行为。但在某些场合下,对于只有一个基础句柄的对象,我们仍然特别有必要了解它的准确类型是 

什么。拥有这个资料后,通常可以更有效地执行一次特殊情况下的操作。本章将解释 RTTI 的用途、如何使用 

以及在适当的时候如何放弃它。此外,Java 1。1 的“反射”特性也会在这里得到介绍。  

  

(12) 第 12 章:传递和返回对象  

由于我们在Java 中同对象沟通的唯一途径是“句柄”,所以将对象传递到一个函数里以及从那个函数返回一 

个对象的概念就显得非常有趣了。本章将解释在函数中进出时,什么才是为了管理对象需要了解的。同时也 

会讲述 String (字串)类的概念,它用一种不同的方式解决了同样的问题。  

  

(13) 第 13 章:创建窗口和程序片  

Java 配套提供了“抽象Windows 工具包”(AWT)。这实际是一系列类的集合,能以一种可移植的形式解决 

视窗操纵问题。这些窗口化程序既可以程序片的形式出现,亦可作为独立的应用程序使用。本章将向大家介 

绍AWT 以及网上程序片的创建过程。我们也会探讨AWT 的优缺点以及Java 1。1 在GUI 方面的一些改进。同 

时,重要的“Java Beans”技术也会在这里得到强调。Java Beans 是创建“快速应用开发”(RAD)程序构 

造工具的重要基础。我们最后介绍的是Java 1。2 的“Swing”库——它使Java 的UI 组件得到了显著的改 

善。  

  

(14) 第 14 章:多线程  

Java 提供了一套内建的机制,可提供对多个并发子任务的支持,我们称其为“线程”。这线程均在单一的程 

序内运行。除非机器安装了多个处理器,否则这就是多个子任务的唯一运行方式。尽管还有别的许多重要用 

途,但在打算创建一个反应灵敏的用户界面时,多线程的运用显得尤为重要。举个例子来说,在采用了多线 

程技术后,尽管当时还有别的任务在执行,但用户仍然可以毫无阻碍地按下一个按钮,或者键入一些文字。 

本章将对Java 的多线程处理机制进行探讨,并介绍相关的语法。  

  

(15) 第 15 章 网络编程  

开始编写网络应用时,就会发现所有Java 特性和库仿佛早已串联到了一起。本章将探讨如何通过因特网通 

信,以及Java 用以辅助此类编程的一些类。此外,这里也展示了如何创建一个 Java 程序片,令其同一个 

 “通用网关接口”(CGI)程序通信;揭示了如何用C++编写CGI 程序;也讲述了与 Java 1。1 的“Java 数据 

库连接”(JDBC )和“远程方法调用”(RMI)有关的问题。  

  

(16) 第 16 章 设计范式  

本章将讨论非常重要、但同时也是非传统的“范式”程序设计概念。大家会学习设计进展过程的一个例子。 

首先是最初的方案,然后经历各种程序逻辑,将方案不断改革为更恰当的设计。通过整个过程的学习,大家 

可体会到使设计思想逐渐变得清晰起来的一种途径。  

  

(17) 第 17 章 项目  

本章包括了一系列项目,它们要么以本书前面讲述的内容为基础,要么对以前各章进行了一番扩展。这些项 

目显然是书中最复杂的,它们有效演示了新技术和类库的应用。  

有些主题似乎不太适合放到本书的核心位置,但我发现有必要在教学时讨论它们,这些主题都放入了本书的 

附录。  

  

(18) 附录A:使用非Java 代码  

对一个完全能够移植的 Java 程序,它肯定存在一些严重的缺陷:速度太慢,而且不能访问与具体平台有关的 

服务。若事先知道程序要在什么平台上使用,就可考虑将一些操作变成“固有方法”,从而显著加快执行速 



                                                                        11 


…………………………………………………………Page 13……………………………………………………………

度。这些“固有方法”实际是一些特殊的函数,以另一种程序设计语言写成(目前仅支持C/C++)。Java 还 

可通过另一些途径提供对非Java 代码的支持,其中包括 CORBA。本附录将详细介绍这些特性,以便大家能创 

建一些简单的例子,同非Java 代码打交道。  

  

(19) 附录B:对比C++和Java  

对一个 C++程序员,他应该已经掌握了面向对象程序设计的基本概念,而且Java 语法对他来说无疑是非常眼 

熟的。这一点是明显的,因为 Java 本身就是从 C++衍生而来。但是,C++和Java 之间的确存在一些显著的差 

异。这些差异意味着Java 在 C++基础上作出的重大改进。一旦理解了这些差异,就能理解为什么说Java 是 

一种杰出的语言。这一附录便是为这个目的设立的,它讲述了使Java 与 C++明显有别的一些重要特性。  

  

(20) 附录C:Java 编程规则  

本附录提供了大量建议,帮助大家进行低级程序设计和代码编写。  

  

(21) 附录D:性能  

通过这个附录的学习,大家可发现自己Java 程序中存在的瓶颈,并可有效地改善执行速度。  

  

(22) 附录E:关于垃圾收集的一些话  

这个附录讲述了用于实现垃圾收集的操作和方法。  

  

(23) 附录F:推荐读物  

列出我感觉特别有用的一系列 Java 参考书。  



6。  练习  



为巩固对新知识的掌握,我发现简单的练习特别有用。所以读者在每一章结束时都能找到一系列练习。  

大多数练习都很简单,在合理的时间内可以完成。如将本书作为教材,可考虑在课堂内完成。老师要注意观 

察,确定所有学生都已消化了讲授的内容。有些练习要难些,他们是为那些有兴趣深入的读者准备的。大多 

数练习都可在较短时间内做完,有效地检测和加深您的知识。有些题目比较具有挑战性,但都不会太麻烦。 

事实上,练习中碰到的问题在实际应用中也会经常碰到。  



7。  多媒体 CDROM   



本书配套提供了一片多媒体CD…ROM,可单独购买及使用。它与其他计算机书籍的普通配套CD 不同,那些 CD 

通常仅包含了书中用到的源码(本书的源码可从BruceEckel。 免费下载)。本CD…ROM 是一个独立的 

产品,包含了一周“Hads…OnJava”培训课程的全部内容。这是一个由Bruce Eckel 讲授的、长度在 15小时 

以上的课程,含500 张以上的演示幻灯片。该课程建立在这本书的基础上,所以是非常理想的一个配套产 

品。  

CD…ROM 包含了本书的两个版本:  

(1) 本书一个可打印的版本,与下载版完全一致。  

(2) 为方便读者在屏幕上阅读和索引,CD…ROM 提供了一个独特的超链接版本。这些超链接包括:  

■230 个章、节和小标题链接  

■3600 个索引链接  

CD…ROM 刻录了 600MB 以上的数据。我相信它已对所谓“物超所值”进行了崭新的定义。  

CD…ROM 包含了本书打印版的所有东西,另外还有来自五天快速入门课程的全部材料。我相信它建立了一个新 

的书刊品质评定标准。  

若想单独购买此CD…ROM,只能从Web 站点BruceEckel。 处直接订购。  



8。  源代码  



本书所有源码都作为保留版权的免费软件提供,可以独立软件包的形式获得,亦可从 

http://BruceEckel。 下载。为保证大家获得的是最新版本,我用这个正式站点发行代码以及本书电 

子版。亦可在其他站点找到电子书和源码的镜像版(有些站点已在http://BruceEckel。 处列出)。 

但无论如何,都应检查正式站点,确定镜像版确实是最新的版本。可在课堂和其他教育场所发布这些代码。  

版权的主要目标是保证源码得到正确的引用,并防止在未经许可的情况下,在印刷材料中发布代码。通常, 



                                                                      12 


…………………………………………………………Page 14……………………………………………………………

只要源码获得了正确的引用,则在大多数媒体中使用本书的示例都没有什么问题。  

在每个源码文件中,都能发现下述版本声明文字:  

//////////////////////////////////////////////////  

// Copyright (c) Bruce Eckel; 1998  

// Source code file from the book 〃Thinking in Java〃  

// All rights reserved EXCEPT as allowed by the  

// following statements: You can freely use this file  

// for your own work (personal or mercial);  

// including modifications and distribution in  

// executable form only。 Permission is granted to use  

// this file in classroom situations; including its  

// use in presentation materials; as long as the book  

// 〃Thinking in Java〃 is cited as the source。   

// Except in classroom situations; you cannot copy  

// and distribute this code; instead; the sole  

// distribution point is http://BruceEckel。   

// (and official mirror sites) where it is  

// freely available。 You cannot remove this  

// copyright and notice。 You cannot distribute  

// modified versions of the source code in this  

// package。 You cannot use this file in printed  

// media without the express permission of the  

// author。 Bruce Eckel makes no representation about  

// the suitability of this software for any purpose。  

// It is provided 〃as is〃 without express or implied  

// warranty of any kind; including any implied  

// warranty of merchantability; fitness for a  

// particular purpose or non…infringement。 The entire  

// risk as to the quality and performance of the  

// software is with you。 Bruce Eckel and the  

// publisher shall not be liable for any damages  

// suffered by you or any third party as a result of  

// using or distributing software。 In no event will  

// Bruce Eckel or the publisher be liable for any  

// lost revenue; profit; or data; or for direct;  

// indirect; special; consequential; incidental; or  

// punitive damages; however caused and regardless of  

// the theory of liability; arising out of the use of  

// or inability to use software; even if Bruce Eckel  

// and the publisher have been advised of the  

// possibility of such damages。 Should the software  

// prove defective; you assume the cost of all  

// necessary servicing; repair; or correction。 If you  

// think you've found an error; please email all  

// modified files with clearly mented changes to:  

// Bruce@EckelObjects。。 (Please use the same  

// address for non…code errors found in the book。)  

/////////////////////////////////////////////////  

  

可在自己的开发项目中使用代码,并可在课堂上引用(包括学习材料)。但要确定版权声明在每个源文件中 

得到了保留。  



                                                                                           13 


…………………………………………………………Page 15……………………………………………………………

9。  编码样式  



在本书正文中,标识符(函数、变量和类名)以粗体印刷。大多数关键字也采用粗体——除了一些频繁用到 

的关键字(若全部采用粗体,会使页面拥挤难看,比如那些“类”)。  

对于本书的示例,我采用了一种特定的编码样式。该样式得到了大多数Java 开发环境的支持。该样式问世已 

有几年的时间,最早起源于Bjarne Stroustrup 先生在《The C++ Programming Language》里采用的样式 

 (Addison…Wesley 1991 年出版,第 2 版)。由于代码样式目前是个敏感问题,极易招致数小时的激烈辩 

论,所以我在这儿只想指出自己并不打算通过这些示例建立一种样式标准。之所以采用这些样式,完全出于 

我自己的考虑。由于Java 是一种形式非常自由的编程语言,所以读者完全可以根据自己的感觉选用了适合的 

编码样式。  

本书的程序是由字处理程序包括在正文中的,它们直接取自编译好的文件。所以,本书印刷的代码文件应能 

正常工作,不会造成编译器错误。会造成编译错误的代码已经用注释//!标出。所以很容易发现,也很容易用 

自动方式进行测试。读者发现并向作者报告的错误首先会在发行的源码中改正,然后在本书的更新版中校订 

 (所有更新都会在Web 站点http://BruceEckel。 处出现)。  



10。 Java 版本  



尽管我用几家厂商的Java 开发平台对本书的代码进行了测试,但在判断代码行为是否正确时,却通常以Sun 

公司的Java 开发平台为准。  

当您读到本书时,Sun 应已发行了 Java 的三个重要版本:1。0,1。1 及 1。2 (Sun 声称每 9 个月就会发布一个 

主要更新版本)。就我看,1。1版对Java 语言进行了显著改进,完全应标记成 2。0 版(由于 1。1 已作出了如 

此大的修改,真不敢想象2。0 版会出现什么变化)。然而,它的 1。2 版看起来最终将 Java 推入了一个全盛时 

期,特别是其中考虑到了用户界面工具。  

本书主要讨论了 1。0和 1。1版,1。2版有部分内容涉及。但在有些时候,新方法明显优于老方法。此时,我 

会明显偏向于新方法,通常教给大家更好的方法,而完全忽略老方法。然而,有的新方法要以老方法为基 

础,所以不可避免地要从老方法入手。这一特点尤以AWT 为甚,因为那儿不仅存在数量众多的老式 Java 1。0 

代码,有的平台仍然只支持Java 1。0 。我会尽量指出哪些特性是哪个版本特有的。  

大家会注意到我并未使用子版本号,比如 1。1。1。至本书完稿为止,Sun 公司发布的最后一个 1。0版是 

1。02;而1。1 的最后版本是 1。1。5 (Java 1。2 仍在做β测试)。在这本书中,我只会提到 Java 1。0,Java  

1。1及 Java 1。2,避免由于子版本编号过多造成的键入和印刷错误。  



11。 课程和培训  



我的公司提供了一个五日制的公共培训课程,以本书的内容为基础。每章的内容都代表着一堂课,并附有相 

应的课后练习,以便巩固学到的知识。一些辅助用的幻灯片可在本书的配套光盘上找到,最大限度地方便各 

位读者。欲了解更多的情况,请访问:  

http://BruceEckel。  

或发函至:  

Bruce@EckelObjects。  

我的公司也提供了咨询服务,指导客户完成整个开发过程——特别是您的单位首次接触Java 开发的时候。  



12。 错误  



无论作者花多大精力来避免,错误总是从意想不到的地方冒出来。如果您认为自己发现了一个错误,请在源 

文件(可在 http://BruceEckel。 处找到)里指出有可能是错误的地方,填好我们提供的表单。将您 

推荐的纠错方法通过电子函件发给 Bruce@EckelObjects。 。经适当的核对与处理,Web 站点的电子版以及 

本书的下一个印刷版本会作出相应的改正。具体格式如下:  

(1) 在主题行(Subject)写上“TIJ Correction”(去掉引号),以便您的函件进入对应的目录。  

(2) 在函件正文,采用下述形式:  

find: 在这里写一个单行字串,以便我们搜索错误所在的地方  

ment: 在这里可写多行批注正文,最好以“here's how I think it shoud read”开头  

###  

其中,“###”指出批注正文的结束。这样一来,我自己设计的一个纠错工具就能对原始正文来一次“搜 

索”,而您建议的纠错方法会在随后的一个窗口中弹出。  



                                                                  14 


…………………………………………………………Page 16……………………………………………………………

返回目录 上一页 下一页 回到顶部 10 9
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!