第一部分 Java基础第1章 Java概述 3
1.1 Java技术简介 3
1.1.1 Java发展历史 3
1.1.2 Java技术的构成 4
1.1.3 为什么选择Java 5
1.2 JDK安装及配置 6
1.2.1 安装Java开发工具包 6
1.2.2 配置JDK 8
1.3 Java应用程序 10
1.3.1 简单的程序HelloWorldApp.java 10
1.3.2 编写Java应用程序需要注意的几个规则 11
1.3.3 编译和运行 12
1.3.4 排除常见的错误 12
1.4 Java的工作原理 14
1.4.1 Java运行环境 14
1.4.2 Java应用程序执行过程 15
1.4.3 Java虚拟机 17
1.4.4 自动垃圾收集 19
1.5 程序注释 19
1.6 常用开发环境 20
小结 21
习题 22
第2章 类型、变量和表达式 23
2.1 一个计算圆面积的程序 23
2.2 变量 24
2.2.1 标识符 24
2.2.2 Java关键字 25
2.2.3 基本Java类型 25
2.2.4 变量声明 26
2.2.5 变量初始化 28
2.2.6 转义字符 29
2.2.7 常量 29
2.3 运算符和表达式 30
2.3.1 运算符 30
2.3.2 算术表达式 31
2.3.3 关系和逻辑表达式 34
2.3.4 移位和位操作运算 37
2.3.5 赋值运算符 39
2.3.6 其他运算符 40
2.3.7 数学函数 40
2.3.8 字符运算 40
2.3.9 类型转换 41
2.4 字符串 43
2.4.1 字符串常量 43
2.4.2 字符串对象 43
2.4.3 字符串运算 43
2.5 基于文本的输入输出 45
2.5.1 控制台的输入 45
2.5.2 字符界面的输出 47
小结 49
习题 51
第3章 流程控制 52
3.1 句、块和空白 52
3.1.1 语句 52
3.1.2 语句块 53
3.1.3 空白 54
3.2 顺序结构 55
3.3 选择结构 56
3.3.1 if…else语句 56
3.3.2 switch语句 60
3.4 循环结构 62
3.4.1 for循环 62
3.4.2 while循环 64
3.4.3 do循环 65
3.4.4 跳转 66
3.5 嵌套的结构 68
3.6 变量的作用域 69
3.7 程序调试和排错 70
3.7.1 利用断言调试程序 70
3.7.2 常见排错方法 71
小结 73
习题 74
第4章 数组 76
4.1 数组 76
4.1.1 数组型变量的声明 76
4.1.2 为数组分配空间 77
4.1.3 初始化数组 78
4.1.4 访问数组的元素 78
4.1.5 使用增强型循环访问数组元素 79
4.2 main方法中的参数 80
4.3 多维数组 81
4.4 操作数组 83
小结 84
习题 85
第5章 算法设计基础 86
5.1 求解素数 86
5.2 查找 87
5.2.1 顺序查找 87
5.2.2 折半查找 88
5.3 排序 90
5.3.1 插入排序法 91
5.3.2 冒泡排序法 92
5.3.3 选择排序 94
5.4 递归 96
小结 99
习题 99
第二部分 Java的面向对象编程第6章 类和对象 103
6.1 面向对象概述 103
6.1.1 面向对象的基本概念 103
6.1.2 类和对象 104
6.2 使用JDK的类 104
6.3 创建自己的类 106
6.3.1 类的结构 106
6.3.2 声明一个自定义类 108
6.3.3 为类添加成员变量 110
6.3.4 为类添加方法 113
6.3.5 方法重载 118
6.3.6 构造方法 119
6.4 对象 121
6.4.1 创建对象 122
6.4.2 对象的生存周期 123
6.4.3 this 125
6.4.4 实例运算符的作用 127
6.4.5 对象特性及对象间的关系 127
6.5 static 131
6.5.1 static代码块(类初始化) 131
6.5.2 static成员变量(共享数据) 131
6.5.3 static方法(共享操作) 133
6.5.4 static加载 134
6.6 包 134
小结 136
习题 137
第7章 继承和接口 139
7.1 类的层次结构 139
7.2 创建现有类的子类 140
7.2.1 继承 140
7.2.2 使用super访问超类的构造方法 143
7.2.3 覆盖和隐藏 143
7.3 Object类、抽象类、final类 144
7.3.1 Object 144
7.3.2 抽象类 148
7.3.3 final类 149
7.4 接口 150
7.4.1 定义接口 150
7.4.2 实现接口 151
7.4.3 用接口定义变量 153
7.5 抽象类和接口 154
7.6 类型系统 156
7.6.1 动态和静态类型 156
7.6.2 多态性 156
7.6.3 类型转换 158
小结 158
习题 160
第8章 泛型、枚举和内部类 163
8.1 泛型 163
8.1.1 声明泛型类 163
8.1.2 声明泛型接口 166
8.1.3 声明泛型方法 167
8.1.4 泛型参数的限定 167
8.2 枚举 169
8.3 内部类 171
8.3.1 内部类的声明和应用 171
8.3.2 具有static修饰的内部类 172
8.3.3 局部内部类 173
8.3.4 匿名内部类 173
小结 175
习题 176
第9章 异常控制 177
9.1 异常 177
9.1.1 异常分类体系 178
9.1.2 Java程序中的常见异常 179
9.2 异常处理 181
9.2.1 捕获异常 181
9.2.2 多异常情况下的catch 183
9.2.3 捕获所有异常 184
9.2.4 finally语句 184
9.3 自定义异常 185
9.3.1 定义一个检测异常 185
9.3.2 定义一个非检测异常 186
9.4 方法声明抛出异常 186
9.4.1 方法声明中的异常 187
9.4.2 运行时环境抛出异常 187
9.4.3 开发人员编码在程序中抛出异常 188
9.4.4 多异常抛出 190
9.4.5 覆盖继承自父类的方法时的异常问题 190
9.5 异常处理的基本规则 190
9.5.1 捕获及声明异常 191
9.5.2 finally和return的关系 192
9.5.3 需要注意的其他问题 192
小结 193
习题 194
第10章 集合 196
10.1 集合框架 196
10.1.1 集合类 196
10.1.2 集合的接口 198
10.2 列表List 200
10.2.1 List的主要方法 200
10.2.2 List迭代器ListIterator 201
10.2.3 ArrayList 201
10.2.4 Vector 203
10.3 队列Queue 205
10.3.1 LinkedList 205
10.3.2 LinkedBlockingQueue 208
10.4 集 209
10.5 映射 211
10.6 构建有序集合 215
10.6.1 利用Comparable接口实现有序列表 215
10.6.2 利用Comparator接口实现有序集合 216
小结 218
习题 219
第11章 精通常用类编程 220
11.1 System 220
11.2 String与StringBuffer 221
11.2.1 字符串常量 222
11.2.2 字符串变量 222
11.2.3 字符串运算 222
11.2.4 构造格式化字符串 224
11.2.5 StringBuffer 225
11.3 日期处理 226
11.3.1 获得日期对象 226
11.3.2 创建一个日历对象——Calendar 227
11.3.3 Date和Calendar的转换 228
11.3.4 修改日历属性 228
11.3.5 格式化输出及日期型字符串解析 229
11.4 正则表达式 231
11.4.1 一个例子 231
11.4.2 字符集 232
11.4.3 查找和替换 235
11.5 Observable对象和Observer对象 237
11.6 数值的包装类 239
11.7 生成随机数 240
11.8 反射与代理 241
11.8.1 Class和反射 241
11.8.2 对象代理 245
小结 248
习题 250
第12章 基本I/O处理 252
12.1 流 252
12.1.1 什么是流 252
12.1.2 流的分类 253
12.1.3 输入流的基本方法 254
12.1.4 输出流的基本方法 255
12.2 字符流和字节流 256
12.3 结点流 257
12.4 流的处理链 258
12.4.1 过滤器流 259
12.4.2 转换流 259
12.4.3 数据输入和输出流 260
12.4.4 缓冲流 262
12.4.5 打印输出流 262
12.4.6 如何利用流编写程序 263
12.5 文件处理 263
12.5.1 File 264
12.5.2 顺序读写文件 268
12.5.3 随机读写文件 271
12.6 对象串行化 274
12.6.1 什么是串行化 274
12.6.2 可串行化的对象 274
12.6.3 对象的串行化存取 275
12.6.4 串行化的问题 277
12.7 I/O的异常处理 279
小结 279
习题 280
第13章 多线程开发 281
13.1 理解线程 281
13.2 创建线程 282
13.2.1 从Thread派生线程类 282
13.2.2 实现Runnable接口创建线程目标类 283
13.2.3 定义线程执行的任务 284
13.2.4 创建线程实例并执行 284
13.3 失控的线程 285
13.4 线程间的同步和互斥 291
13.4.1 互斥对象的访问 291
13.4.2 互斥方法的访问 292
13.4.3 线程间的同步 293
13.4.4 线程的死锁问题 296
13.5 线程的状态与转换 296
13.6 线程的管理 300
13.6.1 线程的优先级 300
13.6.2 线程的中断 301
13.6.3 守护线程和用户线程 302
13.6.4 线程组 303
小结 305
习题 307
第14章 网络编程 308
14.1 网络基础 308
14.1.1 网络基本概念 308
14.1.2 TCP和UDP协议 309
14.2 网络编程常用类 310
14.3 基于TCP的网络编程 313
14.3.1 基于Socket的客户/服务器模型 313
14.3.2 创建服务器端Socket 313
14.3.3 创建客户端Socket 316
14.3.4 创建一个多线程通信服务器 317
14.3.5 客户/服务器通信过程 319
14.3.6 Socket连接的关闭 323
14.3.7 Socket异常 323
14.4 对象的网络传输 325
14.5 基于UDP的网络编程 328
14.5.1 数据包Datagram 328
14.5.2 基于UDP的客户/服务器通信过程 331
14.6 基于URL的网络编程 332
14.6.1 URL基础 332
14.6.2 资源访问技术 333
小结 334
习题 335
第15章 数据库访问 336
15.1 数据库编程基础 336
15.1.1 什么是JDBC 336
15.1.2 JDBC驱动程序类型 337
15.1.3 安装JDBC驱动程序 338
15.2 连接到数据库 338
15.3 使用Statement访问数据库 342
15.3.1 获得Statement 342
15.3.2 使用Statement对象执行SQL语句 343
15.3.3 语句完成 345
15.4 ResultSet 346
15.4.1 行和光标 347
15.4.2 获取列的值 347
15.4.3 插入新行 349
15.4.4 更新列值 350
15.4.5 删除记录行 351
15.4.6 特殊字段类型的处理 351
15.5 PreparedStatement 354
15.6 CallableStatement 355
15.7 事务 357
15.8 数据源和连接池 361
小结 362
习题 364
第16章 用户界面开发 365
16.1 简介 365
16.1.1 从AWT到Swing 365
16.1.2 模型—视图—控制体系 366
16.1.3 创建第一个Swing窗口 366
16.2 容器和基本组件 368
16.2.1 设计主窗口 369
16.2.2 添加组件到窗口 370
16.2.3 组件的基本功能 371
16.2.4 按钮JButton 372
16.2.5 标签JLabel 372
16.2.6 文本组件 373
16.2.7 选择性输入组件 374
16.2.8 列表JList 375
16.2.9 表格JTable 378
16.2.10 添加菜单到窗口 383
16.3 布局管理器 384
16.3.1 BorderLayout 384
16.3.2 FlowLayout 385
16.3.3 BoxLayout 386
16.3.4 GridLayout 387
16.4 用中间容器组织界面元素 387
16.5 事件机制 389
16.5.1 事件处理过程 389
16.5.2 主要事件类型 391
16.5.3 一个事件处理的实例 393
16.6 对话框 395
16.6.1 选项对话框 395
16.6.2 文件对话框 396
16.6.3 自定义对话框 396
16.7 图形编程基础 398
小结 400
习题 402
附录A Java常用命令解析 403
参考文献 407