内容简介
1.1 计算机与程序
1.2 程序与模型
第1章 进入Java
1.3.3 信息
1.3.2 行为
1.3 对象、类和消息
1.3.1 对象
1.3.6 预定义的对象和类
1.3.5 类
1.3.4 Java程序
1.5 发送一个消息到System.out对象
1.4 第一个对象 PrintStream对象
1.6 一个Java程序
1.7.3 关键字
1.7.2 标识符
1.7 Java小插曲 标识符、语句顺序、格式和注释
1.7.1 Java规则
1.7.7 包围的注释
1.7.6 注释
1.7.4 Java的语句顺序
1.7.5 程序格式和注释
1.8.1 可访问性
1.8 例行步骤
1.7.8 行注释
1.8.3 执行
1.8.2 准备执行:翻译
1.9 时刻
1.10 本章小结
1.11 关键术语
1.13 练习题
1.12 复习题
1.14 GUI补充 网页、HTML和小应用程序概述
2.2 使用PrintStream对象
2.1 简介
第2章 发送消息和执行操作
2.3 Java小插曲 引用、方法和消息
2.4 String类
2.3.3 再论标识符
2.3.1 方法的重载
2.3.2 消息发出后
2.6 引用变量
2.5 方法、参数以及返回值
2.7.1 变量
2.7 Java小插曲 变量和赋值
2.7.3 赋值语句不是等式
2.7.2 赋值
2.7.5 引用变量和对象
2.7.4 初始化
2.7.7 变量是独立的
2.7.6 微妙而重要的一点:变量的两种角色
2.7.10 变化
2.7.9 语句
2.7.8 常量不是变量
2.8 命令式程序设计 完成任务
2.8.1 整数类型和算术运算
2.8.2 基本的算术运算符
2.8.3 优先级
2.8.4 复合赋值运算符
2.8.5 自增/自减
2.8.6 操作的顺序
2.9 使用String方法
2.9.1 空串
2.10 命令式程序设计 简单的条件
2.9.2 灵活且实用的对象
2.10.1 if语句
2.10.2 条件
2.11 本章小结
2.12 关键术语
2.14 练习题
2.13 复习题
2.15 GUI补充内容 图形的绘制和定位
3.2.1 使用构造方法创建对象
3.2 创建对象
第3章 应用对象和基本类型
3.1 简介
3.3.2 对象来自于何处
3.3.1 重载的和默认的构造方法
3.2.2 引用变量的重要作用
3.3 Java小插曲 对象的来源
3.3.4 级联
3.3.3 不可变对象
3.3.5 组合
3.4.1 boolean值和变量
3.4 命令式程序设计 布尔类型
3.5 对象的应用
3.4.2 boolean表达式
3.6 日期和日历
3.7.2 混合类型算术运算
3.7.1 为什么我们还要用int
3.7 命令式程序设计 其他的整数类型
3.8 BigInteger
3.7.3 其他的整数类型:short和byte
3.10 输入简介
3.9 Java小插曲 包和import语句
3.10.1 文件输入概要:从磁盘到程序
3.11.1 类File:获取硬盘文件信息
3.11 文件输入过程
3.10.2 从字节到字符:Unicode的例子
3.10.3 从char到String:获得文本的行
3.11.3 类InputStreamReader:将byte转化成char
3.11.2 类FileInputStream:从磁盘文件中读取字节
3.11.5 结果:为输入打开一个文件
3.11.4 类BufferedReader:从char流到字符串
3.12 键盘输入
3.13 文件输出
3.14.1 网络的概念
3.14 网络计算简介
3.14.2 网络输入
3.15.4 寻找类String
3.15.3 文档页的层次
3.15 Java小插曲 Java文档
3.15.1 Java应用程序接口
3.15.2 API文档的内容
3.16 本章小结
3.18 复习题
3.17 关键术语
3.19 练习题
3.20 GUI补充材料 初识动画
4.2 类的定义 方法
4.1 简介
第4章 定义类
4.2.1 使用Logger类
4.3 类的定义 实例变量
4.2.2 基本的类的定义
4.3.1 使用Stopwatch类
4.4 关于方法的更多内容 返回值
4.3.2 使用实例变量
4.4.1 使用Counter类
4.4.2 返回值与输出:再谈Stopwatch
4.5 命令式编程 寻找最小值
4.4.3 使用返回值
4.6.2 return语句
4.6.1 声明顺序
4.6 Java小插曲 变量、声明以及return语句
4.6.3 变量及其生存期
4.7 关于方法的更多内容 形式参数
4.7.1 使用类Minimizer
4.8 状态和行为
4.7.2 使用参数
4.9.1 标识方法
4.9 类的定义 综合起来
4.9.2 确定状态
4.9.3 实现test()
4.9.4 实现其他方法
4.9.5 使用类TypingTutor
4.10.2 访问控制:public与private
4.10.1 形参
4.9.6 方法模式:get和set
4.10 Java小插曲 声明、访问和对象
4.10.4 对象及其生存期
4.10.3 对象访问自己的方法
4.12 关键术语
4.11 本章小结
4.14 练习题
4.13 复习题
4.15 GUI补充材料 一个简单的动画
5.1.1 TypingTutor类
5.1 定制新对象 构造方法
第5章 高级类定义
5.1.2 定义重载构造方法
5.2.2 构造方法和初始化
5.2.1 默认构造方法
5.2 Java小插曲 构造方法、初始化以及重载
5.3.1 确定行为
5.3 示例:Name类
5.2.3 重载
5.3.2 接口
5.3.3 Name类的实现
5.3.4 完整的Name类
5.3.6 输出对象:修改Name类
5.3.5 使用Name类
5.4 提供类的行为
5.5.1 回顾我们的第一个程序
5.5 Java小插曲 静态方法
5.5.2 预定义的静态方法
5.5.3 读取基本类型值
5.6 跟踪类范围内的信息 静态变量
5.7 定义常量:final
5.8.1 “句点”符号
5.8 Java小插曲 使用对象
5.8.3 关键字this
5.8.2 再谈访问控制
5.8.4 将对象表示为一个字符串
5.8.5 比较两个对象
5.9.2 在read()方法中使用null
5.9.1 Null值
5.9 重温输入方法 测试输入的结束
5.12 复习题
5.11 关键术语
5.10 本章小结
5.14 GUI补充材料 创建控制和交互
5.13 练习题
6.2.1 模拟度量的数值
6.2 一个进行米制转换的类
第6章 方法内核:命令式程序设计
6.1 概述
6.2.2 基本数据类型float和 double
6.2.3 实现convertFeetToMeters()方法
6.2.4 方法printtFeetToMeters Table():迭代
6.2.5 使用for来实现一个计数循环
6.3.2 float和double封装类
6.3.1 float和double的显示
6.3 Java小插曲 float、double以及for语句
6.3.5 什么时候使用float和double
6.3.4 使用float double
6.3.3 float double的字面值
6.4 π值的逼近
6.3.7 for语句的执行
6.3.6 混合类型算术
6.4.2 编写方法main()
6.4.1 模拟镖靶
6.4.3 实现Toss类
6.5.1 Car类
6.5 嵌套和复合的条件语句
6.4.4 使用MonteCarloPi类
6.5.2 实现chooseWarranty():多分支检测
6.5.3 复合条件
6.6.2 嵌套的if和悬空的else
6.6.1 逻辑运算符
6.6 Java小插曲 逻辑运算符和条件语句
6.6.3 条件语句格式之间的关系
6.6.4 Switch语句
6.7 本章小结
6.10 练习题
6.9 复习题
6.8 关键术语
6.11 GUI补充材料 关于交互的更多内容
7.3 重温Counter类
7.2 类设计概述
第7章 类设计
7.1 概述
7.4.2 一个示例
7.4.1 问题的描述
7.4 自动取款机
7.4.5 定义ATM类的接口
7.4.4 确定ATM类所需要的行为
7.4.3 寻找首要对象
7.4.7 实现ATM类的方法
7.4.6 定义ATM类的实例变量
7.4.9 定义Account类实例变量
7.4.8 确定Account类的行为和定义接口
7.4.11 确定并实现Account类的“辅助”方法
7.4.10 实现Account类的方法
7.4.12 完整地实现Account类
7.4.13 使用这些类
7.4.14 讨论
7.5.4 确定所求的行为动作—类RepairPerson
7.5.3 寻找首要对象
7.5 调度修理工人的例子
7.5.1 问题的描述
7.5.2 情景举例
7.5.5 定义类RepairPerson的接口
7.5.7 实现类RepairPerson的方法
7.5.6 定义类RepairPerson的实例变量
7.5.9 定义类Location的接口
7.5.8 确定类Location所需的行为动作
7.5.11 实现类Location的方法
7.5.10 定义类Location的实例变量
7.5.12 使用这些类
7.6 本章小结
7.9 练习题
7.8 复习题
7.7 关键术语
7.10 GUI补充材料 多个控件:布局以及事件处理
8.1 概述
第8章 验证对象的行为
8.2.1 编译时的语法和语义错误
8.2 错误的分类
8.2.3 逻辑错误
8.2.2 运行时错误
8.4 测试驱动
8.3 Java小插曲 Java的断言机制
8.5 自动测试
8.6.2 所有的行为都必须被测试
8.6.1 一个好的、完整的测试应该由什么组成
8.6 测试什么以及如何测试
8.6.4 确保每条语句至少被执行了一次
8.6.3 试着寻找逻辑测试顺序
8.6.6 寻找并测试特例
8.6.7 不要关心测试的效率
8.6.5 不同的测试中应该使用什么样的值
8.7.1 发现bug
8.7 调试的方法
8.8 本章小结
8.7.2 搜寻错误
8.10 复习题
8.9 关键术语
8.12 GUI补充材料 分离显示和控制
8.11 练习题
9.2 处理多个对象
9.1 简介
第9章 多个对象的处理
9.3 循环模式
9.4 循环在测试中的作用
9.5.2 情景示例
9.5.1 问题的描述
9.5 电话簿
9.5.7 方法的实现
9.5.6 定义实例变量
9.5.3 确定主要对象
9.5.4 确定所需要的行为
9.5.5 定义接口
9.5.9 定义Entry类的接口
9.5.8 确定Entry类希望的行为
9.5.13 讨论
9.5.12 使用Entry类的方法
9.5.10 定义Entry类的实例变量
9.5.11 实现Entry类的方法
9.6.1 再谈TelephoneBook
9.6 保存多个值
9.5.14 类开发过程的本质
9.7 Vector——一个简单的集合类
9.6.2 相关对象的集合
9.8 使用for循环来遍历Vector
9.9.3 实现方法
9.9.2 定义实例变量
9.9 再谈TelephoneBook类
9.9.1 一个更好的实现方法
9.10 Java小插曲 基本类型与集合:再谈封装类
9.9.4 讨论
9.11.1 问题的描述
9.11 一个例子——确定学生的相对表现
9.11.4 定义接口
9.11.3 行为的确定
9.11.2 确定主要对象
9.11.6 方法的实现
9.11.5 定义实例变量
9.11.7 类的使用
9.12 另一个Vector的应用
9.11.8 讨论
9.12.2 doOutput()方法
9.12.1 doExperiment()方法
9.13 Java小插曲 Object的方法
9.14 数组介绍
9.14.1 声明并创建数组
9.15.1 使用数组还是Vector
9.15 Vector和数组
9.14.2 数组元素
9.15.2 从Vector到数组
9.16 使用数组来处理抛掷硬币
9.18 关键术语
9.17 本章小结
9.20 练习题
9.19 复习题
9.21 GUI补充材料 文本的放置
10.2 设计循环
10.1 概述
第10章 设计迭代
10.2.3 代码框架
10.2.2 选择和定义变量
10.2.1 非正式过程
10.2.4 while条件
10.2.7 完成循环体
10.2.6 确保循环终止
10.2.5 初始化
10.2.9 讨论
10.2.8 重新检查初始化
10.3.2 for语句的灵活性
10.3.1 for等价于while
10.3 Java小插曲 两个循环语句
10.4.1 乘法
10.4 另一个简单例子
10.4.5 while条件
10.4.4 代码框架
10.4.2 非正式过程
10.4.3 选择和定义变量
10.4.7 确保终止
10.4.6 初始化
10.5 重新考察循环模式
10.4.10 讨论
10.4.8 完成循环体
10.4.9 重新检查初始化
10.5.1 遍历模式:查寻记录项
10.5.2 读/处理模式:修理工距离
10.6.1 统计30个街区内的修理工人数
10.6 修理工循环的变种
10.6.2 寻找最近的修理工
10.7 合计银行账号
10.8.2 循环模式:累计器
10.8.1 循环模式:计数器
10.8 更多循环模式:计数器、累计器与极值
10.8.3 循环模式:对象极值
10.8.4 循环模式:基本类型数据中的极值
10.9 遍历数组的迭代
10.10.1 短路
10.10 Java小插曲 短路、break和continue
10.10.2 break和continue语句
10.11 循环设计策略 精化不完美的解决方案
10.12 示例LOGO海龟
10.15 复习题
10.14 关键术语
10.13 本章小结
10.16 练习题
10.17 GUI补充材料 更多文本操作
11.2 搜索
11.1 概述
第11章 维护对象集合
11.3 二分搜索
11.4 寻找极值的下标
11.5 排序
11.6 搜索文件
11.7 线程 并行计算
11.7.1 引入Thread类
11.7.2 一个简单的线程示例
11.8 线程 并行文件搜索
11.9 本章小结
11.12 练习题
11.11 复习题
11.10 关键术语
11.13 GUI补充材料 线程
12.1 概述
第12章 扩展类的行为
12.2 扩展类——继承Ⅰ
12.3.5 定义接口
12.3.4 确定行为
12.3 一个更好的BufferedReader
12.3.1 问题陈述
12.3.2 情景
12.3.3 寻找主体
12.3.7 实现方法
12.3.6 定义实例变量
12.3.8 类的完整实现
12.5 回顾Name类——添加额外状态
12.4 为子类添加状态——访问父类状态
12.6.1 基本机制与术语
12.6 Java小插曲 继承
12.6.2 构造器
12.6.3 继承和is-a关系
12.6.5 继承与合成
12.6.4 protected关键字
12.6.7 常见错误
12.6.6 继承还是合成
12.6.9 Object类
12.6.8 类的层次结构
12.8.1 覆盖机制
12.8 Java小插曲 多态
12.7 覆盖方法
12.8.2 多态
12.8.3 覆盖与重载
12.9 抽取共同行为——继承Ⅱ
12.10 抽象方法和抽象类
12.11 规定公共行为——接口
12.12 一种通用排序算法
12.13 本章小结
12.14 关键术语
12.16 练习题
12.15 复习题
12.17 GUI补充材料 探究Java类层次结构中的抽象窗口工具箱(Abstract Window Toolkit)
13.2 遇到异常
13.1 预计异常
第13章 异常
13.2.1 抛出异常
13.3.2 Checked Exception与RuntimeException
13.3.1 标注异常
13.2.2 throws子句
13.3 Java小插曲 Exception类
13.4 处理异常
13.5 对异常的责任
13.6 异常并非总是错误
13.7 本章小结
13.10 练习题
13.9 复习题
13.8 关键术语
13.11 GUI补充材料 模型-视图-控制器(MVC)范式
14.1 概述
第14章 递归
14.2 示例 求幂
14.2.1 递归调用
14.3.1 读取数据来构造一个Repair Person对象的集合
14.3 如何设计递归方法
14. 2.2 结束
14.3.2 在集合中寻找最近的修理工
14.3.3 两种递归模式
14.4 递归方法——幕后探秘
14.5 在向量、数组和字符串中使用递归
14.6 排列
14.7.1 智力游戏
14.7 Hanoi塔
14.7.2 找出简单的方法
14.7.4 场景
14.7.3 问题阐述
14.7.5 实现方法
14.8 递归和迭代
14.9 本章小结
14.10 关键术语
14.11 复习题
14.12 练习题
14.13 GUI补充材料 Hanoi塔小应用程序
第15章 客户-服务器计算
15.1 客户端和服务器
15.2 Internet通信
15.2.1 套接字
15.2.2 TCPConnection类
15.3 客户-服务器计算
15.4 一些简单的客户端类
15.4.1 WebClient类
15.4.2 MailClient类
15.4.3 处理客户端异常
15.6 关键术语
15.7 复习题
15.5 本章小结
15.8 练习题
15.9 GUI补充材料 Swing
A.2 Macintosh环境
A.1 引言
A.3 UNIX/Linux环境
附录A 三个Java环境
A.4 Windows环境
B.2 使用AWIO进行输出
B.1 引言
B.2.1 AWPrinter类
附录B AWIO
B.2.2 什么东西会出错呢
B.3 使用AWIO进行键盘输入
B.4 交互式输入/输出
B.5 使用AWIO进行磁盘文件输入
B.6 在本书的其余部分使用AWIO
附录C 使用Enumeration遍历集合
C.1 遍历矢量——Enumeration
C.2 另一个循环模式——列举集合元素