第1部分 对象和类的编程<br>第1章 简介<br>1.1 引言<br>1.2 Java简史<br>1.3 Java生逢其时<br>1.4 Java是什么<br>1.5 抽象:编程的重要核心<br>1.6 Java 2平台<br>1.7 Java的体系结构是平台无关的<br>1.8 Java不是玩笑<br>1.9 小结<br>第2章 程序设计基础<br>2.1 引言<br>2.2 抽象和概要<br>2.3 语句的顺序<br>2.4 迭代<br>2.4.1 Java的while语句和复合语句<br>2.4.2 Java的do语句<br>2.5 选择语句<br>2.5.1 Java的if语句<br>2.5.2 Java的break语句<br>2.6 变量<br>2.6.1 变量的命名<br>2.6.2 赋值<br>2.6.3 变量的类型<br>2.6.4 初始化变量<br>2.6.5 常数变量(命名常量)<br>2.6.6 变量和类型检查<br>2.6.7 变量的比较<br>2.7 编写一个简单的Java程序(程序1)<br>2.8 使用注释<br>2.9 输出语句<br>2.10 输入语句<br>2.11 交互式程序<br>2.11.1 程序2——基本的输入输出<br>2.11.2 程序3——使用字符串<br>2.11.3 程序4——使用表达式<br>2.12 小结<br>2.13 复习题<br>2.14 练习题<br>2.15 挑战题<br>第3章 向程序中增加结构<br>3.1 引言<br>3.2 抽象和封装<br>3.3 方法<br>3.3.1 从方法返回值<br>3.3.2 void方法和类型<br>3.3.3 方法的参数<br>3.3.4 多个方法参数<br>3.3.5 递归<br>3.4 如何在程序中使用方法<br>3.4.1 例程:乘法表程序<br>3.4.2 例程:回文程序<br>3.5 过程分解<br>3.6 封装<br>3.6.1 作用域与生存期<br>3.6.2 命名与作用域<br>3.7 更多的运算符<br>3.7.1 递增、递减和赋值运算符<br>3.7.2 算术表达式和类型<br>3.7.3 条件运算符<br>3.8 更多的控制语句<br>3.8.1 for循环语句<br>3.8.2 switch语句<br>3.9 更多的实例程序<br>3.9.1 例程:字符三角形(CharacterTriangle)程序<br>3.9.2 例程:字符矩形(CharacterRectangle)程序<br>3.9.3 例程:二进制转十进制(ConverBinaryToDecimal)程序<br>3.10 小结<br>3.11 复习题<br>3.12 练习题<br>3.13 挑战题<br>第4章 容器类介绍<br>4.1 引言<br>4.2 数组<br>4.2.1 声明数组<br>4.2.2 数组索引<br>4.2.3 Foreach循环<br>4.2.4 数组用作方法参数<br>4.2.5 数组用作返回值<br>4.2.6 求平均数(Mean)程序<br>4.2.7 Array类<br>4.2.8 多维数组<br>4.2.9 数组初始化表达式<br>4.2.10 AddUpColumns程序<br>4.2.11 main方法的参数<br>4.2.12 字符数组和字符串<br>4.3 容器(Container)类<br>4.3.1 ArrayList类<br>4.3.2 容器类和基本类型<br>4.3.3 Foreach循环<br>4.3.4 修改Mean程序<br>4.4 数据文件<br>4.4.1 文本数据<br>4.4.2 用FileInput类读取数据<br>4.4.3 用FileOutput类写数据<br>4.4.4 DisplayTextFile程序<br>4.4.5 Copy程序<br>4.4.6 WordCount程序<br>4.5 小结<br>4.6 复习题<br>4.7 练习题<br>4.8 挑战题<br>第5章 画图<br>5.1 引言<br>5.2 绘图<br>5.2.1 画一条线段<br>5.2.2 画矩形、正方形、椭圆和圆<br>5.2.3 其他的标准图形<br>5.2.4 创建新的图形<br>5.3 绘图的属性<br>5.3.1 颜色<br>5.3.2 线宽<br>5.3.3 图形的填充<br>5.4 绘制文本<br>5.5 程序例程<br>5.5.1 例程:棋盘程序<br>5.5.2 例程:螺旋线程序<br>5.5.3 例程:图形程序<br>5.6 小结<br>5.7 复习题<br>5.8 练习题<br>5.9 挑战题<br>第6章 类和对象<br>6.1 引言<br>6.2 创建新的数据类型<br>6.2.1 栈对象<br>6.2.2 Stack类<br>6.3 通用类<br>6.4 方法的命名和作用域<br>6.5 对象初始化<br>6.5.1 实例变量的直接初始化<br>6.5.2 构造函数(Constructor)<br>6.5.3 实例初始化块<br>6.5.4 多种方法如何选择<br>6.6 对象和引用<br>6.6.1 删除旧的对象<br>6.6.2 对象、引用和基本类型<br>6.6.3 对象与方法参数<br>6.6.4 复制对象<br>6.6.5 相等性和对象<br>6.6.6 null<br>6.6.7 this操作符<br>6.7 静态变量和静态方法<br>6.8 类的几个例子<br>6.8.1 例程:Name类<br>6.8.2 例程:Matrix类<br>6.8.3 例程:Graph类<br>6.9 用类和对象进行程序设计<br>6.9.1 对象用来提供服务<br>6.9.2 类与封装<br>6.10 枚举类型<br>6.11 示例——创建桥牌<br>6.12 小结<br>6.13 复习题<br>6.14 练习题<br>6.15 挑战题<br>第7章 类关系详述<br>7.1 引言<br>7.2 关联<br>7.2.1 对象所有权(OwnerShip)<br>7.2.2 有效地使用关联<br>7.3 继承<br>7.3.1 使用继承<br>7.3.2 protected<br>7.3.3 继承和构造函数<br>7.3.4 超类<br>7.3.5 QueueT与DequeueT的实现示例<br>7.3.6 静态变量和继承<br>7.3.7 隐藏名称<br>7.3.8 方法覆盖和动态绑定<br>7.4 关联与继承之间的抉择<br>7.5 继承的层次体系<br>7.5.1 Object类<br>7.5.2 抽象类<br>7.6 接口和类型一致性<br>7.6.1 可替换性、类型和一致性<br>7.6.2 接口及其实现<br>7.7 比较对象的相等性<br>7.7.1 Class类和Instanceof运算符<br>7.7.2 一个惯例<br>7.8 嵌套(Nested)类<br>7.9 包(package)<br>7.10 例程:再次研究Matrix类<br>7.11 可复用性与组件<br>7.12 小结<br>7.13 复习题<br>7.14 练习题<br>7.15 挑战题<br>第8章 异常<br>8.1 问题是什么<br>8.2 错误的种类<br>8.3 表示异常<br>8.4 抛出异常<br>8.5 捕获异常<br>8.6 finally块<br>8.7 使用异常的重要性<br>8.8 例子<br>8.8.1 带异常的ConvertBinaryToDecimal程序<br>8.8.2 以更复杂方式编写的Copy程序<br>8.8.3 重写WordCount程序<br>8.8.4 带异常处理的Stack类型<br>8.9 小结<br>8.10 复习题<br>8.11 练习题<br>第9章 使用线程的并发<br>9.1 一次做多件事情<br>9.2 线程<br>9.3 使用线程<br>9.4 线程同步<br>9.5 线程调度<br>9.6 示例程序<br>9.6.1 文本时钟<br>9.6.2 共享队列<br>9.6.3 网络应用程序<br>9.7 小结<br>9.8 复习题<br>9.9 练习题<br>第10章 用户界面<br>10.1 引言<br>10.1.1 可视化组件<br>10.1.2 事件和事件驱动系统<br>10.1.3 AWT和Swing<br>10.2 核心的GUI概念<br>10.2.1 例程:HelloGoodbye程序<br>10.2.2 创建窗口<br>10.2.3 创建Swing GUI组件<br>10.2.4 容器和布局管理器<br>10.2.5 布局管理器优点<br>10.2.6 不同的布局管理器<br>10.2.7 窗口显示<br>10.2.8 处理事件<br>10.2.9 运行和终止HelloGoodbye程序<br>10.2.10 HelloGoodbye程序的总结<br>10.3 使用GUI作为文本输入<br>10.4 实例:一个非常简单的文本编辑器<br>10.5 菜单<br>10.6 绘图<br>10.7 小结<br>10.8 复习题<br>10.9 练习题<br>10.10 挑战题<br>第2部分 程序设计过程<br>第11章 程序设计过程<br>11.1 引言<br>11.1.1 面向对象的软件工程<br>11.1.2 敏捷方法<br>11.1.3 设计文档<br>11.2 为什么要用面向对象方法<br>11.2.1 一个比喻-路线计划<br>11.2.2 问题域<br>11.2.3 封装<br>11.3 开始任务<br>11.3.1 概览<br>11.3.2 初始问题陈述<br>11.3.3 使用故事收集用户需求<br>11.3.4 功能需求和用例<br>11.3.5 分析<br>11.3.6 设计、实现和测试<br>11.3.7 交付、部署和维护<br>11.3.8 复审和迭代<br>11.4 测试策略<br>11.4.1 单元测试和功能测试<br>11.4.2 验收测试<br>11.4.3 调试<br>11.5 UML类、对象和序列图<br>11.5.1 类图<br>11.5.2 包<br>11.5.3 对象图<br>11.5.4 序列图<br>11.5.5 临时表示法<br>11.6 实践和经验<br>11.7 小结<br>11.8 复习题<br>11.9 练习题<br>11.10 挑战题<br>第12章 单元测试<br>12.1 引言<br>12.1.1 测试是什么<br>12.1.2 到底为什么要测试呢<br>12.2 单元测试-第一个示例<br>12.2.1 类及其测试<br>12.2.2 测试是如何运行的<br>12.3 单元测试的核心原则<br>12.3.1 问题<br>12.3.2 此代码不能够进行测试<br>12.4 测试驱动的开发<br>12.4.1 重构<br>12.4.2 重复<br>12.4.3 红色/绿色/重构<br>12.4.4 按照规范进行测试<br>12.5 TestNG框架<br>12.5.1 测试循环<br>12.5.2 TestNG测试类<br>12.5.3 配置方法<br>12.5.4 测试方法<br>12.5.5 异常<br>12.5.6 断言<br>12.5.7 testng.xml文件<br>12.6 扩展Person类<br>12.6.1 重构<br>12.6.2 无效日期<br>12.6.3 日期验证<br>12.6.4 类的状态<br>12.6.5 现在在哪里呢<br>12.7 小结<br>12.8 复习题<br>12.9 练习题<br>12.10 挑战题<br>第13章 测试驱动的程序设计策略<br>13.1 引言<br>13.2 第一步-搜索文件<br>13.2.1 真实文件与模拟文件<br>13.2.2 使用真实文件<br>13.2.3 到目前为止的回顾过程<br>13.2.4 模拟<br>13.2.5 完整的FileNameSearch类<br>13.3 GUI<br>13.3.1 GUI布局<br>13.3.2 测试GUI布局<br>13.3.3 GUI类<br>13.3.4 创建GUI<br>13.3.5 选择按钮<br>13.3.6 模拟对象<br>13.3.7 搜索按钮<br>13.4 完整的搜索器<br>13.5 小结<br>13.6 复习题<br>13.7 练习题<br>13.8 挑战题<br>第14章 编程工具<br>14.1 引言<br>14.2 项目结构<br>14.2.1 src目录<br>14.2.2 build目录<br>14.2.3 lib目录<br>14.2.4 doc和javadoc目录<br>14.2.5 reports目录<br>14.2.6 deploy目录<br>14.2.7 保证文件安全<br>14.3 Ant-构建工具<br>14.3.1 Ant概述<br>14.3.2 项目元素<br>14.3.3 属性<br>14.3.4 path元素<br>14.3.5 clean目标<br>14.3.6 init目标<br>14.3.7 compile.classes目标<br>14.3.8 compile.tests目标<br>14.3.9 test目标<br>14.3.10 run目标<br>14.3.11 javadoc目标<br>14.3.12 deploy目标<br>14.3.13 all目标<br>14.3.14 使用构建文件<br>14.4 版本控制<br>14.4.1 CVS和Subversion<br>14.4.2 Subversion系统信息库<br>14.4.3 开始项目<br>14.4.4 检验修订版<br>14.4.5 更新、登记和冲突<br>14.4.6 添加、删除和移动<br>14.4.7 修订<br>14.4.8 Status和Logs<br>14.4.9 diff 394<br>14.4.10 复制和分支<br>14.4.11 进一步研究<br>14.5 集成开发环境<br>14.5.1 使用IDE<br>14.5.2 IDE和项目<br>14.5.3 GUI构建器<br>14.5.4 调试器<br>14.5.5 UML工具<br>14.5.6 命令行工具<br>14.5.7 项目Web站点<br>14.6 小结<br>14.7 复习题<br>14.8 练习题<br>14.9 挑战题<br>第3部分 程序开发案例<br>第15章 案例研究概述<br>15.1 引言<br>15.2 案例研究<br>15.3 案例研究的介绍<br>第16章 邮件合并系统<br>16.1 引言<br>16.2 简要介绍<br>16.3 回顾——一些研究<br>16.3.1 XML<br>16.3.2 DOM和SAX<br>16.3.3 JDOM和dom4j<br>16.3.4 初始试验<br>16.4 数据存储<br>16.4.1 初始分析<br>16.4.2 初始设计思想<br>16.4.3 具体设计<br>16.5 GUI设计<br>16.5.1 初始需求分析<br>16.5.2 GUI的体系结构和设计<br>16.6 显示邮件合并列表<br>16.6.1 鼠标操作<br>16.6.2 显示邮件合并细节<br>16.7 菜单和操作<br>16.8 更多操作<br>16.9 练习题<br>16.10 挑战题<br>第17章 行人交叉路口模拟<br>17.1 引言<br>17.2 最初的问题定义<br>17.3 最初的思考<br>17.3.1 交通灯<br>17.3.2 车辆指挥灯<br>17.3.3 行人指挥灯<br>17.4 首轮设计<br>17.5 获得GUI<br>17.6 GUI设计<br>17.7 控制中的问题<br>17.8 进一步设计<br>17.9 小结<br>17.10 练习题<br>17.11 挑战题<br>第4部分 Java编程语言详述<br>第18章 Java语言参考<br>18.1 引言<br>18.2 语法和语义<br>18.3 基本描述<br>18.4 示例程序<br>18.5 小结<br>第19章 变量、类型和表达式<br>19.1 引言<br>19.2 注释<br>19.2.1 目的<br>19.2.2 概述<br>19.2.3 语法<br>19.2.4 描述<br>19.2.5 例子<br>19.3 标识符<br>19.3.1 目的<br>19.3.2 概述<br>19.3.3 描述<br>19.3.4 例子<br>19.4 Unicode转义符<br>19.4.1 目的<br>19.4.2 概述<br>19.4.3 描述<br>19.4.4 例子<br>19.5 字面量<br>19.5.1 目的<br>19.5.2 概述<br>19.5.3 描述<br>19.5.4 例子<br>19.6 类型<br>19.6.1 基本类型<br>19.6.2 引用类型<br>19.6.3 自动类型转换<br>19.7 作用域<br>19.7.1 目的<br>19.7.2 概述<br>19.7.3 描述<br>19.7.4 例子<br>19.8 变量<br>19.8.1 变量声明<br>19.8.2 变量初始化<br>19.8.3 数组变量<br>19.9 表达式和运算符<br>19.9.1 基本表达式<br>19.9.2 运算符<br>19.10 源文件<br>19.11 小结<br>19.12 复习题<br>19.13 练习题<br>第20章 程序流程控制<br>20.1 引言<br>20.2 选择<br>20.2.1 if语句<br>20.2.2 switch语句<br>20.3 迭代<br>20.3.1 while循环语句<br>20.3.2 do循环语句<br>20.3.3 for循环语句<br>20.3.4 循环行为检验<br>20.3.5 foreach循环语句<br>20.4 跳转语句<br>20.4.1 break语句<br>20.4.2 continue语句<br>20.4.3 return语句<br>20.5 递归<br>20.6 小结<br>20.7 复习题<br>20.8 练习题<br>第21章 类和包<br>21.1 引言<br>21.2 类<br>21.2.1 类声明<br>21.2.2 public、private和protected<br>21.2.3 实例变量<br>21.2.4 实例初始化器<br>21.2.5 静态变量或类变量<br>21.2.6 静态初始化器<br>21.2.7 方法<br>21.2.8 静态方法或类方法<br>21.2.9 构造函数<br>21.2.10 关键字this<br>21.3 顶层类<br>21.3.1 目的<br>21.3.2 概述<br>21.3.3 语法<br>21.3.4 描述<br>21.4 嵌套类<br>21.4.1 顶层嵌套类<br>21.4.2 成员类<br>21.4.3 局部类<br>21.4.4 匿名类<br>21.5 枚举类型<br>21.5.1 目的<br>21.5.2 概述<br>21.5.3 语法<br>21.5.4 描述<br>21.5.5 例子<br>21.6 包<br>21.6.1 目的<br>21.6.2 概述<br>21.6.3 语法<br>21.6.4 描述<br>21.6.5 例子<br>21.7 静态加载<br>21.7.1 目的<br>21.7.2 概述<br>21.7.3 语法<br>21.7.4 描述<br>21.7.5 例子<br>21.8 小结<br>21.9 复习题<br>21.10 练习题<br>第22章 继承和接口<br>22.1 引言<br>22.2 继承<br>22.2.1 继承的概念<br>22.2.2 关键字private和protected与继承性<br>22.2.3 Final类<br>22.2.4 方法覆盖(Overriding)<br>22.2.5 Final方法<br>22.2.6 方法调用表达式<br>22.2.7 修改后的成员类名字查找<br>22.2.8 构造函数与继承<br>22.2.9 超类(Super)和隐含命名<br>22.2.10 抽象(Abstract)类<br>22.2.11 抽象(Abstract)方法<br>22.2.12 从类对象继承的方法<br>22.3 接口<br>22.3.1 接口声明<br>22.3.2 实现<br>22.4 注释(Annotation)<br>22.4.1 目的<br>22.4.2 概述<br>22.4.3 语法<br>22.4.4 描述<br>22.4.5 例子<br>22.5 小结<br>22.6 复习题<br>22.7 练习题<br>第23章 异常处理<br>23.1 引言<br>23.1.1 异常类<br>23.1.2 Try、Catch与Finally<br>23.1.3 异常的传递<br>23.1.4 抛出(Throws)异常声明<br>23.1.5 关键字throw<br>23.2 小结<br>23.3 复习题<br>第24章 线程与并发<br>24.1 引言<br>24.2 Thread类<br>24.2.1 目的<br>24.2.2 概述<br>24.2.3 语法<br>24.2.4 描述<br>24.2.5 例子<br>24.3 同步方法<br>24.3.1 目的<br>24.3.2 概述<br>24.3.3 语法<br>24.3.4 描述<br>24.3.5 例子<br>24.4 同步语句<br>24.4.1 目的<br>24.4.2 概述<br>24.4.3 语法<br>24.4.4 描述<br>24.4.5 例子<br>24.5 小结<br>24.6 复习题<br>24.7 练习题<br>第5部分 附录<br>附录A 术语表<br>附录B CRC方法<br>B.1 引言<br>B.2 基本概念<br>B.3 CRC卡片<br>B.4 CRC方法过程<br>B.5 一些问题<br>B.6 文档<br>B.7 设计<br>附录C 在线文档<br>附录D 运行Java程序<br>D.1 从这里开始<br>D.2 编译和运行Java程序<br>D.3 使用Input、FileInput和FileOutput类<br>D.4 使用DrawFrame和DrawPanel类<br>D.5 使用CLASSPATH<br>附录E Input类<br>附录F FileInput类<br>附录G FileOutput类<br>附录H DrawFrame类<br>附录I DrawPanel类<br>附录J 参考文献<br>J.1 特性和Java使用<br>J.2 单元测试和重构<br>J.3 面向对象分析、设计和编程<br>J.4 通用程序设计<br>J.5 算法和数据结构<br>J.6 并发和线程<br>J.7 工具<br>J.8 人机交互
展开