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