
本书是结合作者的考试经验和多年的Java培训讲课经验编写而成的、针对SCJP考试的培训指导书。全书分14章,详细地介绍了用Java编程语言创建Java应用程序,对象及成员的声明和访问控制,流程控制和异常处理,安全性和Java虚拟机(JVM),Java语言面向对象的特点,开发图形用户界面(GUI),利用Java支持的多种布局管理,Java的事件处理机制,Java语言的鼠标输入、文本、窗口和菜单窗口组件,使用Java的异常处理来控制程序执行和定义用户自己的异常事件,Java语言先进的面向对象特点(包括方法重载、方法覆盖、抽象类、接口、final、static和访问控制),实现文件的输入输出(I/O),使用Java语言内在的线程模式来控制多线程,Java的各种常用包的使用。
本书知识点全面,实例丰富实用,结合真题讲解,可读性较强,是很好的SCJP培训班教材,适合准备参加SCJP考试认证的考生选用,也可作为Java程序爱好者的参考书。
为了进一步扩大Java的影响力以及认证Java程序开发者的水平,Sun公司推出了一系列的Java培训及认证考试,最基本的认证考试就是SCJP(Sun Certified Java Programmer)考试,相应的培训课程是SL-275 Java语言编程。SCJP考试检测Java程序员对Java程序设计概念的理解及相关语法知识,内容偏重于Java语法及JDK的内容,只有具备了扎实的Java语言知识才能顺利通过考试。通过这个考试以后,Java程序员就可以进行后续的Sun认证考试,如Sun认证企业建筑师,Sun认证Web开发员这些更高层次的认证考试了,所以SCJP是通向更高级的认证基础,它的重要性可想而知。
本书针对SCJP最新考试大纲的要求,将各个知识点按照循序渐进的方式分14章进行介绍。本书的每一章都列出了本章所对应的SCJP的考点以及相应的典型试题,便于读者有针对性地学习。第1章介绍了Java语言的特点,环境的搭建,以及Java应用程序的创建、编译和运行;第2章介绍了如何声明一个源文件、类、方法和属性,对象成员的访问,Java的构造器,package和import语句的用法,访问修饰符的用法和区别,Java注释和API文档的使用;第3章介绍了Java标识符、关键字以及Java的初始化;第4章介绍了Java各种运算符、表达式及流程控制语句的使用;第5章介绍了数组如何声明、创建初始化以及数组如何访问和复制;第6章介绍了类成员如何访问,类如何实现继承,以及在继承过程中如何进行成员的访问和对象的识别;第7章介绍了Java的高级类特征,包括Static和Final的高级特征、抽象类和接口的各种用法;第8章介绍了Java异常的概念和异常处理机制;第9章介绍了Java如何实现字符界面的应用设计;第10章介绍了如何利用AWT进行图形界面的设计;第11章介绍了Java2 SDK的事件处理机制;第12章介绍了如何实现GUI的应用编程;第13章介绍了线程的概念、线程的创建访问和控制问题;第14章介绍了Java高级输入输出流。
本书知识点介绍全面,实例丰富实用,可读性较强,非常适合准备参加SCJP考试认证的人员选用,同时也是广大Java程序爱好者的首选参考书。
本书由张海涛、张群山主笔,苏春、贺军、龚亚萍、贺民、王炯、许福海、彭海龙、裘蕾、张欣、黄志雄、李季、王淼、梁德城、孟丽艳、陈安南、李晓春、李志云、戴军等在教材预讲、差错、程序调试等方面做了大量工作,在此表示感谢!
由于时间仓促,且作者经验和水平有限,本书错漏之处在所难免,欢迎广大读者批评指正。
编 者
第1章 Java编程起步 1
1.1 什么是Java 1
1.2 Java语言的特点 2
1.3 构造Java的运行环境 4
1.4 构造第一个Java应用程序 8
1.5 Java虚拟机的工作过程 10
1.6 巩固所学知识 11
1.6.1 经典试题分析与解答 11
1.6.2 习题 13
1.7 小结 14
第2章 面向对象编程 15
2.1 面向对象技术 16
2.2 类的声明 16
2.2.1 类 16
2.2.2 声明类 17
2.3 声明属性 18
2.4 声明方法 18
2.5 对象成员的访问 19
2.6 构造器 20
2.7 package和import语句 20
2.8 使用访问修饰符 21
2.9 封装对象 25
2.10 注释语句与API文档使用 25
2.10.1 注释语句 25
2.10.2 API文档的使用 30
2.11 巩固所学知识 30
2.11.1 经典试题分析与解答 30
2.11.2 习题 33
2.12 小结 33
第3章 标识符、关键字和类型 35
3.1 标识符、关键字 36
3.1.1 标识符 36
3.1.2 关键字 36
3.2 基本数据类型和引用数据类型 37
3.2.1 基本数据类型 37
3.2.2 引用数据类型 38
3.3 变量 38
3.3.1 变量的声明与赋值 38
3.3.2 变量的作用域 40
3.3.3 变量的初始化 41
3.4 对象的基本初始化过程 42
3.5 值传递与this关键字 44
3.6 注释、分号、块及空白的处理 45
3.7 巩固所学知识 46
3.7.1 经典试题分析与解答 46
3.7.2 习题 51
3.8 小结 51
第4章 运算符、表达式与流程控制语句 53
4.1 运算符与表达式 54
4.1.1 优先级 54
4.1.2 赋值与强制类型转换 54
4.1.3 算术运算符 55
4.1.4 关系运算符 58
4.1.5 逻辑运算符 58
4.1.6 位运算符 59
4.1.7 移位运算符 60
4.1.8 其他运算符 61
4.2 字符串连接与类型转换 63
4.3 流程控制语句 63
4.3.1 if-else语句 63
4.3.2 switch-case语句 64
4.3.3 do-while循环语句 65
4.3.4 for语句 66
4.3.5 break、continue及标识语句 67
4.4 巩固所学知识 68
4.4.1 经典试题分析与解答 68
4.4.2 习题 73
4.5 小结 74
第5章 数组 75
5.1 数组声明 75
5.2 创建和初始化数组 76
5.2.1 数组的创建 76
5.2.2 数组的初始化 77
5.3 多维数组的声明 77
5.4 为多维数组分配内存空间 78
5.5 数组的访问 79
5.6 实现数组复制 80
5.7 操作数组对象 80
5.8 巩固所学知识 82
5.8.1 经典试题分析与解答 82
5.8.2 习题 84
5.9 小结 84
第6章 类及其继承 85
6.1 对象、类与继承的关系 86
6.1.1 对象和类 86
6.1.2 类的层次性 86
6.1.3 继承及其单根性 87
6.1.4 修饰符的回顾 88
6.2 类成员存取的访问控制 88
6.3 方法的过载与重写 88
6.3.1 成员变量的隐藏 89
6.3.2 方法重写 89
6.3.3 方法的过载或重载 90
6.4 多态 91
6.5 异构集合与对象的识别 92
6.6 构造器的过载与继承 94
6.7 Object类介绍、==操作符、toString()方法 96
6.7.1 Object类 96
6.7.2 对象的比较 97
6.7.3 toString()方法 98
6.8 继承类的内存分配与初始化顺序 99
6.9 巩固所学知识 102
6.9.1 经典试题分析与解答 102
6.9.2 习题 110
6.10 小结 110
第7章 高级类特征 112
7.1 static关键字及用法 113
7.2 final关键字及其用法 115
7.2.1 final变量 115
7.2.2 final与static的搭配使用 116
7.2.3 final修饰方法 117
7.2.4 final修饰类 117
7.3 抽象类的使用 117
7.4 接口的使用 118
7.5 synchronized、native、transient、volatile的使用 120
7.6 内部类 121
7.6.1 作用域与非静态内部类的访问 121
7.6.2 静态内部类的访问 126
7.7 巩固所学知识 128
7.7.1 经典试题分析与解答 128
7.7.2 习题 133
7.8 小结 133
第8章 异常 135
8.1 异常基本概念 135
8.1.1 错误处理 136
8.1.2 错误处理机制 136
8.2 异常的分类与产生原因 138
8.3 处理异常的方法及其原理 138
8.3.1 异常的抛出 139
8.3.2 异常的捕捉与处理机制 141
8.4 常见异常介绍 144
8.5 异常在方法重写中的应用 144
8.6 创建自己的异常 145
8.7 巩固所学知识 146
8.7.1 经典试题分析与解答 146
8.7.2 习题 148
8.8 小结 149
第9章 字符用户界面的应用设计 150
9.1 使用命令行进行程序交互 151
9.1.1 命令行参数的接收 151
9.1.2 使用System类进行字符界面的交互 152
9.2 使用系统属性进行字符界面的交互 153
9.3 System.in对象的读取 155
9.4 文件与字符界面的交互 156
9.4.1 File的几个构造器 156
9.4.2 File对象的常用方法 156
9.5 Math、String、StringBuffer类的应用 159
9.5.1 Math数学类 159
9.5.2 String类 161
9.5.3 StringBuffer类 166
9.6 集合 168
9.6.1 新版集合 169
9.6.2 早期的集合对象 172
9.7 javadoc、jar工具命令 176
9.8 折旧的概念 177
9.9 巩固所学知识 177
9.9.1 经典试题分析与解答 177
9.9.2 习题 183
9.10 小结 183
第10章 图形用户界面设计 184
10.1 GUI与AWT的关系 185
10.2 构成图形用户界面 185
10.3 窗口和面板 186
10.3.1 窗口 186
10.3.2 面板 189
10.3.3 滚动面板 190
10.4 布局管理器 191
10.4.1 布局管理器的分类 191
10.4.2 FlowLayout布局管理器 191
10.4.3 BorderLayout布局管理器 192
10.4.4 CardLayout布局管理器 195
10.4.5 GridLayout布局管理器 196
10.4.6 GridBagLayout布局管理器 197
10.5 使用AWT包绘图 200
10.6 综合应用实例:绘制统计图中的柱状图与折线图 202
10.7 巩固所学知识 203
10.7.1 经典试题分析与解答 203
10.7.2 习题 209
10.8 小结 209
第11章 图形用户界面的事件处理 211
11.1 事件的概念 211
11.2 Java2 SDK事件模型 212
11.3 图形用户界面的行为事件 213
11.3.1 动作事件 214
11.3.2 调整事件 215
11.3.3 焦点事件 215
11.3.4 鼠标事件 215
11.3.5 键盘事件 216
11.3.6 常用组件的事件侦听器 216
11.4 事件授权 218
11.5 使用事件适配器实现事件处理 220
11.6 使用内部类实现事件处理 222
11.7 使用匿名类实现事件处理 223
11.8 巩固所学知识 224
11.8.1 经典试题分析与解答 224
11.8.2 习题 226
11.9 小结 226
第12章 基于图形用户界面的应用编程 227
12.1 菜单 228
12.1.1 菜单的组成 228
12.1.2 制作下拉式菜单 228
12.1.3 制作复选菜单项 231
12.1.4 制作弹出式菜单 233
12.2 复选框 235
12.3 单选框 237
12.4 下拉列表 238
12.5 列表 240
12.6 文本域与文本区域 242
12.7 滚动条 244
12.8 画布 246
12.9 对话框 248
12.10 综合应用实例 251
12.10.1 实例1:扇形统计图的绘制 251
12.10.2 实例2:机械表的设计 252
12.11 巩固所学知识 255
12.11.1 经典试题分析与解答 255
12.11.2 习题 256
12.12 小结 256
第13章 线程 258
13.1 线程的概念 259
13.1.1 进程与线程的概念 259
13.1.2 进程与线程的差别 259
13.1.3 多线程的特点 259
13.1.4 主线程 260
13.2 线程的生命周期 260
13.3 创建线程的两种方法 261
13.3.1 Thread类 261
13.3.2 Runnable接口 262
13.4 线程的优先级及线程调度机制 263
13.5 线程的基本控制 264
13.5.1 退让 265
13.5.2 休眠 266
13.5.3 线程的挂起、恢复和停止 267
13.5.4 联接方法 269
13.6 线程组 270
13.7 线程的同步问题 271
13.8 线程的死锁问题 273
13.9 线程间如何进行交互 273
13.10 生产消费模型的设计 276
13.11 线程的其他控制方法 278
13.12 巩固所学知识 279
13.12.1 经典试题分析与解答 279
13.12.2 习题 282
13.13 小结 282
第14章 高级输入输出流 284
14.1 输入输出基础 284
14.2 字节流 285
14.2.1 InputStream和OutputStream 285
14.2.2 FileInputStream和FileOutputStream 286
14.2.3 ByteArrayInputStream和ByteArrayOutputStream 287
14.2.4 PipedInputStream和PipedOutputStream 288
14.2.5 FilterInputStream和FilterOutputStream 290
14.2.6 BufferedInputSream和BufferedOutputStream 290
14.2.7 DataInputStream和DataOutputStream 290
14.3 字符流 292
14.3.1 Reader和Writer 293
14.3.2 InputStreamReader和OutputStreamWriter 293
14.3.3 FileReader和FileWriter 294
14.3.4 BufferedReader和BufferedWriter 294
14.3.5 PrintWriter 295
14.3.6 StringReader和StringWriter 295
14.3.7 PipedReader和PipedWriter 296
14.4 文件的随机存取 296
14.5 巩固所学知识 297
14.5.1 经典试题分析与解答 297
14.5.2 习题 300
14.6 小结 300
附录A Java模拟试题和答案 301
A1 模拟试题 301
A2 模拟试题答案 316