Java语言程序设计 进阶篇(原书第6版)
作者 : Y. Daniel Liang
译者 : 万波 郑海红 潘蓉 李娜 等
丛书名 : 计算机科学丛书
出版日期 : 2008-07-02
ISBN : 7-111-23482-1
定价 : 68.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 525
开本 : 16开
原书名 : Introduction to Java Programming (6th Edition)
原出版社: Prentice Hall
属性分类: 教材
包含CD :
绝版 :
图书简介

本书是Java语言的经典教材,畅销多年不衰。本书全面整合了Java 5的特性,采用“先讲基础”的教学方式,循序渐进地介绍了程序设计基础、问题解决、面向对象程序设计、图形用户界面设计、异常处理、I/O和递归等。另外,本书还全面且深入地覆盖了一些高级主题,包括数据结构、并发、网络、国际化、高级GUI、Web程序设计等。
  本书中文版由《Java语言程序设计 基础篇》与《Java语言程序设计 进阶篇》组成。基础篇对应原书的第1~19章,进阶篇对应原书的第20~36章。

  本书特点:
  基础篇介绍基础内容,进阶篇介绍高级内容,教师可以按需选择理想的教材。
  全面整合了Java 5的特性,并对全书的内容进行了修订和更新,以反映Java程序设计方面的最新技术发展。
  提供面向对象程序设计的深入论述,包含GUI程序设计的基础和扩展实例。
  提供大量实例,实例中都包括问题求解的详细步骤。
  提供大量难易程度不同的习题,在作者的网站  http://www.cs.armstrong.edu/liang/intro6e/index.html中还提供了1000多道自测题。

图书特色

图书前言

