第1章 Java语言与面向对象的程序设计 1
1.1 Java语言简介 1
1.1.1 Java语言的发展 1
1.1.2 Java三大平台 2
1.1.3 Java语言的特点 3
1.1.4 Java和C、C+++比较 5
1.2 面向对象程序设计 6
1.2.1 面向对象概述 6
1.2.2 对象、类与实体 7
1.2.3 对象的状态与行为 7
1.2.4 对象的关系 8
1.2.5 面向对象的软件开发过程 9
习题 10
第2章 简单的Java程序 11
2.1 Application与Applet程序 11
2.1.1 Application程序 11
2.1.2 Applet程序 12
2.1.3 Java程序的基本构成 13
2.2 程序的编辑、编译与运行 15
2.2.1 Java工具包JDK 15
2.2.2 Application的编辑、编译与运行 15
2.2.3 Applet的编辑、编译与运行 18
2.2.4 使用iar打包程序 20
2.3 Java程序中的基本输入与输出 21
2.3.1 字符界面的输入与输出 21
2.3.2 Applet图形界面输入与输出 23
2.3.3 Application图形界面输入与输出 24
2.3.4 同时作为Application与Applet的程序 26
2.4 Java集成开发环境 27
2.4.1 几种辅助工具的使用 27
2.4.2 几种集成工具的使用 29
2.4.3 建构工具及代码混淆 33
习题 34
第3章 数据运算、流程控制和数组 35
3.1 数据类型、变量与常量 35
3.1.1 数据类型 35
3.1.2 标识符 36
3.1.3 常量 36
3.1.4 变量 37
3.1.5 程序的注释 38
3.2 运算符与表达式 39
3.2.1 算术运算符 40
3.2.2 关系运算符 42
3.2.3 逻辑运算符 42
3.2.4 位运算符 43
3.2.5 赋值与强制类型转换 47
3.2.6 条件运算符 48
3.2.7 表达式及运算的优先级、结合性 48
3.3 流程控制语句 49
3.3.1 结构化程序设计的三种基本流程 49
3.3.2 简单语句 50
3.3.3 分支语句 50
3.3.4 循环语句 56
3.3.5 跳转语句 61
3.4 数组 63
3.4.1 一维数组 63
3.4.2 多维数组 67
3.4.3 数组与增强的for语句 69
3.4.4 数组的复制 69
习题 69
第4章 类、包和接口 71
4.1 类、字段、方法 71
4.1.1 定义类中的字段和方法 71
4.1.2 构造方法与对象的创建 73
4.1.3 使用对象 74
4.1.4 方法的重载 74
4.1.5 this的使用 76
4.2 类的继承 77
4.2.1 派生子类 77
4.2.2 字段的继承、隐藏与添加 78
4.2.3 方法的继承、覆盖与添加 78
4.2.4 super的使用 79
4.2.5 父类对象与子类对象的转换 80
4.3 包 83
4.3.1 package语句 83
4.3.2 import语句 84
4.3.3 编译和运行包中的类 85
4.3.4 CLASSPATH变量 85
4.4 访问控制符 86
4.4.1 成员的访问控制符 86
4.4.2 类的访问控制符 90
4.4.3 setter与getter 91
4.4.4 构造方法的隐藏 91
4.5 非访问控制符 91
4.5.1 static 92
4.5.2 final 94
4.5.3 abstract 96
4.5.4 其他修饰符 98
4.5.5 一个应用模式——单子 98
4.6 接口 99
4.6.1 接口的概念 99
4.6.2 定义接口 100
4.6.3 实现接口 101
4.6.4 对接口的引用 102
4.6.5 Java8对接口的扩展 103
4.7 枚举 103
4.7.1 枚举的基本用法 103
4.7.2 枚举的深入用法 104
习题 105
第5章 深入理解Java语言 106
5.1 变量及其传递 106
5.1.1 基本类型变量与引用型变量 106
5.1.2 字段变量与局部变量 107
5.1.3 变量的传递 108
5.1.4 变量的返回 109
5.1.5 不定长参数变量 109
5.2 多态与虚方法调用 110
5.2.1 上溯造型 110
5.2.2 虚方法调用 111
5.2.3 动态类型确定 113
5.3 对象构造与初始化 114
5.3.1 调用本类或父类的构造方法 114
5.3.2 构造方法的执行过程 117
5.3.3 构造方法内部调用的方法的多态性 118
5.3.4 实例初始化与静态初始化 119
5.4 对象清除与垃圾回收 120
5.4.1 对象的自动清除 120
5.4.2 System.gc()方法 121
5.4.3 finalize()方法 121
5.5 内部类与匿名类 122
5.5.1 内部类 123
5.5.2 方法中的局部类及匿名类 126
5.5.3 匿名类 127
5.6 Lambda表达式与函数式接口 128
5.6.1 Lambda表达式的书写与使用 128
5.6.2 函数式接口 129
5.6.3 高阶函数 132
5.7 注解与反射 133
5.7.1 注解的定义与使用 133
5.7.2 反射 135
习题 140
第6章 异常处理 142
6.1 异常处理 142
6.1.1 异常的概念 142
6.1.2 捕获和处理异常 144
6.1.3 应用举例 147
6.2 创建用户自定义异常类 149
6.2.1 自定义异常类 149
6.2.2 重抛异常及异常链接 151
6.3 异常与资源管理 153
6.3.1 使用finally 153
6.3.2 使用try…with…resource 153
6.4 断言及程序的测试 154
6.4.1 使用assert 155
6.4.2 程序的测试及JUnit 155
习题 156
第7章 工具类及常用算法 157
7.1 Java语言基础类 157
7.1.1 JavaAPI 157
7.1.2 Object类 159
7.1.3 基本数据类型的包装类 162
7.1.4 Math类 163
7.1.5 System类 164
7.2 字符串和日期 165
7.2.1 String类 165
7.2.2 StringBuffer类 169
7.2.3 StringTokenizer类 170
7.2.4 日期相关类 171
7.3 集合类 173
7.3.1 集合与CollectionAPI 173
7.3.2 Set接口及HashSet、TreeSet类 174
7.3.3 List接口及ArrayList,Vector类 175
7.3.4 栈与队列 177
7.3.5 键-值集合及Map接口 179
7.4 泛型及集合遍历 181
7.4.1 泛型 181
7.4.2 装包与拆包 184
7.4.3 Iterator及Enumeration 184
7.4.4 集合与增强的for语句 186
7.5 排序与查找 188
7.5.1 使用Arrays类 188
7.5.2 使用Collections类 190
7.5.3 编写排序程序 193
7.6 遍试、迭代、递归及回溯 196
7.6.1 遍试 197
7.6.2 迭代 199
7.6.3 递归 201
7.6.4 回溯 206
习题 207
第8章 线程与并行编程 210
8.1 线程的创建与运行 210
8.1.1 Java中的线程 210
8.1.2 创建线程对象的两种方法 211
8.1.3 多线程 213
8.1.4 使用Timer类 215
8.1.5 应用举例 216
8.2 线程的控制与同步 220
8.2.1 线程的状态与生命周期 220
8.2.2 对线程的基本控制 221
8.2.3 synchronized关键字 226
8.2.4 线程间的同步控制 229
8.3 并行API 234
8.3.1 并行集合 234
8.3.2 原子变量 236
8.3.3 读写锁 237
8.3.4 Executor与Future 238
8.4 流式操作 240
8.4.1 使用流的基本方法 240
8.4.2 流及操作的种类 243
习题 245
第9章 流、文件及基于文本的应用 246
9.1 流式输入与输出 246
9.1.1 字节流与字符流 246
9.1.2 节点流和处理流 248
9.1.3 标准输入和标准输出 250
9.1.4 文本文件及二进制文件流应用示例 252
9.1.5 对象序列化 255
9.2 文件及目录 257
9.2.1 文件与目录管理 257
9.2.2 使用NIO2文件系统API 259
9.2.3 文件输入与输出流 261
9.2.4 RandomAccessFile类 263
9.3 基于文本的应用 265
9.3.1 Java Application命令行参数 265
9.3.2 环境参数 266
9.3.3 处理Deprecated的API 267
9.4 正则表达式 268
9.4.1 正则表达式的基本元素 268
9.4.2 Pattern及Matcher 269
9.5 XML处理 271
9.5.1 XML基本概念 271
9.5.2 XML编程 274
习题 279
第10章 图形用户界面 280
10.1 界面组件 280
10.1.1 图形用户界面概述 280
10.1.2 界面组件分类 281
10.1.3 Component的方法 283
10.2 布局管理 284
10.2.1 FlowLayout 284
10.2.2 BorderLayout 285
10.2.3 CardLayout 286
10.2.4 GridLayout 287
10.2.5 GridBagLayout 288
10.2.6 通过嵌套来设定复杂的布局 288
10.3 事件处理 289
10.3.1 事件及事件监听器 289
10.3.2 事件监听器的注册 291
10.3.3 事件适配器 294
10.3.4 内部类及匿名类在事件处理中的应用 295
10.4 常用组件的使用 297
10.4.1 标签、按钮与动作事件 298
10.4.2 文本框、文本区域与文本事件 299
10.4.3 单、复选按钮,列表与选择事件 300
10.4.4 调整事件与滚动条 304
10.4.5 鼠标、键盘事件与画布 306
10.4.6 Frame与窗口事件 307
10.4.7 Panel与容器事件 308
10.4.8 组件事件、焦点事件与对话框 310
10.5 绘图、图像和动画 311
10.5.1 绘制图形 311
10.5.2 显示文字 314
10.5.3 控制颜色 315
10.5.4 显示图像及实现动画 316
10.6 Applet 318
10.6.1 Applet的基本工作原理 318
10.6.2 Applet类 319
10.6.3 HTML文件参数传递 320
10.6.4 Applet的局限 321
10.7 Swing组件的使用 326
10.7.1 Swing的特点 326
10.7.2 几种Swing组件介绍 327
10.7.3 Swing组件与线程 329
10.8 基于GUI的应用程序 330
10.8.1 使用可视化设计工具 330
10.8.2 菜单的定义与使用 331
10.8.3 菜单、工具条及对话框的应用 334
习题 340
第11章 网络、多媒体和数据库编程 342
11.1 Java网络编程 342
11.1.1 使用URL 342
11.1.2 用Java实现底层网络通信 344
11.1.3 实现多线程服务器程序 346
11.1.4 Java的E-mail编程 353
11.1.5 使用第三方的库 358
11.2 多媒体编程 358
11.2.1 在Applet中获取声音与图像 358
11.2.2 Java图像编程 360
11.2.3 Java声音编程 362
11.2.4 JMF简介 362
11.3 Java数据库编程 363
11.3.1 Java访问数据库的基本步骤 363
11.3.2 使用JTable显示数据表 367
11.4 Java EE及Java ME简介 370
11.4.1 Java EE简介 371
11.4.2 Java ME简介 372
习题 374
附录A Java语言各版本增加的重要特性 375
参考文献 376