出版者的话
专家指导委员会
译者序
前言
第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
第8章 继承和多态
第9章 抽象类和接口
第10章 面向对象建模
第11章 图形用户界面程序
第12章 事件驱动程序
第13章 创建图形用户界面
第14章 applet图像和音频
第4篇 异常处理和输入输出
第15章 异常和断言
第16章 简单输入输出