欢迎阅读本书。由于教师和学生们的意见和建议,这一版在清晰性、内容组织、表达方式、程序清单和习题等方面较以前版本有了相当大的改进。总之,第6版有一个巨大的飞跃。我们诚请读者关注、评判此书。
  版本
  本书有两个版本:
  ·基础版(包括第1~19章)
  ·完全版(包括第1~36章)
  下图给出了完全版中的内容:
  基础版介绍程序设计基础知识、问题解决、面向对象程序设计和图形用户界面程序设计。该版本适合于讲授问题解决和面向对象编程的入门课程。
  完全版涵盖基础版的所有章节。另外,它还新增了数据结构、网络、国际化,高级图形用户界面程序设计和Web 程序设计等内容。
  教学策略
  命令式程序设计和面向对象程序设计是两种重要的程序设计范型,对某些应用程序具有各自显著的优势。一些程序适合于用命令式程序设计方法开发,而另一些更适合于面向对象程序设计的方法。这两种程序设计范型都需要学生了解并有效地使用。本书对这两种程序设计范型都进行了讲解。学生将会学到在何时使用这两种程序设计范型以及如何高效使用这两种范型。
  Java教学有几种不同的策略。本书采用了基础优先的策略,首先按部就班地学习所有必需的和重要的基本概念,进而学习面向对象程序设计,然后,用面向对象的方法建立具有异常处理和其他高级特性的有意义的GUI应用程序及applet。
  我个人的经验以及我的诸多同事的经验都表明,学习基础逻辑和循环这样的基本编程技术并逐步精炼对于初学编程人员取得成功非常重要。不能以过程化程序设计方式编写代码的学生将无法学习面向对象程序设计。充分地介绍基本数据类型、控制语句、方法和数组为学生学习面向对象程序设计打下基础。
  基础优先的方法首先给出过程化解决方案,演示如何使用面向对象方法进行改进,通过这种方式加强了面向对象程序设计思想。学生可以从中学到何时使用面向对象程序设计以及如何高效使用这种方法。
  2005年前的历届SIGCSE(计算机科学教育)会议上,对象优先的方法受到鼓吹而提倡基础优先方法的呼声却很微弱。当某些对象优先的支持者们开始透露他们所遇到的挫折,并承认对象优先失败的时候,这一切才得以扭转。本书采用基础优先而后对象的方法。在充分了解基础程序设计技术之后再介绍面向对象程序设计。从研究性大学到社区学院,许多选用本书的教师都采用这种方法并取得了成功。
  程序设计不仅是语法、类或对象,而是要实际解决问题。循环、方法和数组正是解决问题的基本技术。从基本程序设计技术到面向对象程序设计存在着多种抽象层次。类仅是一种抽象层次。在软件项目的设计和实现过程中应用抽象的概念是软件开发的关键。因此,本书最重要的目标是教会学生在解决问题时使用多种层次的抽象,并且从各个层面看待问题。贯穿本书的例子和习题都以解决问题为中心,并培养开发可重用方法和类,以及使用它们创建实用程序的思想。
  学习策略
  程序设计课程与其他课程有很大的区别。在程序设计课程中,学生要从例子中学习、从实践中学习、从错误中学习。需要花费大量时间编写程序、调试程序并修改错误。
  对于刚接触程序设计的新手来说,学习Java与学习其他高级程序设计语言一样。学习程序设计的基本目的就是培养描述实际问题的程序化解决方案的关键技能,并通过条件语句、循环和方法将方案转变成程序。
  一旦掌握了使用循环、方法和数组编写程序的基本技能,就可以开始学习面向对象程序设计。学习如何使用类封装和类继承开发面向对象的软件。
  一旦理解了面向对象程序设计的思想,学习Java就变成了学习Java API。Java API为程序员搭建了使用Java开发应用程序的框架。必须使用API中的这些类和接口,并遵循它们的惯例和规则来创建应用程序。学习Java API的最好办法是模仿例子并进行练习。下图强调了本书涉及的API。
  本版的新内容
  本书在第5版的基础上进行了大量改进。主要的改变如下:
  ·书中所有Java代码采用语法着色标出关键字、字面常量和注释,增强了代码的可读性和可理解性。
  ·本版全面整合了Java 5的特性。(注:第5版只是在部分可选章节中给出了Java 5的特性。)
  ·本书对各个细节都进行了全面修订,以增强清晰性、内容、表述和练习。同时,缩短并修订了所有的代码示例和程序清单,使其对学生更具有吸引力。
  ·第2篇的第7~10章最后增添了图形用户界面可选章节,而对GUI程序设计的完整介绍在第3篇中给出,图形用户界面组件是展示面向对象程序设计思想的极好示例。可选的GUI章节可用作面向对象程序设计的附加例子。
  ·从第2章开始,学生就能够编写简单的富有趣味的图形界面游戏程序。
  ·第2章讲解了使用JOptionPane和Scanner类接受输入的方法,学生可以使用它们获得输入。
  ·有关递归的讨论扩展为全新的第19章,本章可以在第5章之后讲解。
  ·在第8章与字符串一起讲解了使用Scanner和PrintWriter类实现高级文本输入/输出的内容,而二进制输入/输出在第18章中专门讲解。
  ·数组列表ArrayList在第9章前面部分讲解。
  ·第2篇增加了新的练习题,旨在达到以下三个目标:(1)设计并画出类的UML图;(2)通过UML图实现类;(3)使用类开发应用程序。
  ·详尽的补充材料(如:安装并配置JDK、IDE指南、设计模式、快速图形用户界面开发、数据库设计、SQL)使教师可以定制教学内容。
  ·第1篇扩展成6章,以强调问题解决和基本程序设计技术,并配有许多新的图解和实践例子(如数学讲座)。新的组织方式加强了对基本问题解决技巧的讲解。
  ·第2篇扩展成5章,详尽地介绍了OOP以及如何用它进行程序设计。新的组织方式改进了面向对象程序设计的讲述,使得GUI程序设计可以较早地讨论。
  ·第3篇扩展成5章,介绍GUI程序设计、绘图、事件驱动程序设计、创建用户界面以及applet。
  ·第4篇增加了新的一章“递归”。新颖简单的示例用于讲述异常处理的概念。由于文本输入输出的内容已经放到了第8章,本篇中的输入/输出只讲解二进制输入/输出。
  ·第5篇扩展成数据结构设计与实现(数组链表、链表、栈、队列、堆、优先队列和二叉树)、范型、Java集合架构、算法效率与排序等内容。
  ·第6篇进行了更新以覆盖Java 5的线程池、锁和信号量。
  ·第7篇扩展成5章,通过简洁新颖的例子讲解复杂主题。例如,设计一个新例子演示如何开发源组件。同时,MVC架构与Swing模型一起进行讲解。
  ·第8篇扩展成5章。有关高级数据库程序设计的内容作为一个独立章节可以被跳过。同时,给出了几个新颖的例子来讲解JSP。
  教学特点
  本书的写作风格是通过例子教学、通过实践学习。通过例子解释基本功能,学生可以通过实践来学习。本书采用下列要素组织素材:
  ·学习目标列出了学生学习本章应该掌握的内容,有助于他们学完各章后判断自己是否达到了目标。
  ·引言由简洁的概要开场,讨论在本章中将学到什么。
  ·程序清单用于讲解程序设计概念,语法着色机制使代码更容易理解。
  ·本章小节复习学生应该理解和掌握的重要主题。有助于巩固该章所学的关键概念。
  ·可选章节讨论一些并非必要但很有价值的内容。教师可以根据情况选讲、跳过此节或以后讲解。
  ·复习题按节组织,帮助学生回顾学习过程,评估学习状况。
  ·编程练习按节组织,给学生提供独立应用所学技能的机会。练习题难度分为容易(没有星号)、一般(*)、较难(**)、挑战(***)四个级别。学习程序设计的窍门就是实践、实践、再实践。所以,本书提供了大量的编程练习题。
  ·交互式自测可以在网络上测试对本书知识的掌握程度。本书网站有交互式自测栏目,提供了1000多道多项选择题,按章节内容组织。
  ·注、提示和警告贯穿全书,对程序开发的重要方面提供有价值的建议和深刻的认识。
  注  提供主题的附加信息,巩固重要概念。
  提示  讲解优秀的程序设计风格和编程实践。
  警告  帮助学生避开程序设计的误区,少犯错误。
  灵活的章节顺序
  本书提供灵活的章节顺序,使学生可以较早地涉及GUI、异常处理、范型和Java集合架构。三类常见的可选顺序如下:
  第16章之后的许多章节均可按任意次序讲解。下图显示了各章之间的依赖关系。
  注  后面一些可选例子和练习可能依赖前面的章节。这种情况下,可以忽略这些例子和练习。例如,第17章有个例子涉及到第15章图形用户界面组件的内容,如果没学第15章,就可以跳过这部分内容。
  Java开发工具
