Java程序设计教程(原书第4版)上册 基础篇
作者 : Harvey M.Deitel,Paul J.Deitel
译者 : 袁兆山 刘宗田 苗沛荣 等
丛书名 : 计算机科学丛书
出版日期 : 2004-09-20
ISBN : 7-111-14363-9
定价 : 49.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 544
开本 : 16开
原书名 : Java How to Program, fourth edition
原出版社: Prentice-Hall, Inc.
属性分类: 教材
包含CD :
绝版 :
图书简介

本书详细介绍Java面向对象程序设计的基本理论及实用知识,全书共分为上下两册。上册详细讲述程序设计的基础知识及Java语言,共有10章,介绍计算机、Internet和Web、applet、应用程序、控制结构、方法、数组、基于对象的编程、面向对象的编程、字符串与字符等内容。
  本书实用性强,以多个案例分析为中心,每章都提供了丰富的示例和练习。全书由浅入深、示例生动、易学易用、覆盖范围广泛,可以满足不同层次学生的需求,供不同层次的读者选用。
  本书适合作为高等院校的Java语言课程教材,也可作为各种培训Java语言的培训班教材。

图书特色

图书前言

我们不再生活在各自的孤岛上,而是生活在紧密联系的世界中。
                  ——Edward Morgan Forster
  欢迎您阅读《Java程序设计教程》(第4版)一书,并来到令人激动的基于Java平台(标准版)的编程世界!本书由一位年长者和一位年轻人编写而成。长者(HMD,Massachusetts Institute of Technology,1967)已经有40年编程和教编程的经验。年轻人(PJD,MIT,1991)也有22年的编程和教学经验,而且两位都是Sun公司认证的Java程序员和开发者。年长者从经验出发进行编程和教学,年轻人则凭借旺盛的精力从事同样的工作。年长者希望结构清晰,年轻人希望性能卓越;年长者追求美感,年轻人却注重结果。两人一起编写了这本书,希望读者能从中获得信息、挑战和快乐。
  1995年11月,我们在波士顿参加了一次Internet/WWW会议,听到了有关Java的信息。一位Sun公司的代表就Java作了发言。从他的描述中,我们看到了编程的未来。本书的第1版就诞生在那一刻,并作为第一本Java计算机科学教材出版发行。
  Java世界的发展如此迅速,以至于在《Java程序设计教程》第1版发行不到5年的时间里,第4版就出版发行。这无论对于作者、出版商—Prentice Hall、教师,还是学生及从业人员而言,既创造了机遇也提出了极大的挑战。
  在Java出现之前,我们坚信C++将取代C,成为下一个10年中应用程序开发和系统编程领域的主流语言。然而现在WWW和Java的结合提高了Internet在信息系统的战略规划及实现中的地位。一些组织希望将Internet“无缝”地并入它们的信息系统中,在这方面Java比C++更加合适。
  《Java程序设计教程》(第4版)的新特性:
  本版中的诸多新特性及若干改进包括:
  * 代码的整理
  “代码的整理” 这个词是指我们将书中所有的程序都转成增添了注释的、更加开放的显示格式。我们将大块的程序源代码分割成较小的适当文档化的片断。这就极大地提高了源代码的可读性—考虑到这个新版本中包含超过25 000行的程序源代码,这个改进对我们而言是一个特别重要的目标。
  * 调整
  在Java专业教学研讨会的笔记基础上,我们对本书的内容进行了大的调整。不仅如此,一个优秀的评审小组仔细阅读了第3版,并给我们提出了他们的批评意见和建议。在第3版的基础上,本版书的内容有多达上千处的改进。
  * 关于对象的思考
  书中有大量用统一建模语言(Unified Modeling Language, UML)介绍面向对象设计(object-oriented design, OOD)的选学内容。本版中的许多章以“关于对象的思考”小节作为结尾。在该小节中,我们对面向对象进行循序渐进的介绍。编写这些小节的目的是想帮助大家用面向对象的方法思考如何设计并实现系统。这些小节同时也向大家介绍统一建模语言。UML是一种图形符号语言,它允许系统设计人员(例如系统架构师、系统工程师和程序员)能够用统一的图形符号来描述他们面向对象的设计。在第1章中的“关于对象的思考”部分介绍了基本的概念和术语。第2章~第13章,第15章和第22章及附录G、H和I(也在光盘上)中的“关于对象的思考”介绍了一个实实在在的应用面向对象设计(OOD)技术的电梯实例研究。附录G、H和I利用Java代码完全实现了这个实例。这个实例研究会帮助你在今后面对工业中的实际项目作好准备。如果你是一名学生,你的导师不打算在你的课程中增加这些内容的话,你可能会自学这部分内容。我们坚信学习这个大型且有挑战性的项目会对你大有裨益。这些小节中的内容会巩固你对相应章节内容的理解。你会体验到用UML进行面向对象设计的感觉。同时,在阅读实例研究方案的那些详细书写的多达3 465行的Java程序后,肯定会提高你的代码阅读能力。
  * 揭示设计模式
  这些选学部分介绍当前使用的流行的面向对象设计模式。本书提供的绝大多数示例包含不超过150行的代码。通常这些小程序不需要很详细的设计过程。然而,有一些程序,比如我们提供的电梯模拟实例研究,稍微复杂些—它们需要数千行的代码。更大型的系统,诸如自动提款机或空中交通管制系统,可能包含百万行或甚至上亿行的代码。有效的设计是恰当构造这类复杂系统的关键。在过去的几十年中,软件工程产业在设计模式(design patterns)领域已经取得了巨大的进步。设计模式是用来构造灵活的、可维护的面向对象软件的、经过证明有效的体系结构 。使用设计模式可以显著地降低设计过程的复杂度。作者利用Java提供了若干个设计模式,但是这些设计模式可以通过任何面向对象语言来实现,如C++,C#或Visual Basic。作者描述了美国Sun公司在Java API中所采用的几个设计模式。在本书的许多程序中,都使用了设计模式,我们将在“揭示设计模式”小节中看到它们。这些程序为通过设计模式来构造可靠的、健壮的面向对象软件提供了示例。
  * 第22章,Java媒体框架和Java Sound
  这一章介绍Java的音频和视频能力,是对第18章有关多媒体内容的补充。通过Java媒体框架,Java程序可以播放音频和视频媒体,可以从麦克风和摄像机等设备捕捉音频和视频媒体。Java媒体框架(Java Media Framework, JMF)使得Java开发人员能够创建流媒体应用程序,其中,Java程序可以通过Internet向其他的计算机发送现场的或记录下来的音频和视频信息。这样,其他计算机通过网络收到这些信息后,那些计算机上的应用程序就可以播放这些语音和视频媒体流。JavaSound API使得编程人员可以控制音乐设备数字接口(Musical Instrument Digital Interface, MIDI)声音和捕捉媒体流(比如,来自麦克风等设备的媒体流)。本章的最后是一个基本的MIDI处理应用程序,它使得用户可以记录MIDI文件或选择要播放的MIDI文件。用户可以通过与此应用程序的模拟合成器键盘的交互创作自己的MIDI音乐。这个应用程序可以使MIDI文件的音符演奏和模拟合成器键盘的按键达成同步—就像弹奏钢琴一样。[注意:第18章和第22章都提供了大量的基本练习。每一章还有一个特殊小节,包含另外一些吸引人的且具有挑战性的多媒体项目。这些仅仅是对大型项目起到建议参考的作用。教辅材料《Instructor誷 Manual》(《教师指导手册》)和《Java 2 Multimedia Cyber Classroom》(《Java2多媒体电脑教室》)都没有给出额外部分练习的答案。
  * 增强的基于TCP/IP的网络技术
  第17章包括一个最新的例子,这个例子介绍了用来向成组网络用户发送信息的多播(multicasting)技术。这个Messenger实例研究仿效当前许多流行的即时消息接收与发送应用程序,这种应用程序使得计算机用户可以通过Internet与朋友、亲戚和同事进行交流。这个包括1 130行代码的多线程客户机/服务器Java程序,使用了本书目前为止所介绍的绝大多数技术。
  * 附录J,在线求职
  这个附录详细介绍Internet上的在线求职服务。我们从雇员和雇主的角度查看了在线求职服务。我们推荐了一些网站,读者可以在上面提交申请,寻找工作和评审申请者(如果你对雇用人员感兴趣的话)。我们还对那些提供电子企业招募页面的服务进行了评审。我们的一个审阅者告诉我们,他曾通过Internet经历了一次寻找工作的历程,这一章将会扩展他的寻找历程。
  * 附录K,统一编码(Unicode)
  这个附录概述Unicode标准。由于计算机在世界范围的普及发展,计算机厂商为不同国家的各种自然语言开发出了字符集和特殊符号的数字表示。在某些情况下,对于同一种语言,开发出了多种不同的表示。这种不同的字符集使得计算机系统之间的通信变得困难。Java支持统一编码标准(Unicode,该标准由一家叫做Unicode联盟的非盈利组织维护),这个标准为绝大多数语言的字符和特殊符号定义了具有惟一数字值的一种单字符集。这个附录讨论统一编码标准,概述Unicode联盟的网站(unicode.org),并给出了一个以8种不同语言显示“Welcome”的Java程序。
  * Java 2插件移到第3章—applet介绍
  学生们在执行他们的Java程序的时候喜欢立刻看到结果。如果那些程序是在Web浏览器中运行的Java applet,那么这是很困难的。如今绝大多数的浏览器(Netscape Navigator 6除外)并不直接支持Java 2 applet,所以学生们必须通过applet viewer实用工具对他们的applet程序进行测试。Sun公司提供了Java 2插件,使得Java 2 applet能够在不支持Java 2的浏览器中运行。关于Java 2 插件的讨论将带着学生们经历在目前的Web浏览器中执行一个applet所必需的步骤。
  * 光盘上的第22章和附录E~K
  在本书附带的光盘中,你将会发现下面的章和附录:第22章,Java媒体框架和Java Sound;附录E,数制系统(Number Systems);附录F,利用javadoc创建HTML文档;附录G,电梯事件和监听器接口;附录H,电梯模拟系统模型;附录I,电梯系统视图;附录J,在线求职;以及附录K,Unicode编码。
  * 移到《Advanced Java 2 Platform How to Program》的章
  《Java程序设计教程》(第3版)中的4章内容被移到我们的新书《Advanced Java 2 Platform How to Program》中,并且经过了补充改进。这几章是:Java 数据库连接JDBC(Java Database Connectivity)、Servlet、远程方法调用(RMI)和JavaBeans。《Advanced Java 2 Platform How to Program》一书在更深的层次上覆盖了其中的每一个主题。
  对于教师的一些提示
  面向对象的世界
  当我们编写本书的第1版时,大学教育仍然强调采用诸如Pascal和C之类语言的过程式编程。前沿课程采用面向对象的C++进行教学,但这些课程通常在面向对象编程中混合了大量的过程式程序设计—C++允许这种情况的出现,而Java则不可以。到了第3版的时候,许多大学的入门课程开始从C++转向Java,指导教师们强调一种纯粹的面向对象编程方法。与此同时,软件工程界对它的方法进行标准化,采用UML建模面向对象系统,设计模式活动也逐渐发展成形。本书拥有大量的读者,因此我们将该书设计成可定制的。尤其,我们包含了大量可选阅读材料,介绍面向对象设计、UML和设计模式,并以面向对象编程的形式给出了大量的实例研究。这些可选材料内容分布在本书的各个章节中,从而使教师可以在他们的课程中强调面向对象设计的“产业优势”。
  学生们喜欢Java
  学生们正在学习一种领先于时代的语言(Java)和编程范型(面向对象的编程),这些不仅适用于校园而且适用于今后他们所要进入的一个由Internet 和WWW占据主导地位的社会,他们会有浓厚的兴趣。学生们很快会发现他们能用Java语言做很多事,因此他们会加倍用功学习。Java能激发程序设计人员的创造力。这一点我们已经从Deitel&Associate公司的Java教学中看到了。一旦我们的学生进了实验室,我们就不能阻止他们。他们急切地体会和试用那些我们在课堂上并未讲授的Java类库。他们所编写的应用程序已经大大超过了我们在C和C++领域所做的尝试。而且他们对我说,他们在学习完课程后已经迫不及待地想动手干活了。
  本书的重点
  我们的目标很明确:写一本适用于有较少或者根本没有任何编程经验的学生的大学初级课程的Java教科书,同时它又提供了传统的、高层次的C和C++课程中所要求的深度及对理论和实践的严密讨论,以满足专业人员的需要。为了实现这些目标,我们编写了这本内容全面的书,因为我们的内容详细讲述了编程的基础知识及Java语言(例如:数据类型、控制结构、方法、数组、循环及其他一些“经典”的编程主题);展示了若干重要的编程技术,包括基于对象的编程方法、面向对象的编程方法、基于事件驱动的编程方法和并发编程方法;同时也对Java类库进行了细致的剖析。
  《Java程序设计教程》一书版本的变迁
  《Java程序设计教程》第1版是世界上第一本关于Java语言的大学教科书。这本书是紧接着《C How to Program》的第2版和《C++How to Program》之后编写的。全世界大约有数十万学生和专业人士使用这些书学会了C、C++和Java。本书在2001年8月出版发行后,可供世界范围内的成百所大学与上千个公司和政府机构使用。在我们编写不同的版本时,Deitel&Associates公司在全球范围内广泛地讲授Java程序设计课程。我们密切关注课程内容的有效性并相应地做出调整。
  Java的概念化
  我们信任Java。由Sun公司创造的Java语言(公共版于1995年颁布)非常高明。它将一种新的语言建立在两种世界上使用得最广泛的工具语言C和C++之上。这使得它立刻拥有了很多高手级的程序员,而这些人员正在负责完成世界上大部分的操作系统、通信系统、数据库系统、个人计算机应用程序和系统软件。Sun公司删减了C/C++语言的很多混乱性、复杂性和易出错等劣势(例如指针、操作符重载及多态继承等等)。这些改进去除了只有少部分编程人员才会使用的用于特殊目的的函数,使得语言尽可能简洁;使语言变得真正具有可移植性,适合于编写基于Internet和基于WWW的应用程序,并加入一些人们真正需要的功能,如字符串、图形、图形用户界面组件、异常处理、多线程、多媒体(音频、图像、动画)文件处理、数据库处理、基于Internet和WWW的客户/服务器网络和分布式计算以及预打包的数据结构。然后Sun公司把这种语言免费提供给全世界成千上万的潜在的编程人员使用。
  250万的编程大军
  1995年,Java是作为一种向网页中添加“动态内容”的方法而开发的。网页不再只是文本和静态图形,现在的网页有了音频、视频和交互性而变得“活”了起来—而且不久,又会出现三维图像。但我们看到的远不止如此。所有这些功能恰恰是商业和企业界在信息处理方面所需要的。所以我们很快就认识到Java所具有的很大潜力会使其成为世界上重要的通用目的的一种编程语言。事实上,Java推动了软件开发的一场革命,强大的多媒体技术,平台无关性和面向对象技术使程序员可以方便地开发传统的、基于Internet、基于Intranet和基于Extranet的应用程序和applet。如今Java在全球拥有250万的编程大军—若考虑到Java语言对公众开放只有6年的时间的话,这个数字足够让人吃惊了。没有其他任何一种语言能够取得像Java语言这样的飞速发展。
  启用基于多媒体的应用和通信
  在计算机领域中从来没有看到过像现在的Internet/WWW/Java这样的“火爆”场面。人们想要交流,人们需要交流。无疑,人们从文明的曙光出现以来就一直在交流,但是计算机的交流大多数局限于数字、字母和特殊字符。而今,我们正处在多媒体革命的大潮中,人们希望传送图像,而且希望这些图像是彩色的。人们希望传送语音、声音和音频片断,希望传送动态的彩色视频图像(而且希望传输质量不低于DVD)。最终,人们希望可以传输三维动画。现在我们公寓内的二维电视最终将会被三维电视取代,它能将我们的房间变成一个“环幕影院”,我们就像坐在剧场内一样观看演员表演;我们的起居室将变成小型的体育场;我们可以在处于不同半球的合作者之间召开电视会议,就像大家都坐在一张会议桌前。这些可能性具有很强的吸引力,而Java无疑会在将这些可能变成现实的过程中扮演一个重要角色。
  教学方法
  本书包括了从各个领域提取的丰富示例、练习和项目,给学生提供一个解决有趣的、真正问题的机会。本书着重于良好的软件工程的原理,强调程序的清晰性,力求避免神秘的术语和句法规范,用示例进行教学。每一个代码示例均在流行通用的平台上进行了仔细的测试。我们是世界上这一教学领域中教授应用型知识的教育工作者,因此更加强调教育的方法。
  1. 可运行的代码教学方法
  本书充满了可运行的代码示例。这是我们组织教学和编写编程内容的主要方法,也是多媒体电脑教室和基于Web的课程训练的重点。对每个新概念都通过一个完整的、可运行的程序(applet或应用程序)来描述,并给出一个或多个程序运行结果。我们把这种教学方法和教材编写的风格称为可运行的代码(live-code)方法。
  2. 从第2章开始介绍Java与Swing
  本书从第2章就直接进入面向对象的编程、应用程序和Swing风格的GUI组件的设计。人们说这是个“飞跃”,但学习Java的人希望“直截了当”。既然Java内容丰富,那么就让我们单刀直入,马上开始!Java非常有价值,又很有趣,学生们立刻能看到结果。可以通过Java 2“可复用组件”的扩展类库,很快使图形的、动画的、基于多媒体的 、音频的、多线程的、基于网络的程序运行起来,这些都是让人印象深刻的项目。和C及C++语言的学习相比,在一两个学期的Java课程中,学生们表现得更富有创造力和高效率。
  3. WWW的访问
  本书的所有代码都可以在附带的光盘上或从Internet上Deitel & Associates公司的站点(www.deitel.com)获取。请在阅读本书时运行每个程序。读者也可以修改代码示例看看会产生什么结果,看看Java编译器在你制造了各种错误时如何“抱怨”。对修改代码所产生的结果要及时注意。进行编程是学习编程的好方法。[这些程序是受版权保护的,学习Java时可以随意使用,但是在没有得到作者和Prentice Hall公司的明确同意前你不得复制发行它们。]
  4. 目标
  每一章的开始均有这章的学习目标。它简要地说明了这章的内容,并使读者能够在学完一章后确定自己是否达标。它可以帮助学生建立信心,而且有助于巩固知识。
  5. 引语
  在学习目标的后面是一些引语。它们中一些很幽默,一些有哲理,一些则具有洞察力。学生们都很喜欢每章的引语,这些引语在阅读完每一章后很值得回味。
  6. 提纲
  提纲以从上到下的形式帮助读者了解各章的内容,有利于读者融入将要学习的内容中,并为自己设计合适的学习节奏。
  7. 197个示例程序中的25 576行代码(包括程序输出)
  我们通过完整的、可运行的程序来描述Java语言的特点。这些程序的长度从区区几行到多达上百行不等(而且提供了3 465行可选学的用面向对象方法开发的电梯模拟程序)。学生们应当利用此书所附光盘上的程序或从我们的网站(www.deitel.com)下载这些程序并在学习期间运行每个程序。
  8. 545个图解或插图
  本书包含了丰富的图表、线状图形和程序输出。例如,在讨论控制结构时仔细地画出了程序流程图。(注意,我们没有将程序流程图作为一种程序开发工具来讲解,但在本书的说明中确实使用了简单的、面向流程图的表示方法来解释Java的控制结构的准确操作步骤。)
  9. 605个编程提示
  本书中的编程提示帮助学生注意程序开发中的每一个重要方面。书中用良好的编程习惯、常见编程错误、测试和调试提示、提高性能的建议、可移植性提示、软件工程评述以及外观和风格评述的形式强调了几百个这样的提示。这些提示和练习是作者在60年的编程和教学经历中搜集到的最好资料。最近,有一位数学专业的学生告诉我们,她觉得这种方法很像在数学课本中强调的公理、定理和推论,它提供了构造优秀软件的基础和经验。
  10. 97个良好的编程习惯
  在讲授入门课程时,我们希望每节课程的重点部分能够清晰易懂,我们用“良好的编程习惯”强调这些重点,使学生能编写结构更清楚、更易于理解、更易于调试和更易于维护的程序。
  11. 199个常见编程错误
  当学生学习一种语言时经常容易犯某些错误,因此关注这些常见编程错误可以帮助他们避免犯同样的错误,而且还可以减轻教师答疑的工作量。
  12. 46个测试和调试提示
  在起初设计这种提示类型时,我们认为应当用它来严格地告诉人们该如何测试和调试Java程序。实际上,很多提示所要说明的是如何减少Java程序发生错误的可能性。因而简化了Java程序的测试和调试。
  13. 67个提高性能的建议
  以我们的经验,教会学生如何编写清楚易懂的程序是初级编程教材最主要的目标。但是许多学生想编写运行得最快、占用内存最少、所需击键次数最少,或者具有其他妙处的程序。换句话说,学生们关心的是性能,他们想知道是否有方法可以使他们极大地改善他们的程序,使其获得优异性能。因此,本书列举了67个提高性能的建议,重点强调改善程序性能的方
法—以使程序能运行得更快或减少它们所占用的存储容量。
  14. 24个可移植性提示
  Java语言所“宣称”的一个特色是“广泛的”可移植性,因此有些编程人员认为,如果他们用Java语言完成了一个应用程序,那么这个应用程序就能自动且完美地移植到所有Java平台上。遗憾的是,情况并不总是如此。本书列举的可移植性提示帮助学生们编写可移植的程序,并深入考察了如何使Java获得高度的可移植性。在《C How to Program》和《C++ How to Program》中有更多的可移植性提示。本书中有较少这类提示的原因在于:Java被设计成移植性非常好的语言,因此,在获得可移植性方面,Java编程人员所要做的工作比C或C++编程人员要少。
  15. 134个软件工程评述
  面向对象的编程方法需要我们对构造软件系统的方法重新做一番考虑。Java是执行良好软件工程准则的有效语言。软件工程评述突出介绍了影响软件系统,特别是构造大规模系统的体系结构和设计的有关问题。学生们在这一部分学到的知识将在高级课程中,以及在开发大型的、复杂的、真正的系统时有所帮助。
  16. 38个外观和风格评述
  我们提供外观和风格评述,以强调图形用户界面的常规习惯。这些评述可以帮助学习者设计他们自己的并且符合行业规范的图形用户界面。
  17. 小结(983个着重点)
  每章以一个详细的小结结束。每个小结均包括多条总结性的语句,每条句子以小圆点表示开始。平均每章有42个小圆点,它们有利于帮助读者复习和巩固关键概念。
  18. 术语(2 171个术语)
  本书在术语部分列出每章定义的重要术语,这是进一步的巩固。平均每章有95条术语。
  19. 397个自测练习及答案(包括独立的部分)
  本书包括了大量供自学者使用的自测练习和答案。这使读者能够建立自信心,并为正式的练习做好准备。读者应完成所有这些练习并对照答案检查。
  20. 779个练习(包括独立的部分)
  每一章均有一整套的练习,其中包括对重要术语和概念的简单回忆;编写单条的Java语句;编写Java方法和类的各个小部分;编写完整的Java方法、类、applet和应用程序;开发较大型的学期项目。大量的练习涵盖了很多领域,使教师可以根据学生的不同需要编排课程,并且每个学期都可以改变课程作业。教师可以用这些练习布置家庭作业、小测验和重要考试。大部分练习的答案在光盘版教师参考手册上(仅限提供给教师),教师可以通过Prentice-Hall公司的代理商获得。 [注意:请不要写信向我们索要教师手册。这些资料只提供给大学里教这门课的授课教师。并且教师也只能从Prentice-Hall公司的代理商处获得。对于不能把这些资料提供给广大的业内人士,我们感到十分抱歉。]
  大约有一半左右的练习答案在《Java Multimedia Cyber Classroom》(第4版)的光盘上,也可以从《The Complete Java 2 Training Course》一书中获得。若想要订购这些资料,请访问网站www.deitel.com。
  21. 参考文献
  本书包括一个参考文献和Sun公司的Java 2文档,鼓励读者进一步阅读。
  本书包含的软件
  市场上有很多的Java产品出售。然而,在开始学习Java时并不需要它们。我们编写本书仅借助了Java2 软件开发工具箱(Java 2 Software Development Kit, J2SDK)。为了方便广大读者,在本书所附带的光盘上收录了Sun公司的J2SDK 1.4版。J2SDK也可以从Sun公司的Java网站:java.sun.com/j2se上下载。在Sun公司的帮助下,我们还在光盘上收录了强大的Java集成开发环境(Integrated Development Environment, IDE)—Sun公司的Fort* For Java共享版。
  Fort* For Java共享版是用Java语言编写的专业IDE环境,包括图形用户界面设计器、代码编辑器、编译器和可视化的错误调试器等。J2SDK必须在Fort* For Java共享版之前安装。如果对这套软件的使用有疑问的话,参阅光盘上Fort* For Java共享版的使用说明。
  这张光盘上也收录了书中的示例,链接到Deitel & Associates公司、Prentice Hall公司及附录中所列的其他一些公司网站的HTML网页。若有条件上网的话,可将这个网页下载到你的Web浏览器中,这样可以快速访问这些资源。还有,光盘上还有第22章和附录E~K的内容。
  本书的教辅工具
  本书为授课教师提供大量的辅助工具。教师手册的光盘包含了每章后面大量习题的答案,以及一个含有大量多项选择题的试题库(大约每节2道题)。此外,我们还提供包含本书所有代码和图形的PowerPoint幻灯片。你可以根据实际需要进行选择。Prentice Hall公司提供了一个相关站点(www.prenhall.com/deitel),该站点为教师和学生提供了许多资源。对于教师,该站点提供了教学计划的安排、到PowerPoint幻灯片的相关链接及与本书附录有关的参考资料(例如操作符的优先级、字符集及Web资源)。对于学生,该站点提供了每一章的学习目标、可及时反馈的正误判断练习以及每章中的重点和参考资料。[注意:请不要写信向我们索要教师手册。这些资料只提供给大学里教这门课的授课教师。并且教师也只能从Prentice Hall公司的代理商处获得。对于不能把这些资料提供给广大的业内人士我们感到十分抱歉。《Java 2 Multimedia Cyber Classroom》第4版(光盘和基于Web的培训版)和《The Complete Java 2 Training Course》第4版
  我们准备了一个互动的、基于光盘的本书软件,即《Java 2 Multimedia Cyber Classroom》第4版。它有学习和参考两方面的价值。《Java 2 Multimedia Cyber Classroom》与《The Complete Java 2 Training Course》第4版捆绑打折销售。如果你已有该书又想单独购买《Java2 Multimedia Cyber Classroom》第4版,请访问www.informit.com/cyberclassrooms,查询ISBN为#0-13-064935-x的《Java 2 Multimedia Cyber Classroom》。
  该光盘介绍了作者对《Java 2 Multimedia Cyber Classroom》特点的总体看法。本书中197个代码示例在《Java 2 Multimedia Cyber Classroom》里真的“活灵活现”了。如果想查看一个程序并想执行它的话,只要单击闪亮的按钮,程序就会运行。你会立刻看到程序的输出,甚至听到那些多媒体程序发出的声音。如果你想修改程序,并且看看听听变化后的效果,只要按一下软盘按钮,从光盘中“调出”源代码,“装入”自己的目录即可进行编辑,重新编译后即可试验新版程序。单击语音按钮,Paul Deitel将讲述程序。
  《Java 2 Multimedia Cyber Classroom》还提供了各种导航帮助,包括详尽的超链接。《Java 2 Multimedia Cyber Classroom》是基于浏览器的,所以可以记录读者最近访问过的章节,从而允许查看本节的前一节或后一节内容。成千上万的索引项都通过超链接连接到相关的文本。读者可以在“查找栏”中输入一个关键字,《Java 2 Multimedia Cyber Classroom》将进行全文搜索,找到其位置。目录中的每一项都有“热”链接,所以单击某一章的名称就可以立刻找到这一章。
  学生告诉我们,他们尤其喜欢《Java 2 Multimedia Cyber Classroom》里几百个对书中题目的解答。学习和运行这些程序对增加他们的学习经验是一个很好的方法。
  使用过《Java 2 Multimedia Cyber Classroom》的学生和专业人士告诉我们,他们喜欢它的交互性,而且因为它的大量的超链接和其他的导航特点,它具有很高的参考价值。最近我们收到了一个住在边远地区的人的电子邮件,他说他无法到大学里学习课程,好在《Java 2 Multimedia Cyber Classroom》满足了他的需要。
  一些教授也告诉我们,他们的学生喜欢使用《Java 2 Multimedia Cyber Classroom》,愿意在学习上花更多时间,并且掌握了更多知识。我们已经出版(或将要出版)许多其他多媒体教室和完全训练课程的产品。若想知道现有的和即将出版的Cyber Classroom和Complete Training Course的书目清单,请访问www.deitel.com 和www.prenhall.com/deitel以获取更多的信息。
  致谢
  写书时我很感动,那么多无名英雄为本书的出版付出了艰辛的劳动,他们的工作、合作、友谊和相互理解对本书的出版意义非凡。
  Deitel & Associates公司的许多员工也为本书奉献了宝贵的时间。在此我们特别感谢Deitel & Associates公司的员工Tem Nieto、Sean Santry、Jonathan Gadzik、Kate Steinbuhler、Rashmi Jayaprakash 和Laura Treibick为本书所付出的劳动。
  * Tem Nieto毕业于麻省理工学院。他教授XML、Java、Internet和Web、C、C++并主持VB研讨会,并和我们合作出版教材、课程开发和多媒体教材的创作。他也是《Internet &World Wide Web How to Program》(第2版),《XML How to Program》,《Perl How to Program》,《Visual Basic 6 How to Program》的作者之一。在本书中,Tem负责编写第11、12、13和第21章的内容及第19章中的“构建自己的编译器”这节内容。
  * Sean Santry毕业于波士顿学院(计算机系和哲学系),同时也是《Advanced Java 2 Platform How to Program》一书的作者之一,负责编写第22章及更新第15章(多线程)的程序,设计并完善第17章中的Deitel Messenger网络应用程序,帮助设计OOD/UML中的可选实例研究,修订了可选部分的设计模式实例研究和基于OOD/UML的模拟电梯实例。
  * Jonathan Gadzik毕业于哥伦比亚大学工程和应用科学学院(计算机科学学士),OOD/UML实例研究和“揭示设计模式”选学小节的作者之一。同时他也实现了3 465行的Java程序代码,因此彻底解决了在OOD/UML实例学习中的面向对象的模拟电梯练习。
  * Kate Steinbuhler毕业于波士顿学院的英语和通信专业,附录J的作者之一。Kate现在在匹兹堡大学的法学院学习—祝你好运,Kate!感谢你为Deitel的三本书所做的贡献。
  * Rashmi Jayaprakash毕业于波士顿学院计算机科学系,是附录K的作者之一。
  * Laura Treibick毕业于博尔顿的卡罗拉多大学,主修图形学和多媒体专业,他为OOD/UML实例研究的执行创建了栩栩如生的小臭虫图像。
我们还要感谢 Deitel & Associates 公司的合作伙伴, 大学的实习编程员 。
  * Susan Warren是布朗大学计算机系三年级的学生,Eugene Izumo是布朗大学计算机系二年级的学生。他们校对了第4版的全部内容,校对并更新了第22章的内容,更新了附录A和附录B。Susan 和Eugene也为本书的附属资料做了许多工作,如练习的答案、Web站点上的判断题(www.prenhall.com/deitel)、《Java 2 Multimedia Cyber Classroom》的判断题及教师试题库中的多项选择题答案。
  * Vincent He是波士顿学院管理和计算机系四年级的学生,是第22章的作者之一,该章也是本书中最有趣的部分之一。我们坚信你会喜欢Vincent为你提供的多媒体素材。
  * Liz Rockett,普林斯顿大学英语系四年级的学生,他更新并编写了第22章的内容。
  * Chris Henson,布兰带斯大学的研究生(计算机科学和历史系),他校对了第22章的内容。
  * Christina Carney,弗兰明哥州立大学心理和商业学系四年级的学生,查找并更新了参考文献,并帮助准备序言部分和查找OOD/UML实例研究和设计模式的URL资料。
  * Amy Gips,波士顿学院市场和金融系二年级的学生,她更新并添加了附录A和附录B中的应用程序、图形Java 2D和多媒体的URL,Amy同样为第22章查找了相关资料的出处并帮助准备序言部分。
  * Varun Ganapathi,康奈尔大学电机和计算机科学系二年级的学生,他更新了附录F并用javadoc创建了HTML文件。
  * Reshma Khilnani,麻省理工学院计算机和数学系三年级的学生,他和Rashmi合作完成了附录中Unicode的工作。
很荣幸我们能和汇聚了出版界众多精英的Prentice Hall公司合作共同完成这个出版项目。在此特别感谢我们的计算机图书编辑Petra Recter 和她的上司—我们在出版界的良师益
友—Marcia Horton, Prentice-Hall公司机械和计算机科学方面的主编。Camille Trentacoste作为出版经理也做了大量的工作。
《Java 2 Multimedia Cyber Classroom》第4版与本书是同步发行的。我们真诚地感谢具有“新媒体”远见、能干的e-madia主编Mark Taub,他是我们的良师益友。在紧张的进度安排下,他和我们的e-media编辑,Karen Mclean为《Java 2 Multimedia Cyber Classroom》第4版得以顺利地出版发行付出了艰辛的劳动。Michael Ruel 作为电脑教室的项目经理也做了大量的工作。
  在此我们特别要感谢Tamara Newnam(smart_art@earthlink.net)的创造力,她为我们设计编程提示的图标和封面。她还设计了妙趣横生的小臭虫画像。Michelle Gopen为封面的小臭虫起名。
  我们衷心感谢参与第4版修订工作的人员:
  《Java程序设计教程》第4版审阅人员名单如下:
Dibyendu Baksi(Sun公司)      Tim Boudreau(Sun公司)
Michael Bundschuh(Sun公司) Gary Ginstling(Sun公司)
Tomas Pavek(Sun公司)      Rama Roberts(Sun公司)
Terry Hull(Sera Nova)
Ralph Johnson(“四人帮” 经典书籍的作者之一,Design Patterns: Elements of Reusable Object-Oriented Software, Addison Wesley 1995)
Cameron Skinner(Embarcadero Technologies; OMG)
Michael Chonoles(Lockheed Martin Adv. Concepts; OMG)
Brian Cook(The Technical Resource Connection; OMG)
Akram Al-Rawi(Zayed大学)
Charley Bay(Fronte Range社区学院)
Clint Bickmore(Fronte Range社区学院)
Ron Braithwaite(Nutriware)
Columbus Brown(IBM)
Larry Brown(《Core Web Programming》的作者之一)
Dan Corkum(Trillium Software)
Jonathan Earl(技术培训和咨询者)
Karl Frank(togethersoft.com)
Charles Fry(thesundancekid.org)
Kyle Gabhart(Objective Solutions)
Felipe Gaucho(Softexport)
Rob Gordon(SuffolkSoft公司)
Michelle Guy(XOR)
Christopher Green(Colorado Springs Technical Consulting Group)
Kevlin Henney(Curbralan Limited)
Ethan Henry(Sitraka Software)
Faisal Kaleem(Florida国际大学)
Rob Kelly(SUNY)
Scott Kendall(咨询者,UML作者)
Sachin Khana(Freelance Java Programmer)
Michael -Franz Mannion(Java开发人员)
Julie McVicar(Oakland社区学院)
Matt Mitton(咨询者) Dan Moore(XOR)
Simon North(Synopsys) Chetan Patel(Lexisnexis)
Brian Pontarelli(咨询者) Kendall Scott(咨询者,UML作者)
Craig Shofding(CAS Training Corp)
Spencer Roberts(Titus Corporation)
Toby Steel(CertaPay)
Stephen Tockey(Construx Software)
Kim Topley(《Core Java Foundation Classes》和《Core Swing: Advanced   
Programming》的作者,两本书均由 Prentice Hall出版)
Gustavo Toretti(Java程序员;Campinas大学)
Michael Van Kleeck(Learning.com的技术主管)
Dave Wagstaff(Sungard)
《Java程序设计教程》 第3版的后期出版审阅者
Jonathan Earl(技术培训咨询者) Harry Foxwell(Sun公司)
Terry Hull(Sera Nova)
Ron McCarty(Penn State University Behrend Campus)
Bina Ramamurthy(SUNY Buffalo)
Vadim Tkachenko(Sera Nova)
  在本书稿件交付时间紧迫的情况下,他们仔细审阅了书稿并就其内容的准确性和表述的完备性方面提出了许多宝贵的意见。
  我们将十分感谢您对本书的意见、批评、指正和建议。请和以下地址联系:deitel@deitel.com
  我们将尽快给您回音。当然,当下我们还是回到这本书上吧。欢迎来到激动人心的Java编程世界。我们真心地希望您能喜欢这本计算机应用开发领域的书 。祝您好运!

作者简介

Harvey M.Deitel,Paul J.Deitel:Harvey M.Deitel: Harvey M. Deitel博士是Deitel & Associates公司的主席和CSO(首席战略长官),他在计算领域有41年的工作经验,包括广泛的业界和学术经验。Deitel博士获得了麻省理工学院的学士和硕士学位,以及波士顿大学的博士学位。他曾在IBM公司和MIT(麻省理工学院)从事开发虚拟存储操作系统项目,其开发的技术现在广泛应用于诸如Unix、Linux以及Windows XP等系统中。他有20年的高校教学经验,这其中包括在与他的儿子Paul J. Deitel创建Deitel & Associates公司之前在波士顿大学的计算机科学系当主任的经历。他是许多书籍和多媒体软件包的作者或合作者,并且正在编写更多的图书。Deitel博士的书已被翻译成日语、俄语、西班牙语、繁体中文、简体中文、韩语、法语、波兰语、意大利语、葡萄牙语以及希腊语出版,可见其作品已得到国际上的认可。Deitel博士的专业讨论班已遍布大型公司、政府组织以及各种不同的军事分支机构。
Paul J.Deitel: Paul J. Deitel是Deitel & Associates公司的CEO兼CTO,毕业于麻省理工学院Sloan管理学院,主修信息技术专业。通过Deitel & Associates公司,他将Java、C、C++和因特网以及万维网的编程课程带给各业界客户,包括康柏公司(Compaq)、惠普公司(Hewlett-Packard)、Sun公司、白沙导弹射程公司(White Sands Missile Range)、流浪者漂流软件公司(Rogue Wave Software)、波音公司(Boeing)、戴尔公司(Dell)、层云公司(Stratus)、高保真公司(Fidelity)、剑桥技术合作者公司(Cambridge Technology Partners)、开放环境公司(Open Environment Corporation)、一浪公司(One Wave)、亥伯神龙软件公司(Hyperion Software)、朗讯技术公司(Lucent Technologies)、Adra系统公司(Adra Systems)、Entergy公司、有线数据系统公司(CableData Systems)、肯尼迪太空中心的国家航空宇航局(NASA)、国家严重风暴实验室(National Severe Storms Laboratory)、IBM和许多其他组织等。他曾在计算机协会(ACM)波士顿分会做有关C++和Java的演讲,而且通过Deitel & Associates公司、Prentice Hall出版社和技术教育网络的合作企业教授基于卫星的Java课程。他和父亲Harvey M. Deitel博士是世界上最畅销的编程语言课本的作者。

译者简介

袁兆山 刘宗田 苗沛荣 等:袁兆山: 教授,合肥工业大学计算机与信息学院软件工程研究室主任,中国电机工程学会高级会员,安徽省电机工程学会理事,计算机专委会副主任、秘书长。从事计算机应用,计算机软件与理论专业本科、硕士、博士研究生的教学和该方向的科学研究与应用项目开发。 目前从事的研究方向是基于知识的智能软件工程环境、网络与MIS。主持和参加了国家自然科学基金、部发展基金及省自然科学基金等各种基金项目20多项;已完成并鉴定16项、获奖项目8项,其中部科技进步三等奖1项、部司科技进步一等奖1项、科技进步奖2项、评为安徽省重大科研成果2项。已发表学术论文100多篇、获得安徽省自然科学优秀学术论文二、三等奖,部级优秀学术论文奖和进入EI论文20多篇。已经出版专著2部、译著、教材多部。
刘宗田: 上海大学教授,博士生导师。中国机械工程学会高级会员、中国电子学会高级会员、安徽省计算机学会理事、安徽省电子学会理事、安徽省电子学会计算机应用专业委员会主任委员。 1970年毕业于北京航天航空大学,1982年毕业于北京航空航天大学计算机科学与工程系,获硕士学位。所学专业为计算机软件,现从事专业为计算机应用技术。技术专长与现研究方向为人工智能应用、软件工程。
苗沛荣: 女,合肥工业大学电气与自动化工程学院高级工程师。研究方向为电工理论与实验,计算机应用技术与MIS软件开发。主要参加科研项目8项,已发表学术论文10篇,参加编写、翻译出版教材、译著多部。

译者序

Java是目前最流行的软件开发语言之一,由Sun公司推出,称为网络上的“世界语”。Java建立在C和C++之上,使熟悉C、C++的程序员能方便地运用Java进行编程。Java摒弃了C、C++中许多不合理的特性,具有简单高效、面向对象、不依赖于机器结构的特点,支持多线程、分布和并发机制。Java在可移植性、健壮性、安全性方面大大优于已存在的其他编程语言。Java提供了丰富的类库,可广泛用于面向对象事件描述、企业型应用开发,Internet系统管理、网页设计、可视化软件开发。Java语言的动画效果逼真,尤其是利用WWW共享全世界的巨大动画资源。Java的应用必将对整个计算机产业产生深刻影响,从根本上变革软件的设计风格、设计方法和设计过程。在计算界,学习Java的热潮已经到来。
  《Java程序设计教程》第4版是在对第3版内容进行可观调整(有多达千余处的改进)的基础上精化而成的。第3版的Java 数据库连接JDBC、Servlet、远程方法调用(RMI)和JavaBeans 4章内容移到作者的另外一本书中《Advanced Java 2 Platform How to Program》,并且经过了补充改进。第4版简化了最初几章,使得非专业程序员学习Java更容易。
  第4版包括了许多新特性,例如:
  (1)与一般的教科书不同,本书实用性强,以多个案例分析为中心,采用大量的可用代码(全书包含了近4万行代码以及大量的图表演示,有利于读者的自学和实例教学),使读者能很快地进入Java编程世界。介绍利用Java进行面向对象编程的基本原则,包括180页可选的利用UML介绍面向对象设计的实例研究,从而全面、深入地了解Java。
  本书关键主题包括:
  * 应用程序/applet * 文件/流/串行化
  * Swing GUI/事件处理 * 联网/客户机/服务器/Internet/Web
  * 类/对象/接口 * 图形/Java 2D/图像/动画
  * 封装/内部类 * JMF/ Java音响/音频/视频/MIDI
  * OOP/继承性/多态性 * (选学)OOD/UML/设计模式
  * 数据结构/聚集 * 异常/多线程
  (2)包含丰富的教学特性。本书目标明确,适用于很少或者根本没有编程经验的学生,同时又提供高层次的C和C++课程中所要求的深度及对理论和实践的严密讨论,以满足专业人员的需要。详细讲述编程的基础知识及Java语言,包括数据类型、控制结构、方法、数组、循环及其他一些“经典”的编程主题;展示了若干重要的编程技术,包括基于对象的编程方法、面向对象的编程方法、基于事件驱动的编程方法和并发编程方法;同时也对Java经典程序类库进行了细致的剖析。
  针对Java 2平台的开发特点,介绍了设计模式的概念,例如三层体系结构、MVC设计模式等。并结合书中的案例分析,对设计模式和体系结构进行了相应的介绍。
  Java 程序设计教程是学习和讲授Java的资源中心,包括网站(www.prehall.com/deitel和www.deitel.com)和书中的源代码(包含在随书附赠的光盘上)。
  (3)本书有超过200页的可选阅读材料,介绍OOD、UML和设计模式,并以OOP的形式给出大量的实例研究。这些可选内容作为“关于对象的思考”小节分布在各章中,目的是帮助读者提高用OO方法来思考如何设计并实现一个系统的能力。本书利用Java代码完全实现了应用OOD技术的电梯实例研究。在阅读实例研究解决方案中多达3 465行的Java程序后,会提高你的代码阅读能力。
  (4)介绍OO设计模式,这对于需要数千行或百万行,甚至数百万行代码的大型复杂系统的构造、高效设计是很关键的。设计模式用来构造灵活、易维护的OO软件,使用设计模式可显著降低设计过程的复杂度。本书描述了在Java API中所采用的设计模式。在本书的许多程序中,都使用了设计模式,这些为使用设计模式来构造可靠的、健壮的面向对象软件提供了示例。
  (5)第22章介绍Java的音频和视频功能。Java媒体框架(JMF)使Java开发人员能够创建流媒体应用程序,以通过Internet向其他的计算机发送现场的或记录的语音和视频信息。收到信息的计算机可即时播放这些语音和视频。JavaSound API使编程人员可以操纵音乐设备数字接口(MIDI)。
  (6)第17章增强了基于TCP/IP的网络技术,用新的例子介绍用来向成组网络用户发送信息的多播技术。这种应用使用户可通过Internet与朋友、亲戚和同事进行通信。这包括1 130行代码的多线程C/S Java程序,它使用了本书目前为止所介绍的绝大多数技术。
  (7)将Java 2插件移到第3章介绍。Sun公司提供了Java 2插件,使得Java 2 applet能够在不支持Java 2的浏览器中运行。关于Java 2 插件的讨论将使学生们经历在目前的Web浏览器中执行一个applet所必需的步骤。
  (8)本书涉及主题众多,在随书附带的光盘中提供下面的章和附录:第22章、附录E、附录F、附录G、附录H、附录I、附录J以及附录K。
  为推动学习Java的热潮,帮助读者进一步学习和使用Java,机械工业出版社华章分社从美国Deitel&Associaties公司和Prentice Hall公司获得H.M.Deilel博士和P.J.Deilel合著的《Java 程序设计教程》第4版的版权,并组织我们翻译为中文版,奉献给广大读者。
  本书作者Harvey M.Deitel博士和Paul J.Deitel是Deitel & Associate公司的创办者,该公司是全球认可的企业培训和创新机构,致力于研究Java、C++、C、Visual C#、Visual Basic、 Visual C++、.NET、XML、Python、Perl、Internet、Web和对象技术。Harvey M. Deitel 博士在计算机领域有着40年的经验,包括担任波士顿学院计算机科学系的主任。他是十几本书的作者或合作者,他编写的教材已被翻译成日文、俄文、西班牙文、中文、朝鲜文、法文、波兰文和葡萄牙文出版。Deitel博士还为许多大公司、政府机构和军事组织讲授研讨课。Paul J.Deitel毕业于麻省理工学院Sloan管理学院。他已经为许多大型公司、航天中心、国家验室及其他众多机构讲授过相关课程。在本书的编著过程中,他们进行了精心组织和Java课程的讲授实践,提出了从目标、引语、提纲、正文、小结、术语直至习题的严谨体系结构。这是一本具有现代教育思想和方法的教程,由浅入深,示例引导,生动活泼。阅读本书,会给读者带来兴趣、鞭策和激励。Java的入门读者会感觉到内容引人入胜,具有编程经验的读者会被多线程、多态性、自动垃圾收集、异常处理、Java虚拟机、完全面向对象、可视、可听、可操作、多媒体、网络技术、Swing GUI及聚集等新兴技术的深入讲解所吸引,必定受益匪浅。译者推荐这本学习Java的好教程,希望本书在我国计算机界推广和应用Java的过程中发挥出更大的作用。
  本书由合肥工业大学计算机与信息学院袁兆山教授主持翻译,参加翻译的还有苗沛荣、宋淼、张艳明、成琦、朱晓春、刘奎、袁晓靖、杨彬、张健、刘磊、李向上、袁晓辉、王晓莉等。刘宗田、宋淼等参加审校,由袁兆山审校定稿。蔡斌辉、吴雷、李超、谢云、王玮、李彬彬阅读了译稿,并提出了有益的意见。
  限于水平,翻译中不妥或错误之处在所难免,敬请广大读者批评指正。
  
译  者
2004年2月于合肥

图书目录

第1章  计算机、Internet和Web
1.1  简介
1.2  什么是计算机
1.3  计算机的组成
1.4  操作系统的演化
1.5  个人计算、分布式计算与客户/服务器计算
1.6  机器语言、汇编语言和高级语言
1.7  C++的历史
1.8  Java的历史
1.9  Java的类库
1.10  其他高级语言
1.11  结构化编程
1.12  Internet和WWW
1.13  典型Java环境的组成
1.14  关于Java和本书的通用注释
1.15  关于对象的思考:对象技术和统一建模语言简介
1.16  揭示设计模式:简介
1.17  本书概况
1.18  (选学)纵览利用UML进行面向对象设计的实例研究
1.19  (选学)浏览“揭示设计模式”的各个小节
第2章  Java应用程序
2.1  简介
2.2  第一个Java程序:打印一行文本
2.3  修改第一个Java程序
2.3.1  用多行语句显示一行文本
2.3.2  用一行语句显示多行文本
2.4  在对话框中显示文本
2.5  另一个Java应用程序:整数相加
2.6  存储器概念
2.7  算术运算
2.8  判断:相等和关系操作符
2.9  (可选实例研究)关于对象的思考:考察问题陈述
第3章  Java applet
3.1  简介
3.2  Java 2软件开发工具箱提供的简单applet示例
3.2.1  TicTacToe applet
3.2.2  DrawTest applet
3.2.3  Java2D applet
3.3  一个简单的Java applet:显示一个字符串
3.4  两个简单的applet:画字符串和线条
3.5  另一个Java applet:浮点数相加
3.6  在Web浏览器中查看applet
3.6.1  在Netscape Navigator 6 中查看applet
3.6.2  使用Java插件在其他浏览器中查看applet
3.7  Internet和WWW上的Java applet资源
3.8  (可选实例研究)关于对象的思考:标识问题陈述中的类
第4章  控制结构(第1部分)
4.1  简介
4.2  算法
4.3  伪代码
4.4  控制结构
4.5  if选择结构
4.6  if/else选择结构
4.7  while循环结构
4.8  算法设计:实例研究1(计数器控制的循环)
4.9  自上而下逐步细化地构成算法:实例研究2(标记控制的循环)
4.10  自上而下逐步细化地构成算法:实例研究3(嵌套的控制结构)
4.11  赋值操作符
4.12  增量和减量操作符
4.13  基本数据类型
4.14  (可选实例研究)关于对象的思考:标识类属性
第5章  控制结构(第2部分)
5.1  简介
5.2  由计数器控制的循环
5.3  for循环结构
5.4  for结构应用举例
5.5  switch多重选择结构
5.6  do/while循环结构
5.7  break和continue语句
5.8  带标号的break和continue语句
5.9  逻辑操作符
5.10  结构化编程小结
5.11  (可选实例研究)关于对象的思考:标识对象的状态和活动
第6章  方法
6.1  简介
6.2  Java中的程序模块
6.3  Math类的方法
6.4  方法
6.5  方法定义
6.6  数据类型的提升
6.7  Java API包
6.8  随机数的生成
6.9  例子:碰运气游戏
6.10  标识符的持续时间
6.11  作用域规则
6.12  递归
6.13  递归举例:Fibonacci数列
6.14  递归与迭代
6.15  方法重载
6.16  JApplet类的方法
6.17  (可选实例研究)关于对象的思考:标识类操作
第7章  数组
7.1  简介
7.2  数组
7.3  声明数组和给数组分配内存
7.4  数组应用举例
7.4.1  分配数组内存并初始化数组元素
7.4.2  用初值表对数组进行初始化
7.4.3  计算并存储数组元素的值
7.4.4  计算数组元素之和
7.4.5  使用柱状图显示数组数据
7.4.6  使用数组元素作为计数器
7.4.7  使用数组分析调查结果
7.5  引用和引用参数
7.6  把数组传递给方法
7.7  数组排序
7.8  数组查找:线性查找和折半查找
7.8.1  线性查找
7.8.2  采用折半查找对有序数组进行查找
7.9  多维数组
7.10  (可选实例研究)关于对象的思考:对象之间的协作
第8章  基于对象的编程
8.1  简介
8.2  用类实现抽象数据类型:时间
8.3  类作用域
8.4  成员访问控制
8.5  创建包
8.6  初始化类对象:构造函数
8.7  重载的构造函数
8.8  设置和读取方法
8.9  软件复用性
8.10  final实例变量
8.11  组合:对象作为其他类的实例变量
8.12  包访问
8.13  this引用
8.14  终结函数
8.15  static类成员
8.16  数据抽象和封装
8.17  (可选实例研究)关于对象的思考:开始对电梯模拟系统的类进行编 
第9章  面向对象的编程
9.1  简介     
9.2  超类和子类
9.3  protected成员
9.4  超类对象和子类对象之间的关系
9.5  子类中的构造函数和终结函数
9.6  子类对象向超类对象的隐式转换
9.7  利用继承性的软件工程
9.8  组合和继承的比较
9.9  实例研究:点、圆、圆柱体
9.10  多态性简介     
9.11  类型域和switch语句
9.12  动态方法绑定     
9.13  final方法和final类
9.14  抽象超类和具体类
9.15  多态性实例     
9.16  实例研究:多态性在工资系统中的应用
9.17  新类和动态绑定
9.18  实例研究:继承接口和实现
9.19  实例研究:创建和使用接口
9.20  内部类定义
9.21  内部类定义的注释
9.22  基本类型的类型包装类
9.23  (可选实例研究)关于对象的思考:电梯模拟系统中继承性的应用
9.24  (选学)揭示设计模式:创建型设计模式、结构型设计模式及行为模型设计模设式简介
9.24.1  创建型设计模式
9.24.2  结构型设计模式
9.24.3  行为型设计模式
9.24.4  结束语
9.24.5  Internet和WWW资源
第10章  字符串和字符
10.1  简介
10.2  字符和字符串的基础知识
10.3  String类的构造函数
10.4  String类的length、charAt和getChars方法
10.5  字符串比较
10.6  String类的hashCode方法
10.7  在字符串中查找字符和子串
10.8  从字符串中抽取子串
10.9  字符串连接
10.10  String类的其他方法
10.11  String类的valueOf方法
10.12  String类的intern方法
10.13  StringBuffer类
10.14  StringBuffer类的构造函数
10.15  StringBuffer类的length、capacity、Length和esureCapacity方法
10.16  StringBuffer类的charAt、setCharAt、getChars和reverse方法
10.17  StringBuffer类的append方法
10.18  StringBuffer类的插入和删除方法
10.19  Character类示例
10.20  StringTokenizer类
10.21  洗牌和发牌模拟
10.22 (可选实例研究)关于对象的思考:事件处理
第11章  图形和Java2D
11.1  简介
11.2  图形环境和图形对象
11.3  颜色控制
11.4  字体控制
11.5  画线条、矩形和椭圆
11.6  画弧形
11.7  画多边形和折线
11.8  Java2D API
11.9  Java2D图形
11.10  (可选实例研究)关于对象的思考:用UML设计接口
第12章  图形用户界面组件(第1部分)
12.1  简介
12.2  Swing概况
12.3  JLabel
12.4  事件处理模式
12.5  JTextField和JPasswordField
12.6  JButton
12.7  JCheckBox和JRadioButton
12.8  JComboBox
12.9  JList
12.10  多选列表
12.11  鼠标事件处理
12.12  适配器类
12.13  键盘事件处理
12.14  布局管理器
12.14.1  FlowLayout
12.14.2  BorderLayout
12.14.3  GridLayout
12.15  面板
12.16 (可选实例研究)关于对象的思考:用例
第13章  图形用户界面组件(第2部分)
13.1  简介
13.2  JTextArea
13.3  创建定制的JPanel子类
13.4  创建自包含的JPanel子类
13.5  JSlider
13.6  窗口
13.7  设计既能作为applet又能作为应用程序运行的程序
13.8  通过框架来使用菜单
13.9  使用JPopupMenu
13.10  插入式外观和风格
13.11  使用JDesktopPane和JInternalFrame
13.12  布局管理器
13.13  BoxLayout布局管理器
13.14  CardLayout布局管理器
13.15  GridBagLayout布局管理器
13.16  GridBagConstraints的RELATIVE和REMAINDER常量
13.17 (可选实例研究)关于对象的思考:模型-视图-控制器
13.18 (选学)揭示设计模式:包java.awt和javax.swing所运用的设计模式
13.18.1  创建型设计模式
13.18.2  结构型设计模式
13.18.3  行为型设计模式
13.18.4  结束语
第14章  异常处理
14.1  简介
14.2  何时应用异常处理
14.3  其他的错误处理技术
14.4  Java异常处理的基本知识
14.5  try块
14.6  抛出异常
14.7  捕获异常
14.8  异常处理举例:除数为0
14.9  重新抛出异常
14.10  throws语句
14.11  构造函数、终结函数和异常处理
14.12  异常与继承
14.13  finally块
14.14  printStackTrace和getMessage的使用
第15章  多线程
15.1  简介
15.2  Thread类:Thread方法概述
15.3  线程状态:线程的生命周期
15.4  线程优先级和线程调度
15.5  线程同步
15.6  没有线程同步情况下的生产者/消费者关系
15.7  线程同步情况下的生产者/消费者关系
15.8  生产者/消费者关系:循环缓冲区
15.9  守护线程
15.10  Runnable接口
15.11  线程组
15.12 (可选实例研究)关于对象的思考:多线程
15.13 (选学)揭示设计模式:并发设计模式
第16章  文件和流
16.1  简介
16.2  数据层次结构
16.3  文件和流
16.4  创建顺序存取文件
16.5  从顺序存取文件读取数据
16.6  更新顺序存取文件
16.7  随机存取文件
16.8  创建随机存取文件
16.9  向随机存取文件随机写入数据
16.10  从随机存取文件顺序读取数据
16.11  例子:事务处理程序
16.12  File类
第17章  网络
17.1  简介
17.2  使用URI
17.3  从Web服务器上读取文件
17.4  使用流套接字建立一个简单的服务器
17.5  使用流套接字建立一个简单的客户机
17.6  通过流套接字连接实现客户机/服务器的交互
17.7  通过数据报实现无连接的客户机/服务器的交互
17.8  利用多线程服务器实现基于客户机/服务器模式的九宫游戏
17.9  安全与网络
17.10  DeitelMessager聊天服务器和客户机
17.10.1  DeitelMessagerServer与所使用的类
17.10.2  DeitelMessager客户机与所使用的类
17.11 (选学)揭示设计模式:java.io包与java.net包所使用的设计模式
17.11.1  创建型设计模式
17.11.2  结构型设计模式
17.11.3  体系结构模式
17.11.4  结束语
第18章  多媒体:图像、动画、视频和音频
18.1  简介
18.2  装载、显示和缩放图像
18.3  动画播放一组图像
18.4  通过applet参数来定制LogoAnimator
18.5  图像映像
18.6  载入和播放音频剪辑
18.7  Internet和WWW资源
第19章  数据结构
19.1  简介
19.2  自引用类
19.3  动态内存分配
19.4  链表
19.5  栈
19.6  队列
19.7  树
第20章  Java工具包和位操作
20.1  简介
20.2  Vector类和Enumeration接口
20.3  Stack类
20.4  Dictionary类
20.5  Hashtable类
20.6  Properties类
20.7  Random类
20.8  位操作和按位操作符
20.9  BitSet类
第21章  集合
21.1  简介
21.2  集合概述
21.3  Arrays类
21.4  Collection接口和Collections类
21.5  List
21.6  算法
21.6.1  sort算法
21.6.2  shuffle算法
21.6.3  reverse、fill、copy、max和min算法
21.6.4  binarySearch算法
21.7  Set
21.8  Map
21.9  同步包装类
21.10  不可修改的包装类
21.11  抽象实现
21.12 (选学)揭示设计模式:包java.until使用的设计模式
21.12.1  创建型设计模式
21.12.2  行为型设计模式
21.12.3  结束语
第22章  Java 媒体框架和Java Sound响
22.1  简介
22.2  播放媒体
22.3  格式化和存储被捕捉的媒体
22.4  RTP流
22.5  Java Sound
22.6  播放采样音频
22.7  乐器数字接口(MIDI)
22.7.1  MIDI回放
22.7.2  MIDI录音
22.7.3  MIDI合成
22.7.4  类MidiDemo
22.8  Internet和WWW资源
22.9 (可选实例研究)关于对象思考:视图中的动画和声音
附录A  Java演示
附录B  Java资源
附录C  操作符优先级表
附录D  ASCII字符集
附录E  数制系统
附录F  用javadoc创建HTML文档
附录G  电梯模拟系统事件和监听器接口
附录H  电梯模拟系统模型
附录I  电梯系统视图
附录J  在线求职与机遇
附录K  Unicode编码
参考文献

教学资源推荐
作者: John R.Hubbard
作者: 苏小红 邱景 郑贵滨 等 编著内封署名:苏小红 邱景 郑贵滨 赵玲玲 袁秀丽 张凡龙 编著
作者: H.H.Tan,T.B.D'Orazio,S.H.Or,Marian M.Y.Choy著
参考读物推荐
作者: Michael Morrison
作者: 快学习教育 编著
作者: 申屠青春主编   宋波 张鹏 汪晓明 季宙栋 左川民 编著
作者: [美]史蒂夫·霍夫曼(Steve Hoffman) 斯里纳特·佩雷拉(Srinath Perera)著