第1章 Java语言概述 1
1.1 Java起源与发展 1
1.1.1 Java的起源 1
1.1.2 Java的发展历程 1
1.1.3 Java语言的特点 2
1.2 面向对象编程概述 4
1.2.1 OOP的产生 4
1.2.2 OOP的优势 5
1.2.3 OO的主要应用 5
1.3 简单的Java程序 6
1.3.1 JDK的下载与安装 6
1.3.2 第一个简单的程序 6
1.3.3 第一个程序分析 8
1.3.4 集成开发环境 9
1.4 Java字节码与虚拟机 10
1.4.1 Java平台与Java虚拟机 10
1.4.2 Java程序的运行机制 10
1.5 Java关键字和标识符 11
1.5.1 Java关键字 11
1.5.2 Java标识符 11
1.5.3 Java编码规范 12
1.6 小结 13
1.7 习题 13
第2章 数据类型和运算符 15
2.1 简单程序的开发 15
2.2 数据类型 16
2.2.1 Java数据类型 16
2.2.2 整数类型 18
2.2.3 浮点型 19
2.2.4 字符型 21
2.2.5 布尔型数据 22
2.2.6 字符串型数据 23
2.3 常用运算符 23
2.3.1 算术运算符 23
2.3.2 关系运算符 25
2.3.3 位运算符 26
2.3.4 逻辑运算符 28
2.3.5 赋值运算符 29
2.3.6 运算符的优先级和结合性 30
2.4 数据类型转换 31
2.4.1 自动类型转换 31
2.4.2 强制类型转换 32
2.4.3 表达式中类型自动提升 33
2.5 小结 33
2.6 习题 34
第3章 程序流程控制 36
3.1 分支结构 36
3.1.1 if语句结构 36
3.1.2 条件运算符 38
3.1.3 switch语句结构 39
3.2 循环结构 41
3.2.1 while循环结构 41
3.2.2 do-while循环结构 43
3.2.3 for循环结构 44
3.2.4 循环结构的嵌套 45
3.2.5 break语句和continue语句 45
3.3 案例研究 48
3.3.1 一位数加法练习程序 48
3.3.2 任意抽取一张牌 49
3.3.3 求最大公约数 49
3.3.4 打印输出若干素数 50
3.3.5 打印一年的日历 51
3.4 小结 53
3.5 习题 53
第4章 类和对象基础 56
4.1 面向对象基础 56
4.1.1 面向对象的基本概念 56
4.1.2 面向对象的基本特征 57
4.2 Java类与对象 58
4.2.1 类的定义 59
4.2.2 对象的使用 62
4.2.3 用UML图表示类 63
4.2.4 理解栈与堆 64
4.3 方法设计 64
4.3.1 如何设计方法 64
4.3.2 方法的调用 66
4.3.3 方法重载 66
4.3.4 构造方法 67
4.3.5 方法参数的传递 70
4.4 static修饰符 71
4.4.1 实例变量和静态变量 72
4.4.2 实例方法和静态方法 73
4.4.3 static修饰符的一个应用 74
4.4.4 方法的递归调用 75
4.5 Math类 76
4.6 对象初始化和清除 78
4.6.1 实例变量的初始化 79
4.6.2 静态变量的初始化 81
4.6.3 垃圾回收器 82
4.6.4 变量作用域和生存期 83
4.7 包与类的导入 84
4.7.1 包的管理 84
4.7.2 类的导入 85
4.7.3 Java编译单元 86
4.8 小结 87
4.9 习题 87
第5章 数组及应用 93
5.1 创建和使用数组 93
5.1.1 数组定义 93
5.1.2 数组的使用 95
5.1.3 数组元素的复制 96
5.1.4 数组作为方法参数和返回值 98
5.1.5 实例:随机抽取4张牌 98
5.1.6 实例:一个整数栈类 99
5.1.7 可变参数的方法 101
5.1.8 数组的排序 102
5.1.9 数组的查找 103
5.2 多维数组 104
5.2.1 多维数组定义 104
5.2.2 不规则数组 105
5.2.3 数组元素的使用 105
5.2.4 实例:打印杨辉三角形 106
5.2.5 实例:矩阵乘法 107
5.3 小结 108
5.4 习题 109
第6章 字符串及应用 113
6.1 String类 113
6.1.1 创建String类对象 113
6.1.2 字符串类几个常用方法 114
6.1.3 字符串查找 115
6.1.4 字符串与数组之间的转换 116
6.1.5 字符串的解析 117
6.1.6 字符串比较 117
6.1.7 String对象的不变性 119
6.2 命令行参数 120
6.3 StringBuilder类 121
6.3.1 创建StringBuilder对象 121
6.3.2 StringBuilder的访问和修改 121
6.3.3 运算符“+”的重载 123
6.4 正则表达式 123
6.4.1 模式匹配 123
6.4.2 Pattern类 125
6.4.3 Matcher类 126
6.4.4 量词和捕获组 128
6.5 小结 129
6.6 习题 130
第7章 Java面向对象特征 133
7.1 类的继承 133
7.1.1 类继承的实现 133
7.1.2 方法覆盖 135
7.1.3 super关键字的使用 136
7.1.4 子类的构造方法及调用过程 137
7.1.5 final修饰符 139
7.2 Object类 140
7.2.1 toString方法 141
7.2.2 equals方法 141
7.2.3 hashCode方法 142
7.2.4 clone方法 142
7.2.5 finalize方法 143
7.3 基本类型包装类 144
7.3.1 Character类 144
7.3.2 Boolean类 145
7.3.3 Number类及其子类 145
7.3.4 创建数值类对象 146
7.3.5 数值类的常量 147
7.3.6 自动装箱与自动拆箱 147
7.3.7 字符串转换为基本类型 148
7.3.8 BigInteger和BigDecimal类 149
7.4 封装性与访问修饰符 150
7.4.1 类的访问权限 150
7.4.2 类成员的访问权限 151
7.5 抽象类与接口 152
7.5.1 抽象方法和抽象类 152
7.5.2 接口及其定义 154
7.5.3 接口的实现 155
7.6 对象转换与多态性 156
7.6.1 对象转换 156
7.6.2 instanceof运算符 158
7.6.3 多态性与动态绑定 158
7.6.4 接口类型的使用 159
7.7 小结 160
7.8 习题 160
第8章 异常处理与断言 168
8.1 异常与异常类 168
8.1.1 异常的概念 168
8.1.2 Throwable类及其子类 169
8.2 异常处理机制 171
8.2.1 异常的抛出与捕获 171
8.2.2 try-catch-finally语句 172
8.2.3 用catch捕获多个异常 174
8.2.4 声明方法抛出异常 175
8.2.5 用throw语句抛出异常 177
8.2.6 try-with-resources语句 177
8.3 自定义异常类 180
8.4 断言机制 181
8.4.1 断言概述 181
8.4.2 启动和关闭断言 182
8.4.3 何时使用断言 182
8.4.4 一个使用断言的示例 183
8.5 小结 184
8.6 习题 185
第9章 输入输出 189
9.1 文件I/O概述 189
9.1.1 文件系统和路径 189
9.1.2 Path对象 190
9.2 Files类操作 191
9.2.1 创建和删除目录和文件 191
9.2.2 文件属性操作 192
9.2.3 文件和目录的复制与移动 194
9.2.4 获取目录的对象 195
9.2.5 小文件的读写 195
9.3 字节I/O流 197
9.3.1 InputStream类和OutputStream类 198
9.3.2 读写二进制数据 199
9.3.3 DataInputStream类和DataOutputStream类 202
9.3.4 文本文件和二进制文件 204
9.3.5 用PrintStream输出文本 205
9.3.6 格式化输出 206
9.3.7 使用Scanner类读取文本文件 208
9.4 字符I/O流 209
9.4.1 Reader类和Writer类 210
9.4.2 BufferedReader类和BufferedWriter类 210
9.4.3 InputStreamReader类和OutputStreamWriter类 212
9.4.4 PrintWriter类 213
9.4.5 标准输入输出流 213
9.5 随机访问文件 214
9.5.1 创建SeekableByteChannel对象 214
9.5.2 SeekableByteChannel接口的方法 214
9.5.3 ByteBuffer类 215
9.6 对象序列化 217
9.6.1 对象序列化与对象流 217
9.6.2 向ObjectOutputStream中写入对象 218
9.6.3 从ObjectInputStream中读出对象 218
9.7 小结 220
9.8 习题 221
第10章 集合与泛型 223
10.1 集合框架 223
10.1.1 Collection接口及操作 223
10.1.2 集合元素迭代 224
10.1.3 List接口及实现类 225
10.1.4 Set接口及实现类 229
10.1.5 对象顺序 232
10.1.6 Queue接口及实现类 235
10.1.7 集合转换 237
10.2 Map接口及实现类 238
10.2.1 Map接口 238
10.2.2 Map接口的实现类 239
10.3 Arrays类和Collections类 242
10.3.1 Arrays类 243
10.3.2 Collections类 247
10.4 泛型介绍 249
10.4.1 为何引进泛型 249
10.4.2 泛型类型 250
10.4.3 泛型方法 251
10.4.4 通配符(?)的使用 252
10.4.5 有界类型参数 253
10.4.6 类型擦除 254
10.5 小结 255
10.6 习题 255
第11章 嵌套类、枚举和注解 259
11.1 嵌套类 259
11.1.1 静态嵌套类 259
11.1.2 成员内部类 261
11.1.3 局部内部类 262
11.1.4 匿名内部类 263
11.2 枚举类型 264
11.2.1 枚举类型的定义 264
11.2.2 枚举类型的方法 265
11.2.3 枚举在switch 中的应用 265
11.2.4 枚举类型的构造方法 266
11.3 注解类型 267
11.3.1 注解概述 267
11.3.2 标准注解 268
11.3.3 定义注解类型 270
11.3.4 标准元注解 271
11.4 小结 272
11.5 习题 273
第12章 国际化与本地化 276
12.1 国际化(i18n) 276
12.1.1 Locale类 276
12.1.2 TimeZone类 278
12.2 时间、日期和日历 279
12.2.1 Date类 279
12.2.2 Calendar类 280
12.2.3 GregorianCalendar类 281
12.3 数据格式化 282
12.3.1 DateFormat类 282
12.3.2 NumberFormat类 285
12.4 资源包的使用 287
12.4.1 属性文件 287
12.4.2 使用ResourceBundle类 288
12.4.3 使用ListResourceBundle类 290
12.5 小结 291
12.6 习题 291
第13章 多线程基础 293
13.1 线程与线程类 293
13.1.1 线程的概念 293
13.1.2 Thread类和Runnable接口 294
13.2 线程的创建 295
13.2.1 继承Thread类 295
13.2.2 实现Runnable接口 296
13.2.3 主线程 296
13.3 线程的状态与调度 297
13.3.1 线程的状态 297
13.3.2 线程的优先级和调度 298
13.3.3 控制线程的结束 299
13.4 线程同步与对象锁 300
13.4.1 资源共享问题 301
13.4.2 对象锁的实现 302
13.4.3 线程间的同步控制 303
13.5 小结 307
13.6 习题 308
第14章 图形用户界面 312
14.1 Swing概述 312
14.2 组件和容器 312
14.2.1 组件 313
14.2.2 容器 313
14.2.3 一个简单的Swing程序 313
14.2.4 顶级容器的使用 315
14.3 容器布局 316
14.3.1 FlowLayout布局管理器 316
14.3.2 BorderLayout布局管理器 317
14.3.3 GridLayout布局管理器 318
14.3.4 其他布局管理器 319
14.3.5 面板容器及容器的嵌套 319
14.4 在面板中绘图 321
14.4.1 在面板中绘图 321
14.4.2 Graphics类 321
14.4.3 Color类 321
14.4.4 Font类 322
14.5 事件处理 323
14.5.1 事件处理模型 323
14.5.2 事件类 324
14.5.3 事件监听器 324
14.5.4 事件处理的基本步骤 325
14.5.5 常见的事件处理 328
14.5.6 实例:升国旗奏国歌 331
14.6 常用组件 332
14.6.1 JLabel类 333
14.6.2 JButton类 333
14.6.3 JTextField类 335
14.6.4 JTextArea类 337
14.6.5 JCheckBox类 337
14.6.6 JRadioButton类 338
14.6.7 JComboBox类 340
14.6.8 JOptionPane类 341
14.6.9 JFileChooser类 343
14.6.1 0菜单组件 344
14.7 小结 348
14.8 习题 348
第15章 数据库编程 351
15.1 JDBC概述 351
15.1.1 两层和三层模型 351
15.1.2 JDBC驱动程序与安装 352
15.1.3 JDBC API介绍 353
15.2 数据库连接步骤 353
15.2.1 加载驱动程序 354
15.2.2 建立连接对象 354
15.2.3 创建语句对象 356
15.2.4 ResultSet对象 357
15.2.5 关闭有关对象 358
15.3 数据库访问示例 359
15.3.1 访问Microsoft Access数据库 359
15.3.2 访问PostgreSQL数据库 360
15.4 预处理语句 361
15.4.1 创建PreparedStatement对象 361
15.4.2 带参数的SQL语句 362
15.4.3 DAO设计模式及应用 363
15.5 可滚动和可更新的ResultSet 367
15.5.1 可滚动的ResultSet 367
15.5.2 可更新的ResultSet 368
15.5.3 实例:访问数据库的GUI程序 370
15.6 小结 373
15.7 习题 373
参考文献 375