可以使用文本编辑器创建Java程序,例如Windows的记事本(Notepad)或写字板(Wordpad)等,并从命令窗口编译、运行程序。也可以使用Java开发工具,如TextPad、JBuilder、NetBeans或者Eclipse等。这些工具支持快速开发Java应用程序的集成开发环境。编辑、编译、构建运行和调试程序都集成在一个图形用户界面中。有效地使用这些工具可以极大地提高编写程序的效率。TextPad是一个基本的集成开发环境(IDE)工具。JBuilder、NetBeans和Eclipse更加复杂,如果遵照指南,可以更容易地使用这些工具。关于TextPad、JBuilder、NetBeans和Eclipse的使用指南参见本书网站中的补充材料。
  本书配套网站
  本书配套网站(www.prenhall.com/liang)为教师和学生提供的资源如下:
  ·复习题答案。
  ·编程练习题解答。
  ·本书程序清单中的源代码。
  ·相关软件及网络资源的链接。
  ·在线试卷生成器 教师可以使用该栏目生成试卷并组织学生在线测试,测试结果会通过Email反馈给教师。本测试可以在封闭实验室或家中进行。题目可以按10、15或20道一组编排,每套题目可以随机生成。访问www.prenhall.com/liang网站就可以使用在线试卷生成器。
  补充材料
  本书的正文讲解核心主题。补充材料是正文的延伸,介绍读者感兴趣的一些问题。本书的网站上可以访问的补充材料如下表所示。
  教师资源中心
  教师资源中心的网站为www.prenhall.com/liang,包含下列资源:
  ·2000多页Microsoft PowerPoint教学幻灯片。文本与图解的使用使课堂教学更加生动。本幻灯片具有全色画面、高亮语法源代码标注、无需离开幻灯片就可以执行程序以及使用动画跟踪程序执行的特色。
  测试题。一般情况下,每个测验包含四部分:
  1. 多项选择题或简答题(这些题大多数与本书网站上的自测题不同)
  2. 程序改错
  3. 跟踪程序
  4. 编写程序
  ·有练习题解答(仅供教师使用)。学生可以获得所有偶数号题目的答案。
  ·所有UML练习题的UML图解答(仅供教师使用)。学生可以获得所有偶数号题目的答案。
  ·TestGen题库,包含2000多道编程练习题。
  ·在线测验(每章之后均可进行在线测验,测验结果反馈给任课教师)。
  ·十次模拟测试,由多项选择题或简答题构成。检验学生如何纠正程序错误、测试程序以及编写程序。
  ·在线作业与测评。GOAL(Gradiance Online Accelerated Learning)是一套设计精良的在线作业工具,可以购买后与教材同步使用。基于“源问题”的多项选择题和富有挑战性的程序设计实验室可以节省教师布置作业的时间,并及时向学生发送有意义的反馈。所有代码均经过真实数据测试。
  致谢
  我要感谢Ray Greenlaw和阿姆斯特朗亚特兰大州立大学的同事们,他们使我能够讲授我所写的内容,并支持我将所教的写出来。教学是继续改进本书的灵感之源。感谢提出批评、建议、鼓励和纠错报告的教师和学生。
  本书得到如此大的改进,要感谢杰出的编辑们。以前各版的编辑是:
  本版的编辑是:
  能够与Prentice Hall出版社一起工作,我感到非常愉快和荣幸。我要感谢Marcia Horton, Tracy Dunkelberger, Robin O誃rien, Christianna Lee, Jennifer Cappello, Vince O誃rien, Camille Trentacoste, Craig Little, Xiaohong Zhu, 和他们的同事,感谢他们组织、开展和积极促进本项目,同时感谢Robert Milch的编辑工作。
  一如既往,感谢我的妻子Samantha奉献的爱心、支持和鼓励。
  Y. Daniel Liang
  liang@armstrong.edu
  www.cs.armstrong.edu/liang/intro6e.html

