Java语言程序设计 基础篇(原书第5版)
作者 : Y.Daniel Liang
译者 : 王镁 新夫 李娜 等
丛书名 : 计算机科学丛书
出版日期 : 2006-08-20
ISBN : 7-111-19059-9
定价 : 58.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 500
开本 : 16开
原书名 : Introduction to Java Programming,Comprehensive Version,Fifth Edition
原出版社: Prentice Hall
属性分类: 教材
包含CD :
绝版 :
图书简介

本书是Java语言的经典教材,畅销多年不衰。本书以J2SE 5.0版本为基础,采用“先讲基础”的教学方式,循序渐进地介绍了程序设计基础、面向对象的程序设计、图形用户界面设计、异常处理和输入/输出等。另外,本书还全面且深入地覆盖了一些高级主题,包括GUI应用程序、applet、数据结构、多线程、JavaBeans、高级GUI、数据库、JSP、分布式计算等。
  本书中文版由《Java语言程序设计 基础篇》与《Java语言程序设计 进阶篇》组成。基础篇对应原书的第1~16章,进阶篇对应原书的第17~29章和附录。

本书的主要特点
  ●基础篇介绍基础内容,进阶篇介绍高级内容,教师能够按需选择理想的教材。
  ●包括面向对象程序设计的深入论述,包含GUI程序设计的基础和扩展实例。
  ●提供大量实例,实例中都包括问题求解的详细步骤,可激发学习兴趣。
  ●覆盖Java程序设计的众多高级主题。涉及Level I Java认证考试所需的全部主题。
  ●提供大量难易程度不同的习题,在作者的网站   (http://www.cs.armstrong.edu/liang/intro5e.html)中还提供了1000多道自测题。

图书特色

图书前言

在过去的七年中,《Introduction to Java Programming》已经出版到第5版。在清晰性、内容组织、表述方式、例子设计和习题选取等方面,每个新版都比前一版本有实质性的改进。这要感谢老师和同学们的批评与建议。第5版有一个巨大的飞跃。我诚请你关注、评判本书,我会不断地改进它。请你一如既往地继续提出批评和建议。
  版本
  《Introduction to Java Programming》有完全版与核心版两个版本。可以根据学生的情况选择。完全版有29章,核心版有16章。本书是完全版,下面讲解的情况符合两个版本。
  讲授方式
  讲授Java有三种比较普遍的做法。第一种讲法是先讲图形用户界面(GUI),将Java applet和图形程序设计与面向对象程序设计的概念混合讲授。第二种讲法是先讲对象,一开始就介绍面向对象程序设计(OOP)。第三种讲法是先讲基础,是一种循序渐进的讲授方式,首先对程序设计的概念、控制语句、方法和数组打下坚实的基础,然后介绍面向对象程序设计,再讲授图形用户界面、applet,最后讲授异常处理、简单I/O和其他高级课题。
  先讲图形用户界面的做法从GUI和applet开始,似乎比较有吸引力,但是这需要具备牢固的面向对象程序设计方面的知识,并要求对Java事件处理模式有很好的理解。所以,学生可能不太容易完全接受。先讲对象的做法,其出发点是由于Java是一种面向对象的程序设计语言,应该首先介绍对象。但是,这种想法忽略了编程基本技术的重要性,这种基本技术是使用任何程序设计语言编写程序都需要的。此外,在学生完全理解类和对象并使用它们开发应用程序之前,这种做法势必混淆静态变量与实例变量、静态方法与实例方法的概念。在学习Java的开始阶段,由于必须同时掌握面向对象程序设计和程序设计的基本法则,学生会感到压力比较大。这是一年级学生不能成功学习面向对象程序设计的普遍原因。
  从本人经验以及很多同事的成功经验来看,对很多一年级学生来说,学习逻辑基础和基本程序设计技巧是一项艰苦的工作。在面向过程程序设计中没有学好编码的学生很难学好面向对象程序设计。应该充分地介绍基本数据类型、控制语句、方法和数组,为学习面向对象程序设计作好准备。因此,本书采用先讲基础的做法,首先按部就班地学习所有必备的和重要的基本概念,进而学习面向对象程序设计,然后用面向对象的思想建立具有异常处理、简单I/O和其他高级功能相关的GUI应用程序和applet。这种方法的好处是,首先讲解了面向过程的方法,然后演示面向对象方法的优越性,学生可以从中学到何时以及如何高效应用面向对象方法。
  本书不仅介绍如何编写程序,而且讲授如何利用程序解决实际问题。在软件项目的设计和实现中应用抽象的概念,是软件开发的关键。因此,本书的最高目标是教会学生在解决问题时使用多种层次的抽象,既能从宏观又能从微观看待问题。贯穿本书的例子和习题都以开发可复用组件并使用它们创建实用程序为中心。
  学习策略
  程序设计课程与其他课程有很大的不同。在程序设计课程中,学生要从例子中学习、从实践中学习、从错误中学习,需要花费大量的时间编写程序、调试程序和修改错误。
  对于刚接触程序的新手来说,学习Java与学习其他高级语言一样。学习程序设计的基本目的就是培养从实际问题到程序算法的分析技能,并学会利用选择语句、循环语句和方法把它们翻译成程序。
  一旦掌握了使用循环、方法和数组编写程序的基本技能,就可以开始学习面向对象程序设计,学习如何使用类的封装和类的继承开发面向对象的软件。
  如果理解了面向对象程序设计的概念,学习Java就变成了纯粹学习Java API一件事情。Java API为程序员搭建了使用Java开发应用程序的构架。创建应用程序时,必须使用API中的这些类和接口,遵循它们的习惯和规则。学习Java API的最好办法是模仿例子并进行练习。下图集中总结了本书涉及的API。
  教学特点
  本书的写作风格是通过例子教学和通过实践学习。通过例子解释基本功能,然后学生可以通过实践来学习。本书采用下列要素组织素材:
  * 学习目标:列出了学生学习本章应该掌握的内容,有助于他们学完各章后判断自己是否达到了目标。
  * 引言:由一个简洁的概要开场,讨论在本章中将会学到什么。
  * 例子:通过有代表性的例子讲解程序设计的概念,这些例子经过精心挑选,并用易于模仿学习的方式讲述。每个例子都有问题描述、解答步骤、完整的源代码、运行样例和例子说明。
  * 本章小结:复习学生应该理解和掌握的重要主题,有助于巩固该章所学的主要概念。
  * 复习题:是按节组织的,帮助学生回顾自己的学习过程,评估自己的学习状况。
  * 编程练习:是按节组织的,给学生提供独立应用技能的机会。练习题难度分为容易(没有星号)、一般(*)、较难(**)、挑战(***)四个级别。学习程序设计的窍门就是练习,练习,再练习,所以本书提供了大量的编程练习题。
  * 交互式自测试:可以在网络上测试对本书知识的掌握程度。本书网站有交互式自测试栏目(Interactive Self-Test),提供了900多道多项选择题,按章节内容组织。
  * 注、提示和警告:它们贯穿全书,对程序开发的重要方面提供有价值的建议和深刻的 认识。
  注 提供主题的附加信息,巩固重要概念。
  提示 讲解优秀的程序设计模式和编程实践。
  警告 帮助学生避开程序设计的误区,少犯错误。
  各章相对独立
  本书的各章内容相对独立,使得学生可以较早地涉及GUI、I/O或集合。第14章后的很多章都可以在学完第14章后立即开始学习。下图显示了各章之间的依赖关系。
  注 一些可选的例子和练习可能依赖前面的章节。这种情况下可以忽略这些例子和练习。例如,第25章有一个例子涉及第24章的JTable。如果没学过JTable,可以跳过这类例子和练习。
  本版的新内容
  本书改进了第4版,主要有以下改变:
  * 在改进清晰性、内容、表述、例子和练习等方面,本书对每个细节都做了全面修订。
  * 本书提供了许多新的图解,并使用小例子演示概念和技巧。在实例学习中展示较长的例子,并且进行全面的讨论和逐行细致的解释。
  * 第1篇“程序设计基础”主要集中讨论问题求解和基本程序设计方法,还附加了许多新的图解和实践性例子。本篇使用JOptionPane输入对话框接收输入。但是,还介绍了使用myInput类和JDK 1.5的Scanner类进行输入,以供选择。
  * 第2篇“面向对象程序设计”扩展成5章,详尽地介绍了OOP以及如何用它进行程序设计。新的组织方式改进了面向对象程序设计的讲述,使得学生可以较早地学习GUI程序设计。
  * 第3篇“图形用户界面程序设计”扩展成4章,介绍GUI程序设计、事件驱动程序设计、创建用户图形界面以及applet。高级GUI功能放到第7篇“高级图形用户界面程序设计”中介绍。
  * 第16章“简单输入输出”进行了全面改写。首先介绍File类,然后介绍文本I/O、二进制I/O、对象I/O和随机读写文件。采用小例子演示概念和技巧。在该章还提供了使用各种I/O类的三个实例学习。
  * 本书完全版覆盖了Java集合构架、线程、JavaBean、高级GUI组件、JDBC、Servlet、JSP、网络和RMI等。
  * 使用实际中的例子,如计算贷款支付额、计算税款和打印工资表等,取代了纯数学的例子,如计算方差和矩阵的乘法等。
  * 编程练习几乎增加了一倍,包括各种简单或复杂的问题。难度分为容易(没有星号)、一般(*)、较难(**)和挑战(***)四个级别。
  * 本书更新到JDK 1.5。
  JDK 1.5新功能的处理
  Java中已经有许多新功能是不能在入门式教程中讲述的。本版的目的不是覆盖JDK 1.5的所有新功能。然而,JDK 1.5包含一些适合初学者的功能。具体是
  * 格式化输出(System.out.printf)包含在第2章中。
  * 增强for循环包含在第5章和第18章中。
  * 类java.util.Scanner包含在第2章和补充材料T中,用于控制台输入。第7章补充了StringTokenizer类。
  * 基本数据类型值的包装类包含在第9章中。
  * 静态常量的导入包含在第11章中。
  * 一般类型包含在第18章和补充材料Q中。
  为了在基于JDK 1.4的教学中使用本书,使教师能够自由选择JDK 1.5的功能,本书中关于JDK 1.5的部分都标有JDK 1.5功能,具体使用时可以跳过。
  注 Sun MicroSystems公司最近将JDK 1.5改名为JDK 5.0。由于大多数程序员熟悉JDK 1.5,Sun公司将名称JDK 1.5与JDK 5.0混淆使用。所以本书也是如此。
  Java开发工具
  可以使用文本编辑器创建Java程序,从命令窗口编译、运行程序,文本编辑器有Windows的记事本(Notepad)或写字板(Wordpad)等。也可以使用Java开发工具,如TextPad、JBuilder、NetBeans和Eclipse等。这些工具支持用来快速开发Java应用程序的集成开发环境(integrated development environment,IDE)。编辑、编译、链接和运行程序都集成在一个图形用户界面中。有效地使用这些工具可以极大地提高编写程序的速度。TextPad是一个纯粹的集成开发环境工具,JBuilder、NetBeans和Eclipse更灵活。熟悉工具可能会花费一点时间,但是这些投入会得到长期的回报。关于TextPad、JBuilder、NetBeans和Eclipse的使用指南参见本书网站中的补充材料。
  本书网站
  本书网http://www.cs.armstrong.edu/Liang/intro5e.html,包含下列资源:
  * 交互式自测试(Interactive Self-Test)
  * 补充材料(Supplements)
  * 复习题答案(Answers to review questions)
  * 双号编程练习题解答(Solutions to even-numbered programming exercises)
  * 本书例子的源代码(Source code for the example in the book)
  * 下载JDK 1.5、JBuilder、NetBeans、Eclipse、TextPad、JCreator LE、JEdit、JGrasp、BlueJ、WinZip、MySQL和Tomcat。
  教师资源网站
  教师资源网站(Instructor Resource Website)可http://www.cs.armstrong.edu/ Liang/intro5e/intro5e instructor.html访问,包含下列资源:
  * Microsoft PowerPoint幻灯片,带有交互式按钮,可以浏览全色画面、高亮度语句的源代码,并且无需离开幻灯片就能运行程序。
  * 测验题。一般情况下,每个测验包含四部分:
  1. 多项选择题或简答题(这些题大多数与本书网站上的自测题不同)
  2. 程序改错
  3. 跟踪程序
  4. 编写程序
  * 所有编程练习的解答。学生可以从本书网站上访问偶数题号的编程练习题的解答。
  * 用Java开发的试卷生成器。 要注意,教师资源网站中的材料是只为教这门课的教师提供的,需要这些材料的教师,请填写书后的教师服务登记表并联络Pearson公司北京代表处或机械工业出版社华章分社,联系方式见书后的教师服务登记表。
  补充材料
  本书的正文讲解核心主题。补充材料是正文的一个延伸,介绍读者感兴趣的一些问题。从本书网站上可以访问下列补充材料:
  A. 安装和配置JDK1.5
  B. 从命令窗口编译和运行Java程序
  C. 从TextPad编译和运行Java程序
  D. Java编码风格指导
  E. HTML指南
  F. 术语表
  G. 第25、26、27和29章创建和初始化表使用的SQL语句
  H. JBuilder指南
  I. NetBeans指南
  J. Eclipse指南
  K. MySQL指南
  L. Oracle指南
  M. Microsoft Access指南
  N. Tomcat指南
  O. 在Windows中为Java应用程序创建快捷方式
  P. 第10章的补充实例学习:设计GenericMatrix类
  Q. 创建一般类型(JDK 1.5)
  R. 枚举类型(JDK 1.5)
  S. 信号器(JDK 1.5)
  T. 使用Scanner类从控制台获取输入(JDK 1.5)
  致谢
  我要感谢Ray Greenlaw、Chuck Shipley和Armstrong Atlantic州立大学的同事们,他们使我能够讲授我所写的内容,并支持我将所教的写出来。教学是继续改进本书的灵感之源。感谢提出批评、建议、鼓励和纠错报告的教师和学生。他们的热情支持促成我出版了Java系列教材。
  本书能够得到如此大的改进,这要感谢Tarrant郡学院的James Chegwidden,Armstrong Atlantic州立大学的Dan Lipsa,Georgia南方大学的Vladan Jovanovic,Alaska-Anchorage大学的Kenrick Mock,Wright州立大学的Ronald F. Taylor和Pace大学的Lixin Tao,感谢他们提供的杰出评论。在本书完成之前,及时收到了Arizona州立大学的Mutsumi Nakamura教授和Lian Yu教授提供的勘误表和建议,对此不胜感激。
  能够与Prentice-Hall出版社杰出的计算机科学小组一起工作,我感到非常愉快和荣幸。我要感谢Alan Apt、Toni Holm、Patrick Lindner、Sarah Parker、Camille Trentacoste、John Keegan、Xiaohong Zhu、Pamela Hersperger、Barrie Reinhold、Toni Callum、Barbara Taylor-Laino、Meredith Maresca和他们的同事,感谢他们组织、管理和积极筹划本项目,同时感谢Robert Milch的编辑工作。
  在本书出版期间,我正在亚洲。感谢台湾、马来西亚和新加坡的Pearson教育出版社热忱重要的帮助。
  一如既往,感谢我的妻子Samantha奉献的爱心、支持与鼓励。 
  Y. Daniel Liang
  liang@armstrong.edu
  www.cs.armstrong.edu/liang/intro5e.html

作者简介

Y.Daniel Liang:Y.Daniel Liang: 普度大学终身教授,阿姆斯特朗亚特兰大州立大学计算机科学系教授。他所编写的Java教程在美国大学Java课程中采用率最高,同时他还兼任Prentice Hall Java系列丛书编辑。

译者简介

王镁 新夫 李娜 等:暂无简介

译者序

本书覆盖的内容非常全面,从计算机基础知识一直讲到Java的GUI、输入输出、异常处理、多线程、集合构架、数据库程序设计和Web程序设计。但并未因内容多而显得庞杂,相反正因本书的组织极具匠心,脉络梳理得非常清晰,可读性很强,非常便于查阅。因此本书既适合作为初学者的入门读物,也适合教师和专业人员参考。
  译者认为,本书的最大特点是遵循人类的认知规律,循序渐进,容易阅读。在清晰讲述理论的基础上,通过大量贴切、翔实的例子和逐行分析,讲解语言要素的功用,辨疑释惑,充分展示程序设计技术。
  本书非常重视程序设计基础知识的讲授和基本技能的培养。第1篇介绍计算机基础知识,仔细讲解了Java的基本数据类型和分支、循环语句,这是开始程序设计的必备基础。第2篇由浅入深、详尽地讲述面向对象程序设计,让人感受到面向对象技术的朴素自然。这为读者构筑清晰的概念体系、顺利步入面向对象程序设计殿堂铺平了道路。
  内容全面而又具体,是本书的又一特点。第3篇之后分专题讲授,几乎覆盖了Java语言的各个方面,甚至包括数据结构、servlet、数据库、JSP和RMI。每一部分都没有流于形式、堆砌名词,而是在扎实地阐述概念的基础上,提供了大量范例来讲解程序设计的原理与具体应用范围。每个范例都提供了问题描述、解答步骤、完整源代码和例子说明。
  本书的另一个特点是可读性极强。贯穿全书的“提示”、“警告”、“注”和详细的图示,对帮助读者开拓视野、加深认识、获取开发经验具有重要价值。每章末尾的“主要术语”、“主要的类和方法”、“本章小结”非常便于读者复习和查阅。每章开头的“学习目标”和末尾配备的大量习题与编程练习,以及本书交互网站上的自测问题,有助于读者检验自己的掌握程度,查漏补遗。交互网站上还提供大量极有价值的其他参考资料。
  本人译过原书的第3版,感觉第5版有一个很大飞跃,堪称又上一层楼。考虑到篇幅及本书各篇所述专题侧重点不一,中文版分为《Java语言程序设计  基础篇》和《Java语言程序设计  进阶篇》。对程序设计和Java还不甚了解的读者可以学习基础篇,有一定基础并对Java程序设计的高级主题感兴趣的读者可以进一步学习进阶篇。
  新夫老师和李娜老师参与了大量的翻译工作,并且李娜老师还做了许多文字事务。张耀、董博、王志爱、鲁瑞星、邬婷婷、温俊仙、吴占春、周俊、郑旭东、亢宏毅、张智敏、李凤飞等对本书初译做了大量工作,在此表示诚挚的感谢。在译文中一定有许多不妥之处,诚望同仁能予指正。 
  王  镁
  2006年8月

图书目录

第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  通信设备 4
1.3  程序 5
1.4  操作系统 6
1.4.1  控制和监视系统的活动 6
1.4.2  分配系统资源 6
1.4.3  安排操作的顺序 7
1.5  数系(可选) 7
1.5.1  二进制数与十进制数的转换 7
1.5.2  十六进制数与十进制数的转换 8
1.5.3  二进制数与十六进制数的转换 9
1.6  Java、万维网及其他 9
1.7  Java的特点(可选) 11
1.7.1  Java是简单的 12
1.7.2  Java是面向对象的 12
1.7.3  Java是分布式的 12
1.7.4  Java是解释型的 12
1.7.5  Java是健壮的 12
1.7.6  Java是安全的 13
1.7.7  Java是结构中立的 13
1.7.8  Java是可移植的 13
1.7.9  Java的效率 13
1.7.10  Java是多线程的 13
1.7.11  Java是动态的 14
1.8  Java语言规范、API、JDK和IDE 14
1.9  一个简单的Java程序 14
1.10  创建、编译和运行Java程序 15
1.11  Java程序剖析 17
1.11.1  注释 17
1.11.2  保留字 17
1.11.3  修饰符 17
1.11.4  语句 18
1.11.5  块 18
1.11.6  类 18
1.11.7  方法 18
1.11.8  main方法 18
1.12  用消息对话框显示文本信息 18
主要术语 20
主要的类和方法 20
本章小结 20
复习题 21
编程练习 22
第2章  基本数据类型和基本操作 23
2.1  引言 23
2.2  编写简单的程序 23
2.3  标识符 25
2.4  变量 26
2.5  赋值语句和赋值表达式 26
2.6  常量 27
2.7  数值数据类型及其运算 28
2.7.1  算术运算符 28
2.7.2  数值直接量 29
2.7.3  算术表达式 30
2.7.4  简捷赋值运算符 30
2.8  数值类型转换 32
2.9  字符数据类型及其运算 32
2.9.1  统一码和ASCII码 33
2.9.2  特殊字符的转义序列表示 33
2.9.3  字符型数据与数值型数据 之间的转换 34
2.10  布尔数据类型及其运算 35
2.11  运算符的优先级和结合方向 37
2.12  运算对象的计算顺序 38
2.13  字符串类型String 39
2.14  从输入对话框获取输入 40
2.15  实例学习 42
2.16  从控制台获取输入(可选) 46
2.17  格式化输出(JDK1.5功能) 48
2.18  编程风格和文档 49
2.18.1  适当的注释和注释类型 49
2.18.2  命名习惯 49
2.18.3  适当的缩进和空白 49
2.18.4  块的对齐方式 50
2.19  程序错误 50
2.19.1  语法错误 50
2.19.2  运行错误 51
2.19.3  逻辑错误 51
2.20  调试 51
主要术语 52
主要的类和方法 52
本章小结 53
复习题 54
编程练习 57
第3章  控制语句 60
3.1  引言 60
3.2  条件语句 60
3.2.1  简单if语句 60
3.2.2  if...else语句 62
3.2.3  if语句的嵌套 63
3.2.4  switch语句 67
3.2.5  条件表达式 68
3.3  循环语句 68
3.3.1  while循环 69
3.3.2  do_while循环 71
3.3.3  for循环 71
3.3.4  循环嵌套 74
3.4  采用哪种循环 75
3.5  使用关键字break和continue 76
3.6  实例学习 78
主要术语 85
本章小结 85
复习题 86
编程练习 90
第4章  方法 95
4.1  引言 95
4.2  创建方法 95
4.3  调用方法 96
4.4  参数传递 99
4.5  重载方法 100
4.6  局部变量的作用域 104
4.7  方法抽象 104
4.8  数学类Math 105
4.8.1  三角函数方法 105
4.8.2  指数函数方法 105
4.8.3  取整方法 106
4.8.4  min、max和abs方法 106
4.8.5  random方法 107
4.9  实例学习:生成随机字符 107
4.10  逐步求精 109
4.10.1  自顶向下的设计 109
4.10.2  自顶向下和自底向上的实现 110
4.10.3  实现细节 112
4.11  递归(可选) 115
4.11.1  计算阶乘 115
4.11.2  计算斐波那契数 117
4.11.3  汉诺塔问题 119
4.11.4  递归与迭代 121
4.12  包(可选) 122
4.12.1  包的命名习惯 122
4.12.2  包的目录 122
4.12.3  在包中添加类 123
4.12.4  使用包中的类 124
主要术语 125
主要的类和方法 125
本章小结 126
复习题 126
编程练习 130
第5章  数组 135
5.1  引言 135
5.2  数组基本知识 135
5.2.1  声明数组变量 135
5.2.2  创建数组 136
5.2.3  数组的大小和默认值 136
5.2.4  数组下标变量 137
5.2.5  增强的for循环(JDK 1.5功能) 137
5.2.6  数组初始化 137
5.3  数组的复制 141
5.4  给方法传递数组参数 142
5.5  从方法中返回数组 144
5.6  数组的排序 147
5.7  数组的查找 149
5.7.1  线性查找法 149
5.7.2  二分查找法 149
5.7.3  二分法查找的递归实现(可选) 151
5.8  多维数组 151
5.8.1  声明多维数组变量和创建多维数组 151
5.8.2  求多维数组的长度 152
5.8.3  锯齿数组 153
主要术语 157
主要的类和方法 157
本章小结 157
复习题 158
编程练习 159
第2篇  面向对象程序设计
第6章  对象和类 166
6.1  引言 166
6.2  对象和类 166
6.3  使用构造方法创建对象 167
6.4  通过引用变量来访问对象 168
6.4.1  引用变量和引用类型 168
6.4.2  访问对象的数据和方法 169
6.4.3  空值null 171
6.4.4  基本数据类型变量和引用类型 变量的区别 172
6.5  使用Java类库中的类 173
6.6  可见性修饰符、访问器和修改器 174
6.7  数据域的封装 175
6.8  永久对象和类 177
6.9  给方法传递对象参数 178
6.10  静态变量、常量和静态方法 179
6.11  变量的作用域 183
6.12  关键字this 183
6.13  对象数组 184
6.14  类的抽象和封装 186
6.15  实例学习:贷款类Loan 187
6.16  实例学习:整数栈类StackOfIntegers (可选) 190
6.17  内部类 192
主要术语 193
主要的类和方法 193
本章小结 194
复习题 194
编程练习 199
第7章  字符串 204
7.1  引言 204
7.2  字符串类String 204
7.2.1  构造一个字符串 204
7.2.2  永久字符串与规范字符串 205
7.2.3  字符串长度以及提取单个字符 206
7.2.4  字符串的连接 207
7.2.5  提取子串 207
7.2.6  字符串的比较 208
7.2.7  字符串的转换 209
7.2.8  获取字符串中的一个字符或子串 209
7.2.9  字符串与数组之间的转换 210
7.2.10  将字符值和数值转换成字符串 210
7.3  字符类Character 212
7.4  字符串缓冲区类StringBuffer 214
7.4.1  构造字符串缓冲区 214
7.4.2  修改缓冲区中的字符串 215
7.4.3  toString、capacity、length、 setLength和charAt方法  215
7.5  字符串令牌类StringTokenizer 217
7.6  字符串扫描类Scanner(JDK1.5功能) 219
7.7  使用Scanner类实现MyInput 219
7.8  命令行参数 221
7.8.1  向main方法传递字符串 221
7.8.2  处理命令行参数 221
主要的类和方法 223
本章小结 223
复习题 224
编程练习 226
第8章  继承和多态 229
8.1  引言 229
8.2  父类和子类 229
8.3  使用关键字super 230
8.3.1  调用父类的构造方法 230
8.3.2  构造方法链 231
8.3.3  调用父类的方法 232
8.4  方法覆盖 232
8.5  对象类Object 233
8.5.1  equals方法 233
8.5.2  hashCode方法 234
8.5.3  toString方法 234
8.6  多态性、动态绑定和一般程序设计 234
8.7  对象类型转换和instanceof运算符 236
8.8  隐藏数据域和静态方法(可选) 238
8.9  protected数据和方法 239
8.10  final类、方法和变量 241
8.11  finalize、clone和getClass方法 (可选) 241
8.11.1  finalize方法 241
8.11.2  clone方法 242
8.11.3  getClass方法 242
8.12  初始化模块(可选) 243
主要术语 245
主要的类和方法 245
本章小结 245
复习题 246
编程练习 251
第9章  抽象类和接口 253
9.1  引言 253
9.2  抽象类 253
9.3  日历类Calendar和公历类Grego-rianCalendar 259
9.4  接口 260
9.4.1  实现接口 261
9.4.2  接口与抽象类 262
9.4.3  创建自定义接口 263
9.4.4  可克隆接口Cloneable(可选) 264
9.5  将基本数据类型值处理为对象 266
9.5.1  数值包装类的构造方法 267
9.5.2  数值包装类的常量 268
9.5.3  转换方法 268
9.5.4  静态方法valueOf 268
9.5.5  将字符串转换为数值的方法 269
9.6  基本类型和包装类之间的自动转换(JDK1.5功能) 271
主要术语 271
主要的类和方法 272
本章小结 272
复习题 273
编程练习 275
第10章  面向对象建模 277
10.1  引言 277
10.2  软件开发过程 277
10.3  分析类之间的关系 278
10.3.1  关联 278
10.3.2  聚集和包容 279
10.3.3  继承 280
10.4  实例学习:一个设计类的例子 281
10.5  实例学习:有理数类Rational 285
10.6  类的设计原则 289
10.6.1  设计一个类 289
10.6.2  使用可见性修饰符public、protected和private 290
10.6.3  使用静态修饰符static 290
10.6.4  使用继承或包容 290
10.6.5  使用接口或抽象类 291
10.7  用顺序图和状态图模拟动态行为 (可选) 291
10.7.1  顺序图 291
10.7.2  状态图 292
10.8  使用Java API在构架基础上编程 293
主要术语 293
本章小结 293
复习题 294
编程练习 295
第3篇  图形用户界面程序设计
第11章  图形用户界面程序 设计入门 298
11.1  引言 298
11.2  GUI组件 298
11.3  JavaGUIAPI 299
11.3.1  Swing GUI组件类 300
11.3.2  容器类 301
11.3.3  GUI辅助类 301
11.4  框架JFrame 301
11.4.1  创建框架 301
11.4.2  在框架中添加组件 302
11.4.3  框架居中(可选) 303
11.5  布局管理器 304
11.5.1  布局管理器FlowLayout 304
11.5.2  布局管理器GridLayout 306
11.5.3  布局管理器BorderLayout 308
11.5.4  布局管理器的属性(可选) 309
11.5.5  validate和doLayout方法 (可选) 309
11.6  颜色类Color 310
11.7  字体类Font 310
11.8  使用面板作子容器 311
11.9  在面板上绘制图形 312
11.9.1  绘制直线 314
11.9.2  绘制矩形 314
11.9.3  绘制椭圆 316
11.9.4  绘制弧形 317
11.9.5  多边形类Polygon与绘制多边形和 折线段 318
11.10  利用FontMetrics类居中显示 321
11.11  实例学习:信息面板类Message Panel 322
11.12  实例学习:静止时钟类StillClock (可选) 326
主要的类和方法 330
本章小结 330
复习题 331
编程练习 333
第12章  事件驱动程序 339
12.1  引言 339
12.2  事件和事件源 339
12.3  事件的监听、注册和处理 340
12.4  鼠标事件 348
12.5  键盘事件 352
12.6  定时器类Timer(可选) 355
主要术语 357
主要的类和方法 357
本章小结 358
复习题 358
编程练习 359
第13章  创建图形用户界面 361
13.1  引言 361
13.2  Swing GUI组件的公共特性 361
13.3  按钮 363
13.3.1  图标 363
13.3.2  对齐方式 366
13.3.3  文本位置 366
13.4  复选框 370
13.5  单选按钮 373
13.6  标签 375
13.7  文本域 375
13.8  文本区 378
13.9  组合框 381
13.10  列表框 384
13.11  滚动条 387
13.12  滑动块 390
13.13  创建多个窗口 392
主要的类和方法 395
本章小结 397
复习题 397
编程练习 398
第14章  applet、图像和音频 403
14.1  引言 403
14.2  Applet类 403
14.2.1  init方法 404
14.2.2  start方法 405
14.2.3  stop方法 405
14.2.4  destroy方法 405
14.3  JApplet类 405
14.4  HTML文件和<applet>标记 406
14.4.1  使用工具浏览applet 407
14.4.2  在Web浏览器中浏览applet 407
14.5  向applet传递字符串 410
14.6  applet作为application运行 412
14.7  实例学习:三子棋游戏(可选) 414
14.8  实例学习:跳动的小球(可选) 419
14.9  统一资源定位类URL(可选) 421
14.10  显示图像(可选) 422
14.11  实例学习:图像浏览器组件Image- Viewer 423
14.12  实例学习:图形动画(可选) 427
14.13  播放音频 429
14.14  Java工程的打包和发行(可选) 431
14.14.1  清单文件Manifest 432
14.14.2  运行存档项目 432
14.15  可拆换的外貌(可选) 433
主要的类和方法 434
本章小结 435
复习题 435
编程练习 437
第4篇  异常处理和输入输出
第15章  异常和断言 444
15.1  引言 444
15.2  异常和异常类型 444
15.2.1  异常类 445
15.2.2  必检异常和免检异常 447
15.3  理解异常处理 447
15.3.1  声明异常 447
15.3.2  抛出异常 447
15.3.3  捕获异常 448
15.4  重新抛出异常 453
15.5  finally子句 453
15.6  何时使用异常 454
15.7  创建自己的异常类(可选) 454
15.8  断言(可选) 455
15.8.1  声明断言 455
15.8.2  运行带断言的程序 456
15.8.3  使用异常处理或断言 456
主要术语 457
主要的类和方法 457
本章小结 457
复习题 458
编程练习 461
第16章  简单输入输出 463
16.1  引言 463
16.2  文件类File 463
16.3  在Java中如何处理输入输出 466
16.4  文本输入输出 467
16.4.1  FileReader类和 FileWriter类 468
16.4.2  InputStreamReader类和Output StreamWriter类(可选) 470
16.4.3  BufferedReader类和BufferedWriter类 471
16.4.4  PrintWriter类和 PrintStream类 472
16.5  实例学习:文本浏览器 473
16.6  二进制输入输出 475
16.6.1  FileInputStream类和FileOutputStream类 477
16.6.2  FilterInputStream类和FilterOutputStream类 478
16.6.3  DataInputStream类和DataOutputStream类 478
16.6.4  BufferedInputStream类和BufferedOutputStream类 480
16.7  实例学习:文件复制 481
16.8  进一步讨论文本文件和二进制文件 482
16.9  对象输入输出(可选) 483
16.9.1  可序列化接口Serializable 485
16.9.2  序列化数组 486
16.10  随机读写文件(可选) 487
16.11  实例学习:地址簿(可选) 489
主要术语 494
主要的类和方法 494
本章小结 495
复习题 495
编程练习 498

参考读物推荐
作者: 王宇韬 房宇亮 肖金鑫 编著
作者: [罗]马里乌斯·班西拉(Marius Bancila) 著