第1章 Java程序设计语言 1
1.1 程序设计概述 1
1.1.1 程序设计语言 1
1.1.2 程序设计方法 2
1.2 Java语言的历史及特点 3
1.2.1 Java语言的历史 3
1.2.2 Java语言的特点 3
1.3 JDK的安装与配置 5
1.3.1 JDK的下载与安装 5
1.3.2 环境变量的设置 7
1.3.3 Java API文档的安装 8
1.4 简单的Java程序 8
1.4.1 Java应用程序 9
1.4.2 程序的编辑、编译和运行 10
1.4.3 程序常见错误及处理 12
1.5 Java程序运行机制 14
1.5.1 语言处理程序简介 14
1.5.2 Java平台与Java虚拟机 15
1.5.3 Java程序的执行过程 15
1.6 小结 16
1.7 习题 16
第2章 Java语言基础 18
2.1 数据类型 18
2.1.1 保留字和标识符 18
2.1.2 Java数据类型 19
2.1.3 整数类型 21
2.1.4 浮点类型 23
2.1.5 布尔类型 23
2.1.6 字符类型 24
2.2 运算符和表达式 25
2.2.1 算术运算符 26
2.2.2 关系运算符 28
2.2.3 位运算符 28
2.2.4 逻辑运算符 30
2.2.5 赋值运算符 32
2.2.6 条件运算符 33
2.2.7 运算符的优先级 33
2.2.8 数据类型转换 34
2.3 流程控制语句 36
2.3.1 数据的输入输出 36
2.3.2 选择结构 40
2.3.3 循环结构 43
2.4 小结 49
2.5 习题 49
第3章 Java的类和对象 55
3.1 面向对象基础 55
3.1.1 面向对象的基本概念 55
3.1.2 面向对象的基本特征 57
3.2 类的定义与对象的创建 58
3.2.1 类的定义 58
3.2.2 对象的创建和使用 61
3.3 方法设计 63
3.3.1 如何设计方法 63
3.3.2 方法重载 67
3.3.3 构造方法 68
3.3.4 方法参数的传递 71
3.4 static修饰符 72
3.4.1 实例变量和静态变量 72
3.4.2 实例方法和静态方法 74
3.4.3 static修饰符的一个应用 75
3.4.4 方法的递归调用 76
3.5 对象初始化和清除 77
3.5.1 实例变量的初始化 78
3.5.2 静态变量的初始化 80
3.5.3 对象的清除与垃圾回收 81
3.6 包与类的导入 82
3.6.1 包定义语句 83
3.6.2 类的导入 84
3.6.3 Java编译单元 85
3.7 小结 86
3.8 习题 86
第4章 Java的数组与字符串 92
4.1 创建和使用数组 92
4.1.1 数组的定义 92
4.1.2 数组元素的使用 94
4.1.3 可变参数的方法 98
4.1.4 数组的排序 99
4.1.5 数组的查找 100
4.2 多维数组 102
4.2.1 多维数组的定义 102
4.2.2 数组元素的初始化 103
4.2.3 数组元素的使用 103
4.3 String类 105
4.3.1 创建String类对象 106
4.3.2 字符串长度及提取单个字符 107
4.3.3 字符串连接及子串 108
4.3.4 字符串查找 108
4.3.5 字符串与数组的转换 109
4.3.6 字符串的解析 109
4.3.7 字符串常量与字符串的比较 110
4.3.8 String对象的不变性 112
4.3.9 命令行参数 113
4.4 StringBuilder类和StringBuffer类 114
4.4.1 创建StringBuilder对象 114
4.4.2 StringBuilder对象的访问与修改 114
4.4.3 运算符“+”的重载 115
4.4.4 StringBuffer类 116
4.5 Java API文档介绍 116
4.6 小结 117
4.7 习题 117
第5章 Java的面向对象特征 123
5.1 类的继承 123
5.1.1 类继承的实现 123
5.1.2 方法覆盖与super关键字 125
5.1.3 子类的构造方法与调用过程 127
5.1.4 Object类简介 128
5.1.5 final修饰符 130
5.2 封装性与访问修饰符 132
5.2.1 封装性的实现 132
5.2.2 类的访问权限 132
5.2.3 类成员的访问权限 133
5.3 对象转换与多态性 135
5.3.1 对象转换 135
5.3.2 instanceof运算符 137
5.3.3 多态性与动态绑定 138
5.4 抽象类与接口 140
5.4.1 抽象方法与抽象类 140
5.4.2 接口及其定义 142
5.4.3 接口的实现 143
5.4.4 接口类型的使用 144
5.5 内部类 144
5.5.1 常规内部类 145
5.5.2 静态内部类 147
5.5.3 局部内部类 148
5.5.4 匿名内部类 149
5.6 枚举类型 151
5.6.1 枚举类型的定义 151
5.6.2 枚举类型的方法 151
5.6.3 枚举类型的构造方法 153
5.7 注解类型 153
5.7.1 注解类型的定义 154
5.7.2 注解程序元素 155
5.7.3 注解的使用 156
5.8 小结 157
5.9 习题 157
第6章 Java基础语言类 166
6.1 Java类库简介 166
6.2 Object类和Math类 167
6.2.1 Object类 167
6.2.2 Math类 169
6.3 数据类型包装类 171
6.3.1 Character类和Boolean类 171
6.3.2 Number类及其子类 173
6.3.3 Number类的构造方法 173
6.3.4 Number类的常量 174
6.3.5 类型转换方法 175
6.3.6 自动装箱与拆箱 176
6.4 常用系统类 178
6.4.1 System类 178
6.4.2 Runtime类 181
6.4.3 Class类 183
6.5 常用工具类 184
6.5.1 Random类 184
6.5.2 Locale类和TimeZone类 185
6.5.3 时间、日期和日历相关的类 188
6.5.4 DateFormat类和SimpleDateFormat类 191
6.5.5 NumberFormat类和Currency类 194
6.6 正则表达式 196
6.6.1 模式匹配 196
6.6.2 Pattern类 198
6.6.3 Matcher类 199
6.6.4 量词和捕获组 201
6.7 小结 202
6.8 习题 203
第7章 异常处理与断言 206
7.1 异常与异常类 206
7.1.1 程序错误与异常的概念 206
7.1.2 Throwable类及其子类 208
7.2 异常处理机制 210
7.2.1 异常的抛出与捕获 210
7.2.2 异常处理 211
7.2.3 声明方法抛出异常 214
7.2.4 用throw语句抛出异常 216
7.3 自定义异常类 217
7.4 断言机制 218
7.4.1 断言概述 218
7.4.2 启动和关闭断言 219
7.4.3 何时使用断言 219
7.4.4 一个使用断言的示例 221
7.5 小结 222
7.6 习题 222
第8章 Java输入输出 227
8.1 文件及目录管理 227
8.1.1 创建File对象 227
8.1.2 有关文件操作的方法 228
8.1.3 有关目录操作的方法 229
8.2 字节输入输出流 230
8.2.1 Java流式I/O的概念 230
8.2.2 InputStream类和OutputStream类 231
8.2.3 FileInputStream类和FileOutputStream类 232
8.2.4 过滤流及其子类 234
8.2.5 文本文件和二进制文件 238
8.2.6 使用Scanner类读取文本文件 239
8.2.7 标准输入输出流 240
8.2.8 其他字节流 240
8.3 字符输入输出流 240
8.3.1 Reader类和Writer类 241
8.3.2 FileReader类和FileWriter类 242
8.3.3 BufferedReader类和BufferedWriter类 242
8.3.4 InputStreamReader类和OutputStreamWriter类 244
8.3.5 PrintWriter类 245
8.3.6 其他字符流 245
8.4 随机读写文件类 245
8.4.1 创建RandomAccessFile对象 246
8.4.2 RandomAccessFile类的方法 246
8.5 对象序列化与对象流 248
8.5.1 实现序列化的接口和类 248
8.5.2 向ObjectOutputStream中写入对象 249
8.5.3 从ObjectInputStream中读出对象 249
8.6 小结 251
8.7 习题 252
第9章 Java图形界面设计 255
9.1 Java图形界面基础 255
9.1.1 Swing常用组件与分类 255
9.1.2 JComponent类和Container类 257
9.1.3 简单的框架窗口 258
9.1.4 在框架中添加组件 259
9.2 容器布局 260
9.2.1 BorderLayout布局管理器 261
9.2.2 FlowLayout布局管理器 262
9.2.3 GridLayout布局管理器 263
9.2.4 其他布局管理器 265
9.2.5 面板及容器的嵌套 265
9.2.6 应用程序外观 266
9.3 Java小程序简介 267
9.3.1 一个简单的Java小程序 267
9.3.2 Java小程序的工作原理 269
9.3.3 Java小程序的生命周期 270
9.3.4 Java小程序的图形界面设计 271
9.4 绘制图形 272
9.4.1 在面板中绘图 272
9.4.2 Graphics类 273
9.4.3 Color类 273
9.4.4 Font类 274
9.4.5 绘制几何图形 275
9.5 小结 278
9.6 习题 279
第10章 事件处理与常用组件 281
10.1 事件驱动程序设计 281
10.1.1 事件处理模型 281
10.1.2 事件类 282
10.1.3 事件监听器 283
10.1.4 事件处理的步骤 284
10.1.5 常见的事件处理 287
10.1.6 事件适配器类 291
10.2 常用组件 292
10.2.1 JLabel类 292
10.2.2 JButton类 293
10.2.3 JTextField类 295
10.2.4 JTextArea类 297
10.2.5 JCheckBox类 299
10.2.6 JRadioButton类 301
10.2.7 JComboBox类 302
10.2.8 JOptionPane类 304
10.2.9 菜单设计 308
10.2.10 JFileChooser类 312
10.3 小结 315
10.4 习题 315
第11章 Java多线程编程 317
11.1 线程与线程类 317
11.1.1 线程的概念 317
11.1.2 Runnable接口和Thread类 318
11.2 线程的创建 319
11.2.1 继承Thread类 319
11.2.2 实现Runnable接口 320
11.2.3 主线程 321
11.3 线程的状态与调度 322
11.3.1 线程的状态 322
11.3.2 线程的优先级和调度 324
11.4 线程状态的改变 325
11.4.1 运行状态到可运行状态 325
11.4.2 线程阻塞条件 326
11.4.3 控制线程的结束 327
11.5 资源共享与对象锁 328
11.5.1 资源共享问题 328
11.5.2 对象锁的实现 330
11.5.3 线程间的同步控制 331
11.6 线程组 335
11.6.1 创建线程组 335
11.6.2 默认线程组 335
11.6.3 线程组操作方法 336
11.7 小结 336
11.8 习题 337
第12章 Java多媒体应用 341
12.1 播放声音 341
12.1.1 在Java小程序中播放声音 341
12.1.2 在Java应用程序中播放声音 343
12.2 显示图像 345
12.2.1 在Java小程序中显示图像 345
12.2.2 在Java应用程序中显示图像 346
12.3 实现动画 348
12.3.1 制作图像动画 348
12.3.2 通过编程实现动画 349
12.3.3 使用Timer类实现动画 350
12.4 Java小程序深入 353
12.4.1 HTML的〈applet〉标签 353
12.4.2 从HTML文件向Java小程序传递参数 354
12.4.3 Java小程序环境 356
12.4.4 Java小程序的安全机制 356
12.5 JAR文件的操作 357
12.5.1 JAR工具的用法 357
12.5.2 JAR工具的使用示例 358
12.5.3 创建可执行的JAR文件 358
12.6 小结 359
12.7 习题 360
第13章 Java网络编程 361
13.1 URL类编程 361
13.1.1 URL与URL类 361
13.1.2 URLConnection类 364
13.2 网络地址类InetAddress编程 366
13.3 Java套接字编程 367
13.3.1 套接字的基本概念 367
13.3.2 套接字类 368
13.3.3 Java小程序的网络通信 374
13.4 数据报通信 376
13.4.1 流式通信和数据报通信 376
13.4.2 DatagramSocket类和DatagramPacket类 376
13.4.3 一个简单的UDP通信的例子 378
13.5 小结 380
13.6 习题 380
第14章 Java数据库编程 383
14.1 PostgreSQL数据库简介 383
14.1.1 PostgreSQL的下载与安装 383
14.1.2 使用pgAdmin Ⅲ操作数据库 385
14.1.3 使用psql操作数据库 387
14.2 Java数据库技术概述 390
14.2.1 数据库访问模型 390
14.2.2 JDBC驱动程序与安装 391
14.2.3 JDBC API介绍 392
14.3 数据库连接步骤 392
14.3.1 加载驱动程序 393
14.3.2 建立连接对象 393
14.3.3 创建语句对象 396
14.3.4 获得SQL语句的执行结果 396
14.3.5 关闭建立的对象 398
14.4 数据库连接示例 398
14.4.1 使用JDBC-ODBC桥访问Access数据库 398
14.4.2 使用JDBC访问PostgreSQL数据库 399
14.4.3 一个通用的数据库访问程序 400
14.5 访问数据库信息 402
14.5.1 获取数据库的信息 402
14.5.2 获取结果集的信息 403
14.6 可滚动的和可更新的ResultSet 405
14.6.1 可滚动的ResultSet 405
14.6.2 可更新的ResultSet 406
14.7 预处理语句和可调用语句 407
14.7.1 创建PreparedStatement对象 407
14.7.2 执行带参数的SQL语句 408
14.7.3 存储过程和函数 409
14.7.4 创建CallableStatement对象 411
14.8 存储和检索图像 414
14.9 小结 418
14.10 习题 418
第15章 Java泛型与集合 420
15.1 泛型介绍 420
15.1.1 为何引进泛型机制 420
15.1.2 泛型类型 421
15.1.3 泛型方法 422
15.1.4 有界类型参数 423
15.1.5 子类型问题 424
15.1.6 通配符 425
15.1.7 类型擦除 426
15.2 Java集合框架 428
15.2.1 Collection接口及操作 428
15.2.2 访问集合中的元素 429
15.2.3 Set接口及实现类 430
15.2.4 对象顺序 433
15.2.5 List接口及实现类 435
15.2.6 Queue接口及实现类 440
15.3 Map接口及实现类 443
15.3.1 Map接口 443
15.3.2 Map接口的实现类 445
15.4 Arrays类和Collections类 448
15.4.1 Arrays类 448
15.4.2 Collections类 451
15.5 小结 454
15.6 习题 454
参考文献 457