译者简介

万波 郑海红 潘蓉 李娜 等:暂无简介

译者序

经过数月的辛勤工作之后,整本书终于翻译完毕。即将付稿之际,颇有几点感触。
  近些年来,计算机产业的迅猛发展,使得社会对专业人才的需求日益迫切,应运而生出版了大量关于程序设计的书籍,其中大部分书籍着眼于如何编写代码。很多程序员因此陷入误区,认为有了代码,似乎就有了一切。导致我国现有的软件设计人员较少,高水平的设计人员更是凤毛麟角。
  本书的编排与设计克服了以上缺点,不仅涵盖的内容全面,从计算机基础知识一直讲到Java的GUI、输入输出、异常处理、多线程、集合架构、数据库程序设计和Web程序设计,而且从始至终都渗透着程序设计的思想,引导读者从宏观上把握程序设计。另外,本书对前一版又进行了精简与修正,略去了一些过时的知识或不常用的函数,调整了内容的先后次序,更重要的是补充了许多新的内容,使新版对最新技术的介绍更为及时。
  整本书脉络清晰、可读性很强,便于查阅,既适合作为初学者的入门读物,也适合教师和专业人员参考。译者对本书的特色之处总结如下:
  (1)特意标出的可选章节可以帮助读者明确其内容是为进一步深入和提高而写。另外,第4篇之后的各章相对比较独立,学习的先后顺序并不是特别重要。因此,读者可以自由选择感兴趣的章节进行学习,增强了学习的目的性。
  (2)每章之前的学习目标使读者清晰地了解该章内容及最终的学习效果。每章末尾的“主要术语”、“本章小结”对该章的主要内容作了回顾,非常便于读者复习和查阅。大量的复习题和编程练习使读者能够在学习完该章内容之后,方便地检测学习效果,并且编程练习还以星号区分题目的难易程度,有助于读者明确自己掌握该章内容的程度。
  (3)书中的各个章节都对概念进行详细阐述,并提供大量完整的程序示例及细致的示例说明来翔实地阐述程序设计的思想和方法,以及具体的应用范围。
  (4)书中的“提示”、“警告”、“注”和详细的图表说明对读者深刻理解本书内容、提炼重点、避免陷入误区具有重要作用。
  参加本书翻译工作的人员有万波、潘蓉、郑海红、李娜等同志。衷心感谢机械工业出版社华章分社的编辑所做的大量细致的工作。由于时间仓促,译者水平有限,译文中难免还存在不少欠妥和纰漏之处,恳请广大读者不吝赐教和指正。
  译  者
  2007年12月

