译者序
前言
第一部分 准备程序员考试
第1章 程序员考试指南
1.1 程序员考试的形式是什么
1.2 考试包含哪些内容
1.2.1 声明和访问控制
1.2.2 流控制和异常处理
1.2.3 垃圾收集
1.2.4 语言基础
1.2.5 运算符和赋值
1.2.6 重载、覆盖运行时间类型和面向对象
1.2.7 线程
1.2.8 java.awt包—布局
1.2.9 java.lang包
1.2.10 java.util包
1.2.11 java.io包
1.3 本书与程序员考试目标的对应关系
1.4 考试是怎么管理的
1.5 怎样签约和考试
1.6 程序员考试的应试技巧
1.6.1 试卷的样式
1.6.2 仔细答题
1.6.3 抓紧时间,从简单的题开始回答
1.6.4 小心陷阱
1.6.5 了解试题中为什么会出现这个问题
1.6.6 了解考试中心
1.6.7 答完题后会怎么样
1.7 Sun认证
1.8 Sun是如何管理认证过程的
1.9 Sun认证的发展方向
第2章 Java编程基础
2.1 Java编程概念
2.1.1 对象
2.1.2 类
2.1.3 包
2.1.4 继承
2.1.5 封装
2.1.6 访问控制
2.2 Java的特性
2.2.1 为分布式网络而设计
2.2.2 为多线程而设计
2.2.3 为易使用和重用而设计
2.2.4 为安全而设计
2.3 使用Java小程序和应用程序
2.4 Java规范和API
2.4.1 Java 1.1
2.4.2 Java 2: JDK 1.2
2.4.3 Java 2: JDK 1.3
2.5 复习题
2.6 复习题答案
第3章 Java关键字
3.1 按字母顺序排列的关键字表
3.2 组织类
3.3 定义类
3.4 类和成员的关键字
3.5 简单数据类型
3.6 值和变量
3.7 异常情况处理
3.8 实例创建和检验
3.9 流程控制
3.10 练习
3.10.1 练习3-1
3.10.2 练习3-2
3.10.3 练习3-3
3.11 练习答案
3.12 复习题
3.13 复习题答案
第4章 Java构成块
4.1 标识符
4.2 字面值
4.2.1 布尔字面值
4.2.2 字符字面值
4.2.3 练习4-1
4.2.4 字符串字面值
4.2.5 练习4-2
4.2.6 整型字面值
4.2.7 浮点字面值
4.3 分隔符
4.4 运算符
4.4.1 练习4-3
4.4.2 练习4-4
4.5 注释
4.6 练习答案
4.7 复习题
4.8 复习题答案
第5章 内存和垃圾收集
5.1 垃圾收集
5.1.1 对象何时适合于垃圾收集
5.1.2 调用垃圾收集程序
5.2 最终化
5.2.1 练习5-1
5.2.2 练习5-2
5.2.3 访问成员
5.2.4 练习5-3
5.3 给方法传递参数
5.3.1 练习5-4
5.3.2 实施垃圾收集
5.4 练习答案
5.5 复习题
5.6 复习题答案
第6章 数据类型和值
6.1 数据类型
6.1.1 变量和数据类型
6.1.2 基本数据类型
6.1.3 整数数据类型
6.1.4 字符值
6.1.5 浮点运算
6.1.6 boolean
6.1.7 类型转换
6.2 练习
6.2.1 练习6-1
6.2.2 练习6-2
6.2.3 练习6-3
6.3 数组
6.3.1 声明和初始化数组
6.3.2 一维数组
6.3.3 在分配数组时进行初始化
6.3.4 练习6-4
6.3.5 数组的数组
6.3.6 数组在类层次中的位置
6.4 练习答案
6.5 复习题
6.6 复习题答案
第7章 运算符
7.1 运算符和表达式
7.1.1 算术运算符
7.1.2 赋值运算符
7.1.3 比较运算符
7.1.4 逻辑运算符
7.2 位运算符
7.2.1 运算符>>
7.2.2 运算符>>>
7.2.3 运算符<<
7.2.4 运算符&、| 和 ^
7.3 练习题
7.3.1 练习7-1
7.4 测试对象的类型
7.4.1 练习7-2
7.5 equals()和= =
7.5.1 练习7-3
7.5.2 练习7-4
7.6 运算符优先级和计算顺序
7.7 在表达式中使用数组
7.8 在表达式中使用char类型
7.9 练习答案
7.10 复习题
7.11 复习题答案
第8章 流程控制
8.1 使用if和if...else语句
8.1.1 if语句
8.1.2 if...else语句
8.1.3 嵌套的if语句
8.1.4 if语句的合法值
8.1.5 练习8-1
8.2 循环表达式
8.2.1 while语句
8.2.2 do-while循环
8.2.3 while和do-while语句的合法值
8.3 使用for循环进行迭代
8.3.1 for语句
8.3.2 用表达式控制for循环
8.3.3 循环嵌套
8.4 switch和case语句
8.4.1 switch...case
8.4.2 嵌套的switch语句
8.5 使用跳转语句
8.5.1 break语句
8.5.2 continue语句
8.5.3 加标号的循环
8.5.4 练习8-2
8.6 使用&&和||
8.6.1 练习8-3
8.7 练习答案
8.8 复习题
8.9 复习题答案
第9章 方法
9.1 定义方法
9.1.1 方法定义
9.1.2 返回类型
9.1.3 方法修饰符
9.1.4 练习9-1
9.2 重载方法
9.2.1 练习9-2
9.3 覆盖方法
9.3.1 子类的访问控制
9.3.2 继承synchronized和abstract
9.3.3 返回类型
9.3.4 参数类型
9.3.5 异常情况
9.3.6 练习9-3
9.4 基类和继承类的对象引用
9.5 练习题答案
9.6 复习题
9.7 复习题答案
第10章 构造器
10.1 构造器基础
10.2 默认构造器
10.3 定义、重载以及覆盖构造器
10.4 调用其他构造器
10.5 构造器中的实例变量
10.5.1 练习10-1
10.5.2 练习10-2
10.5.3 练习10-3
10.6 练习答案
10.7 复习题
10.8 复习题答案
第11章 对象和类
11.1 对象
11.1.1 创建和销毁对象
11.2 类
11.2.1 声明类
11.2.2 应用程序类结构
11.2.3 小程序类结构
11.3 类变量
11.3.1 实例变量
11.3.2 static变量
11.4 预定义实例
11.4.1 null
11.4.2 this
11.4.3 super
11.5 使用“是什么”和“有什么”的面向对象关系
11.6 练习
11.6.1 练习11-1
11.6.2 练习11-2
11.7 类关键字
11.7.1 public
11.7.2 abstract
11.7.3 strictfp
11.7.4 final
11.7.5 练习11-3
11.7.6 练习11-4
11.8 变量关键字
11.8.1 static
11.8.2 final
11.8.3 transient
11.8.4 volatile
11.8.5 练习11-5
11.9 访问控制关键字
11.9.1 public
11.9.2 private
11.9.3 protected
11.9.4 练习11-6
11.9.5 练习11-7
11.9.6 练习11-8
11.9.7 练习11-9
11.9.8 练习11-10
11.10 类的类型转换
11.11 内类
11.11.1 创建内类
11.12 匿名类
11.13 静态内类
11.13.1 练习11-11
11.14 练习答案
11.15 复习题
11.16 复习题答案
第12章 包、继承和接口
12.1 包
12.1.1 声明包
12.1.2 CLASSPATH环境变量
12.1.3 import语句
12.1.4 包命名规范
12.1.5 使用包
12.1.6 练习12-1
12.1.7 练习12-2
12.1.8 练习12-3
12.1.9 练习12-4
12.2 创建包
12.3 Java源文件的顺序
12.3.1 练习12-5
12.3.2 练习12-6
12.4 继承
12.4.1 声明继承
12.4.2 使用继承
12.5 接口
12.5.1 使用接口
12.5.2 定义接口
12.5.3 使用Cloneable接口
12.5.4 练习12-7
12.6 练习答案
12.7 复习题
12.8 复习题答案
第13章 向程序传递参数
13.1 main()方法
13.2 命令行参数
13.2.1 练习13-1
13.3 当main()结束时
13.4 在HTML页中嵌入小程序
13.5 向小程序传递参数
13.6 检索参数
13.6.1 练习13-2
13.7 定制小程序
13.8 练习答案
13.9 复习题
13.10 复习题答案
第14章 异常
14.1 异常基础知识
14.1.1 处理异常
14.1.2 未捕获异常
14.1.3 检测和未检测异常
14.1.4 使用try、catch和finally
14.1.5 练习14-1
14.1.6 常见的Java异常
14.1.7 使用由Exception和Throwable定义的方法
14.2 重新抛出异常
14.2.1 练习14-2
14.3 方法可以抛出哪些异常
14.4 子类中覆盖方法的异常
14.4.1 练习14-3
14.5 创建和抛出异常
14.5.1 练习14-4
14.6 练习答案
14.7 复习题
14.8 复习题答案
第15章 多线程
15.1 线程简介
15.1.1 线程状态
15.1.2 线程生命周期
15.1.3 线程调度和优先级
15.2 用java.lang.Thread和java.lang.Runnable创建线程
15.2.1 子类化线程
15.2.2 实现Runnable
15.2.3 练习15-1
15.3 监视器和同步
15.3.1 理解同步
15.3.2 练习15-2
15.3.3 使用wait()、notify()和notifyAll()
15.3.4 练习15-3
15.3.5 用wait-notify和sleep管理线程
15.4 为什么线程可能不会执行
15.4.1 练习15-4
15.5 其他有用的线程方法
15.6 练习答案
15.7 复习题
15.8 复习题答案
第16章 重要的java.lang和java.util
16.1 包装类 2
16.1.1 Boolean类
16.1.2 Character类
16.1.3 Byte、Short、Integer和Long类
16.1.4 Float和Double类
16.1.5 使用包装类
16.1.6 练习16-1
16.2 使用Math类
16.2.1 abs()
16.2.2 ceil()
16.2.3 floor()
16.2.4 max()
16.2.5 min()
16.2.6 random()
16.2.7 round()
16.2.8 sqrt()
16.2.9 sin()
16.2.10 cos()
16.2.11 tan()
16.2.12 练习16-2
16.3 String和StringBuffer类
16.3.1 字符串运算符
16.3.2 字符串的不变性
16.3.3 String类的方法
16.3.4 练习16-3
16.3.5 StringBuffer
16.3.6 练习16-4
16.4 Collection
16.4.1 Collection API纵览
16.4.2 Collection API要点
16.5 练习答案
16.6 复习题
16.7 复习题答案
第17章 java.io
17.1 java.io包
17.1.1 InputStream和OutputStream
17.1.2 FilterInputStream和FilterOutputStream
17.1.3 DataInput和DataOutput
17.1.4 Reader和Writer
17.2 使用文件
17.2.1 测试文件是否存在
17.2.2 查看文件节点的信息
17.2.3 删除和重命名文件
17.2.4 创建目录
17.2.5 访问文件系统
17.2.6 创建文件
17.2.7 练习17-1
17.2.8 创建临时文件
17.3 流
17.3.1 排序流过滤器
17.3.2 练习17-2
17.3.3 读写数据流
17.3.4 编码文本流
17.4 读写文件
17.4.1 练习17-3
17.5 随机访问文件
17.6 文件描述符
17.6.1 练习17-4
17.7 使用缓冲阅读器来读取文本输入
17.8 使用打印写入器来输出文本
17.9 练习答案
17.10 复习题
17.11 复习题答案
第18章 java.awt:图形和组件
18.1 抽象窗口工具包(AWT)
18.1.1 AWT基础
18.1.2 Applet和AWT
18.1.3 paint()方法
18.1.4 重新绘制
18.1.5 paint()方法和Graphics类
18.1.6 降低图形闪烁
18.2 用Graphics对象绘图
18.2.1 drawString()
18.2.2 drawLine()
18.2.3 drawRect()和fillRect()
18.2.4 drawPolygon()和fillPolygon()
18.2.5 drawArc()和fillArc()
18.2.6 drawImage( )
18.2.7 练习18-1
18.3 Image类
18.3.1 创建空白图像
18.3.2 加载和传输图像
18.3.3 使用ImageObserver
18.3.4 练习18-2
18.4 使用框架窗口
18.4.1 构造框架
18.4.2 调整框架
18.4.3 设置框架标题
18.4.4 关闭框架窗口
18.5 在应用程序中创建框架窗口
18.6 在小程序中创建框架窗口
18.7 Java如何在容器内安排组件
18.8 Component类、子类与方法
18.8.1 文本区
18.8.2 文本域
18.8.3 列表
18.8.4 练习18-3
18.8.5 关键的组件方法
18.9 练习答案
18.10 复习题
18.11 复习题答案
第19章 java.awt:布局
19.1 组件和布局管理器
19.1.1 布局管理器基础
19.2 使用布局管理器
19.2.1 FlowLayout
19.2.2 BorderLayout
19.2.3 GridLayout
19.2.4 其他布局管理器
19.3 默认布局管理器
19.3.1 练习19-1
19.4 练习答案
19.5 复习题
19.6 复习题答案
第20章 java.awt:事件处理
20.1 事件类
20.2 事件监听
20.3 监听器接口
20.3.1 ActionListener
20.3.2 AdjustmentListener
20.3.3 ComponentListener
20.3.4 ContainerListener
20.3.5 FocusListener
20.3.6 ItemListener
20.3.7 KeyListener
20.3.8 MouseListener
20.3.9 MouseMotionListener
20.3.10 TextListener
20.3.11 WindowListener
20.4 实现监听器接口
20.4.1 练习20-1
20.5 语义事件和低层事件
20.5.1 ActionEvent
20.5.2 AdjustmentEvent
20.5.3 ItemEvent
20.6 AWTEvent子类
20.6.1 AWTEvent
20.6.2 ActionEvent
20.6.3 AdjustmentEvent
20.6.4 ComponentEvent
20.6.5 ContainerEvent
20.6.6 FocusEvent
20.6.7 InputEvent
20.6.8 ItemEvent
20.6.9 KeyEvent
20.6.10 MouseEvent
20.6.11 PaintEvent
20.6.12 TextEvent
20.6.13 WindowEvent
20.6.14 练习20-2
20.7 扩展适配器类
20.7.1 练习20-3
20.8 练习答案
20.9 复习题
20.10 复习题答案
第21章 Sun认证程序员模拟考试1
21.1 模拟考试1
21.2 问题
21.3 答案
第22章 Sun认证程序员模拟考试2
22.1 模拟考试2
22.2 问题
22.3 答案
第23章 Sun认证程序员模拟考试3
23.1 模拟考试3
23.2 问题
23.3 答案
第二部分 准备开发人员考试
第24章 开发人员考试指南
24.1 综述
24.2 考试之前需要了解的概念
24.3 程序设计作业
24.4 问答题考试
24.5 如何报名参加问答题考试
24.6 如何获得开发人员考试的程序设计作业
24.7 完成开发人员作业的策略
第25章 用Java进行开发
25.1 风格与习惯
25.1.1 标识符
25.1.2 注释
25.2 错误处理
25.3 有关Java文档的问题
25.3.1 javadoc
25.3.2 javadoc帮助
25.4 javadoc标签
25.4.1 变量
25.4.2 类
25.4.3 方法
25.5 使用javadoc注释和标签的规则
25.6 有关javadoc注释和标签的例子
25.7 抽象类
25.8 接口
25.8.1 行为分组
25.8.2 实施自己的API
25.8.3 识别意图
25.8.4 练习25-1
25.9 包
25.9.1 创建包
25.9.2 限制访问
25.9.3 定义子系统
25.9.4 练习25-2
25.10 定义访问方法
25.10.1 练习25-3
25.11 练习答案
25.12 复习题
25.13 复习题答案
第26章 访问和管理数据库
26.1 创建自己的数据库
26.2 从多个客户端访问数据库
26.3 两层和三层结构
26.4 使用Java API
26.5 远程方法调用
26.6 定义远程接口
26.7 定义远程类
26.7.1 定义类、接口和构造器
26.7.2 安装安全管理器,注册引导程序命名服务
26.8 调用远程对象
26.8.1 存根和大纲
26.8.2 开始实施
26.8.3 练习26-1
26.9 Java数据库连接
26.9.1 需要使用驱动程序
26.9.2 使用ODBC
26.9.3 打开与数据库的连接
26.9.4 与数据库交互
26.10 使用ODBC操作Microsoft Access的例子
26.10.1 练习26-2
26.11 练习答案
26.12 复习题
26.13 复习题答案
第27章 网络编程和通信
27.1 TCP/IP入门
27.2 端口和套接字
27.3 流
27.4 设计服务器和客户机
27.5 处理多客户机
27.6 客户机的问题
27.7 网络包
27.7.1 InetAddress
27.7.2 Socket和ServerSocket
27.8 Internet流
27.9 客户-服务器实例
27.10 用Java编写单客户服务器程序
27.10.1 server()
27.10.2 client()
27.10.3 action()
27.10.4 SingleChatRecieve的run()方法
27.10.5 清理
27.11 用Java编写多客户服务器程序
27.11.1 server()
27.11.2 run()
27.11.3 broadcast()
27.11.4 cleanup()
27.11.5 客户机
27.11.6 清理
27.11.7 练习27-1
27.11.8 练习27-2
27.12 统一资源定位符
27.13 练习答案
27.14 复习题
27.15 复习题答案
第28章 设计应用程序界面
28.1 混合和匹配
28.1.1 使用布局管理器
28.1.2 练习28-1
28.2 改变用户界面
28.2.1 文本
28.2.2 字体和颜色
28.2.3 替换组件
28.2.4 练习28-2
28.3 使用框架
28.3.1 关闭框架
28.3.2 将小程序做成独立的应用程序
28.3.3 练习28-3
28.4 练习答案
28.5 复习题
28.6 复习题答案
第29章 Sun认证开发人员编程作业练习
29.1 任务说明
29.2 系统原型规范
29.3 迄今为止所完成的设计
29.4 新设计
29.5 迄今完成的代码
29.6 代码的完善
29.6.1 数据库
29.6.2 服务器
29.6.3 客户程序
29.6.4 用户界面
29.7 协议
29.7.1 实施新预定
29.7.2 删除一条乘客预定信息
29.7.3 查找某乘客座次
29.7.4 查找所有空座位
29.7.5 查询乘客列表
29.8 用户界面的外观
29.8.1 更新乘客列表
29.9 最后的建议
29.10 客户端的可选答案
29.10.1 Client.java
29.10.2 TopFrame.java
29.10.3 EdnaUI.java
29.10.4 NewPassenger.java
29.10.5 DeletePassenger.java
29.11 服务器的可选答案
29.11.1 Server.java (包括ClientServerThread)
29.11.2 DB.java中遗漏的三个方法
第30章 Sun认证开发人员问答题考试练习
30.1 问题
30.2 答案
附 录
附录A 光盘中的内容
附录B JDK简介