图书目录

出版者的话
译者序
前言
第1篇  程序设计基础
第1章  计算机、程序和Java概述 2
1.1  引言 2
1.2  什么是计算机 2
1.2.1  中央处理器 3
1.2.2  内存 3
1.2.3  存储设备 3
1.2.4  输入输出设备 4
1.2.5  通信设备 5
1.3  程序 5
1.4  操作系统 6
1.4.1  控制和监视系统的活动 7
1.4.2  分配系统资源 7
1.4.3  安排操作的顺序 7
1.5  数系(可选) 7
1.5.1  二进制数与十进制数的转换 8
1.5.2  十六进制数与十进制数的转换 8
1.5.3  二进制数与十六进制数的转换 9
1.6  Java、万维网及其他 10
1.7  Java语言规范、API、JDK和IDE 12
1.8  一个简单的Java程序 12
1.9  创建、编译和运行Java程序 13
1.10  Java程序剖析 15
1.10.1  注释 15
1.10.2  保留字 15
1.10.3  修饰符 15
1.10.4  语句 16
1.10.5  块 16
1.10.6  类 16
1.10.7  方法 16
1.10.8  main方法 16
1.11  用消息对话框显示文本信息 16
第2章  基本数据类型和基本操作 21
2.1  引言 21
2.2  编写简单的程序 21
2.3  标识符 23
2.4  变量 24
2.5  赋值语句和赋值表达式 24
2.6  常量 25
2.7  数值数据类型及其运算 26
2.7.1  算术运算符 27
2.7.2  数值直接量 28
2.7.3  算术表达式 29
2.7.4  简捷赋值运算符 29
2.8  数值类型转换 31
2.9  字符数据类型及其运算 32
2.9.1  统一码和ASCⅡ码 32
2.9.2  特殊字符的转义序列表示 33
2.9.3  字符型char数据与数值型
数据之间的转换 33
2.10  字符串类型String 34
2.11  从输入对话框获取输入 35
2.12  实例学习 36
2.12.1  举例:计算贷款支付额 36
2.12.2  举例:整钱兑零 38
2.12.3  举例:显示当前时间 40
2.13  从控制台获取输入 41
2.14  编程风格和文档 43
2.14.1  适当的注释和注释风格 44
2.14.2  命名习惯 44
2.14.3  适当的缩进和空白 44
2.14.4  块的对齐方式 44
2.15  编程错误 45
2.15.1  语法错误 45
2.15.2  运行错误 45
2.15.3  逻辑错误 46
2.16  调试 46
第3章  条件语句 53
3.1  引言 53
3.2  boolean数据类型及其运算 53
3.2.1  条件和无条件布尔运算符 55
3.2.2  举例:决定闰年 56
3.2.3  举例:简单的算术学习工具 56
3.3  if语句 57
3.3.1  简单if语句 57
3.3.2  if...else语句 59
3.3.3  if语句的嵌套 60
3.3.4  举例:税款计算问题 61
3.3.5  举例:改进的算术学习工具 63
3.4  switch语句 64
3.5  条件表达式 66
3.6  格式化控制台输出与字符串 66
3.7  运算符的优先级和结合方向 68
3.8  运算对象的计算顺序 69
第4章  循环 75
4.1  引言 75
4.2  while循环 75
4.2.1  举例:高级算术学习工具 76
4.2.2  使用确认对话框控制循环 77
4.2.3  使用标志值控制循环 78
4.3  do-while循环 79
4.4  for循环 80
4.5  采用哪种循环 81
4.6  嵌套循环 82
4.7  最小化数值误差 83
4.8  实例学习 84
4.8.1  举例:求最大公约数 84
4.8.2  举例:计算销售额 86
4.8.3  举例:显示数字构成的金字塔 88
4.9  关键字break和continue 89
4.9.1  语句标号以及利用标号
中止循环(可选) 91
4.9.2  举例:显示素数(可选) 91
第5章  方法 101
5.1  引言 101
5.2  创建方法 101
5.3  调用方法 102
5.4  void方法举例 104
5.5  参数的值传递 105
5.6  重载方法 107
5.7  实例学习:使用方法计算税款 108
5.8  变量的作用域 110
5.9  数学类Math 111
5.9.1  三角函数方法 111
5.9.2  指数函数方法 111
5.9.3  取整方法 112
5.9.4  min、max和abs方法 112
5.9.5  random方法 113
5.10  实例学习:生成随机字符 113
5.11  方法抽象和逐步求精 115
5.11.1  自顶向下的设计 115
5.11.2  自顶向下和自底向上的实现 117
5.11.3  实现细节 118
5.12  包(可选) 121
5.12.1 包的命名习惯 121
5.12.2  包的目录 121
5.12.3  在包中添加类 122
5.12.4  使用包中的类 123
第6章  数组 132
6.1 引言 132
6.2 数组基本知识 132
6.2.1 声明数组变量 132
6.2.2 创建数组 133
6.2.3 数组的大小和默认值 133
6.2.4 数组下标变量 134
6.2.5 数组初始化 134
6.2.6 处理数组 134
6.2.7 foreach循环 135
6.2.8 举例:测试数组 136
6.2.9 举例:划分成绩等级 137
6.3 数组的复制 138
6.4 给方法传递数组参数 139
6.5 从方法中返回数组 142
6.6 变长参数列表(可选) 144
6.7 数组的查找 145
6.7.1 线性查找法 145
6.7.2 二分查找法 146
6.8 数组的排序 147
6.8.1 选择排序 147
6.8.2 插入排序(可选) 149
6.9 Arrays类 150
6.10 二维数组 151
6.10.1 声明二维数组变量和创建
二维数组 151
6.10.2 求二维数组的长度 152
6.10.3 锯齿数组 153
6.10.4 处理二维数组 153
6.10.5 举例:多选题评分 154
6.10.6 举例:计算税款(可选) 156
6.11 多维数组(可选) 157
第2篇 面向对象程序设计
第7章 对象和类 168
7.1 引言 168
7.2 定义对象的类 168
7.3 构造方法 170
7.4 通过引用变量来访问对象 170
7.4.1 引用变量和引用类型 170
7.4.2 访问对象的数据和方法 171
7.4.3 举例:声明类并创建对象 171
7.4.4 数据域引用和空值null 174
7.4.5 基本数据类型变量和引用类型
变量的区别 174
7.5 使用Java类库中的类 175
7.5.1 Date类 175
7.5.2 Random类 176
7.6 静态变量、常量和静态方法 176
7.7 可见性修饰符 180
7.8 数据域封装 181
7.9 不可变对象和类 183
7.10 给方法传递对象参数 184
7.11 变量的作用域 185
7.12 关键字this 186
7.13 对象数组 187
7.14 类的抽象和封装 189
7.15 实例学习:贷款类Loan 189
7.16 实例学习:课程类Course 193
7.17 实例学习:整数栈类
StackOfIntegers(可选) 194
7.18 创建窗口(可选 GUI) 196
第8章 字符串和文本I/O 206
8.1 引言 206
8.2 字符串类String 206
8.2.1 构造一个字符串 206
8.2.2 不可变字符串与限定字符串 207
8.2.3 字符串的比较 208
8.2.4 字符串长度以及提取单个字符 209
8.2.5 字符串的连接 210
8.2.6 提取子串 210
8.2.7 字符串的转换 210
8.2.8 获取字符串中的一个字符或子串 211
8.2.9 字符串与数组之间的转换 211
8.2.10 将字符值和数值转换成字符串 212
8.2.11 举例:检测回文串 212
8.3 字符类Character 213
8.4 StringBuilder/StringBuffer类 215
8.4.1 修改缓冲区中的字符串 216
8.4.2 toString、capacity、length、
setLength和charAt方法 217
8.4.3 举例:忽略既非字母又非数字
的字符,判断回文串 217
8.5 命令行参数 219
8.5.1 向main方法传递字符串 219
8.5.2 举例:处理命令行参数 220
8.6 正则表达式(可选) 221
8.6.1 字符串匹配 221
8.6.2 正则表达式语法 221
8.6.3 字符串的替换和分解 223
8.7 文件类File 224
8.8 文本I/O 226
8.8.1 使用PrintWriter写数据 226
8.8.2 使用Scanner读数据 227
8.8.3 举例:替换文本 228
8.9 容器和布局管理器(可选GUI) 229
第9章 继承和多态 239
9.1 引言 239
9.2 父类和子类 239
9.3 使用关键字super 243
9.3.1 调用父类的构造方法 244
9.3.2 构造方法链 244
9.3.3 调用父类的方法 245
9.4 方法覆盖 245
9.5 覆盖和重载 246
9.6 对象类Object和它的toString()方法 246
9.7 多态性、动态绑定和一般程序设计 247
9.8 对象转换和instanceof运算符 248
9.9 数组线性表ArrayList类 251
9.10 自定义栈类 253
9.11 protected数据和方法 254
9.12 final类、方法和变量 255
9.13 对象类Object中的方法(可选) 256
9.13.1 equals方法 256
9.13.2 hashCode方法 257
9.13.3 finalize方法 257
9.13.4 clone方法 258
9.13.5 getClass方法 258
9.14 数据域和静态方法的隐藏(可选) 259
9.15 初始化模块(可选) 260
9.16 GUI组件的继承(可选 GUI) 262
第10章 抽象类和接口 271
10.1 引言 271
10.2 抽象类 271
10.3 日历类Calendar和公历类
GregorianCalendar 275
10.4 接口 276
10.4.1 声明类以实现Comparable接口 277
10.4.2 接口与抽象类 278
10.4.3 创建自定义接口 280
10.4.4 可克隆接口Cloneable(可选) 281
10.5 将基本数据类型值处理为对象 283
10.5.1 数值包装类的构造方法 284
10.5.2 数值包装类的常量 285
10.5.3 转换方法 285
10.5.4 静态方法valueOf 285
10.5.5 将字符串转换为数值的方法 285
10.5.6 BigInteger和BigDecimal
类(可选) 286
10.5.7 举例:对一个对象数组排序 286
10.6 基本类型和包装类之间的自动转换 288
10.7 处理GUI事件(可选GUI) 288
第11章 面向对象设计 295
11.1 引言 295
11.2 软件开发过程 295
11.3 分析类之间的关系 296
11.3.1 关联 296
11.3.2 聚集和组合 297
11.3.3 依赖 298
11.3.4 继承 298
11.4 实例学习:面向对象的设计 299
11.5 实例学习:有理数类Rational 304
11.6 类的设计原则 308
11.6.1 内聚性 308
11.6.2 一致性 308
11.6.3 封装性 308
11.6.4 清晰性 308
11.6.5 完整性 309
11.6.6 实例Instance和静态修饰符Static 309
11.6.7 继承和聚集 310
11.6.8 接口和抽象类 310
11.7 用顺序图和状态图模拟动态
行为(可选) 310
11.7.1 顺序图 310
11.7.2 状态图 311
11.8 使用Java API在架构基础上编程 311
第3篇  图形用户界面程序设计
第12章 图形用户界面程序设计入门 316
12.1 引言 316
12.2 GUI组件 316
12.3 Java GUI API 317
12.3.1 Swing GUI组件 318
12.3.2 容器类 319
12.3.3 GUI辅助类 319
12.4 框架 319
12.4.1 创建框架 319
12.4.2 在框架中添加组件 320
12.5 布局管理器 321
12.5.1 FlowLayout 322
12.5.2 GridLayout 323
12.5.3 BorderLayout 325
12.5.4 布局管理器的属性 326
12.5.5 validate和doLayout
方法(可选) 326
12.6 Color类 327
12.7 Font类 327
12.8 使用面板作子容器 328
12.9 Swing GUI组件的一般特性 329
12.10 图像图标 331
第13章 图形 338
13.1 引言 338
13.2 图形坐标系 338
13.3 Graphics类 339
13.4 paintComponent方法 340
13.5 在面板上绘图 342
13.6 绘制字符串、直线、矩形和椭圆 343
13.7 实例学习:FigurePanel类 344
13.8 绘制弧形 347
13.9 Polygon类以及绘制多边形和折线段 348
13.10 利用FontMetrics类居中显示 350
13.11 实例学习:MessagePanel类 352
13.12 实例学习:StillClock类(可选) 356
13.13 显示图像(可选) 359
13.14 实例学习:ImageViewer类(可选) 361
第14章 事件驱动程序设计 369
14.1 引言 369
14.2 事件和事件源 370
14.3 事件的监听、注册和处理 370
14.3.1 内部类监听器 373
14.3.2 匿名内部类监听器 375
14.3.3 举例:处理简单行为的事件 376
14.3.4 举例:处理窗口事件 377
14.3.5 监听器接口适配器 379
14.4 鼠标事件 380
14.5 键盘事件 382
14.6 使用Timer类的动画(可选) 384
第15章 创建图形用户界面 391
15.1 引言 391
15.2 按钮 391
15.2.1 图标、按下图标和翻转图标 392
15.2.2 对齐方式 393
15.2.3 文本位置 394
15.2.4 举例:使用按钮 394
15.3 复选框 396
15.4 单选按钮 399
15.5 标签 401
15.6 文本域 402
15.7 文本区域 404
15.8 组合框 407
15.9 列表框 410
15.10 滚动条 413
15.11 滑动块 415
15.12 创建多个窗口 417
第16章 applet和多媒体 428
16.1 引言 428
16.2 Applet类 428
16.2.1 init方法 429
16.2.2 start方法 430
16.2.3 stop方法 430
16.2.4 destroy方法 430
16.3 JApplet类 430
16.4 HTML文件和applet标记 431
16.4.1 使用applet浏览工具浏览applet 432
16.4.2 在Web浏览器中浏览applet 432
16.4.3 举例:贷款applet 433
16.5 让applet像应用程序一样运行 436
16.6 向applet传递字符串参数 437
16.7 实例学习:三子棋游戏(可选) 440
16.8 实例学习:跳动的小球(可选) 444
16.9 使用URL类定位资源(可选) 447
16.10 播放音频(可选) 448
16.11 实例学习:多媒体动画(可选) 449
16.12 Java工程的打包和发行(可选) 452
16.12.1 清单文件Manifest 452
16.12.2 运行存档项目 452
第4篇  异常处理、I/O和递归
第17章 异常和断言 462
17.1 引言 462
17.2 异常处理概述 462
17.3 异常和异常类型 464
17.4 理解异常处理 466
17.4.1 声明异常 466
17.4.2 抛出异常 466
17.4.3 捕获异常 467
17.4.4 从异常获取信息 468
17.4.5 举例:声明、抛出和捕获异常 470
17.5 finally子句 472
17.6 何时使用异常 473
17.7 重新抛出异常 473
17.8 链式异常(可选) 473
17.9 创建自定义异常类(可选) 474
17.10 断言(可选) 475
17.10.1 声明断言 475
17.10.2 运行带断言的程序 476
17.10.3 使用异常处理或断言 476
第18章 二进制I/O 485
18.1 引言 485
18.2 在Java中如何处理输入输出 485
18.3 文本I/O与二进制I/O 486
18.4 二进制I/O类 487
18.4.1 FileInputStream类和FileOutputStream类 488
18.4.2 FilterInputStream类和FilterOutputStream类 490
18.4.3 DataInputStream类和DataOutputStream类 490
18.4.4 BufferedInputStream类和BufferedOutputStream类 492
18.5 实例学习:文件复制 493
18.6 对象输入输出 495
18.6.1 可序列化接口Serializable 497
18.6.2 序列化数组 497
18.7 随机读写文件(可选) 498
18.8 实例学习:地址簿(可选) 501
第19章 递归 511
19.1 引言 511
19.2 举例:阶乘 511
19.3 举例:斐波那契数 513
19.4 使用递归解决问题 515
19.5 递归辅助方法 516
19.5.1 选择排序 516
19.5.2 二分查找 517
19.6 汉诺塔问题 517
19.7 分形 520
19.8 递归与迭代 522
附录A Java关键字 528
附录B ASCII码字符集 529
附录C 运算符优先级表 530
附录D Java修饰符 531
附录E 特殊浮点值 532
附录F 位运算符 533

教学资源推荐
作者: (美)Kenneth C.Louden
作者: 雷大正 王啸楠 丁德成 等编著  岳丽华 主审
作者: (美)Steven S.Muchnick
作者: Brian W.Kernighan,Rob Pike
参考读物推荐
作者: [美] 比尔·瓦格纳(Bill Wagner) 著
作者: 黄永祥 编著
作者: (美)Joshua Bloch