编者的话 1
引言 1
第1章 程序和程序设计 1
1.1 程序的基本概念 1
目录 1
1.1.1 算法 2
1.1.2 实体 3
1.1.3 程序 4
1.1.4 程序设计 5
1.2 程序设计方法与语言 6
1.2.1 早期的程序设计 6
1.2.3 面向对象程序设计 7
1.2.2 结构化程序设计 7
1.3 一个完整的Java程序 8
1.3.1 Java程序的结构 10
1.3.2 Java程序的退化结构 12
1.3.3 Java程序的运行 12
1.3.4 Java程序的调试 13
1.4 面向对象程序的构造 14
1.5 内容小结 14
1.6 思考与练习 15
1.7 上机实习题 15
2.1.2 类型的作用 17
2.1.1 类型的基本概念 17
第2章 基本数据类型 17
2.1 数据类型概述 17
2.1.3 Java语言的类型 18
2.2 程序中的单词 18
2.2.1 单词分类 18
2.2.2 保留字 19
2.2.3 标识符 19
2.2.4 程序中的空白 20
2.3.1 确定数据类型 21
2.3.2 变量的要素 21
2.3 变量与赋值 21
2.3.3 赋值运算 22
2.3.4 程序的输出 22
2.4 Java语言的简单类型 23
2.4.1 字符类型 23
2.4.2 整数类型 24
2.4.3 浮点数类型和双精度浮点数类型 24
2.4.4 布尔类型 25
2.4.5 字符串类型 25
2.4.6 符号常量 26
2.5.1 表达式的概念 27
2.5.2 算术运算 27
2.5 表达式 27
2.5.3 关系运算 28
2.5.4 逻辑运算 28
2.5.5 类型转换 29
2.5.6 一个小应用程序 30
2.6 编写简单应用程序 31
2.6.1 最简单的程序 31
2.6.2 引入变量的程序 32
2.6.3 程序的输入 33
2.6.4 完整的程序 34
2.8 思考与练习 35
2.7 内容小结 35
2.9 上机实习题 36
第3章 基本控制结构 37
3.1 简单语句 37
3.2 结构化控制结构 38
3.2.1 程序的控制结构 38
3.2.2 结构化程序设计工具 38
3.2.3 盒图与伪码 39
3.3 选择结构 41
3.3.1 不带else的if语句 41
3.3.2 带else的if语句 43
3.3.3 嵌套if语句 44
3.3.4 垂悬else问题 47
3.4.1 while语句 48
3.4 循环结构 48
3.4.2 break语句和continue语句 51
3.4.3 do while语句 54
3.4.4 for语句 56
3.5 一个应用程序例子 58
3.6 内容小结 60
3.7 思考与练习 60
3.8 上机实习题 61
4.1 例程机制 62
4.1.1 分而治之与软件重用 62
第4章 方法 62
4.1.2 Java语言的方法 63
4.1.3 两个例子 63
4.2 方法的声明与调用 66
4.2.1 方法的声明 66
4.2.2 方法的调用 67
4.2.3 方法的接口与实现 69
4.3 方法的参数 69
4.3.1 参数设计 69
4.3.2 按值调用 72
4.4 标识符的作用域 73
4.4.1 作用域规则 73
4.4.2 标识符命名冲突 74
4.5.1 数值运算 75
4.5 使用Java API 75
4.5.2 伪随机数 76
4.6 递归程序设计 77
4.6.1 简单递归程序 77
4.6.2 河内塔问题 78
4.7 内容小结 80
4.8 思考与练习 80
4.9 上机实习题 81
第5章 类与对象 83
5.1 声明一个类 83
5.1.1 类的声明 83
5.1.2 类成员的访问控制 84
5.1.3 类作用域 85
5.2 创建对象实例 86
5.2.1 对象的声明与使用 86
5.2.2 对象的初始化 88
5.2.3 静态成员 90
5.2.4 对象的参数传递方式 93
5.3 变量和对象实例的生存期 94
5.3.1 变量的生存期 95
5.3.2 对象实例的生存期 96
5.4 字符串类String 97
5.4.1 使用String类型的对象 97
5.4.2 类String的主要方法 98
5.4.3 使用字符串对象的例子 99
5.5 关于类和对象的进一步讨论 103
5.5.1 基本数据类型的包装类 103
5.5.2 抽象数据类型 103
5.5.3 设计良好的类接口 104
5.5.4 再论对象 105
5.5.5 再论Java语言的类 105
5.6 内容小结 107
5.7 思考与练习 107
5.8 上机练习题 109
6.1 使用数组变量 110
第6章 复合数据类型 110
6.1.1 数组变量的声明 111
6.1.2 访问数组元素 111
6.1.3 数组作为参数传递 113
6.2 数组应用举例 113
6.2.1 学生成绩管理 113
6.2.2 完整的程序 114
6.2.3 冒泡排序法 117
6.3 使用二维数组变量 118
6.3.1 二维数组的概念 118
6.3.2 使用二维数组 119
6.3.3 二维数组应用举例 119
6.4.2 建模 121
6.4 一个扑克牌游戏程序 121
6.4.1 分析问题 121
6.4.3 完整的程序 122
6.5 对象实例的复制与比较 125
6.5.1 对象实例的复制 125
6.5.2 对象实例的比较 130
6.6 内容小结 131
6.7 思考与练习 132
6.8 上机实习题 134
7.1.1 IS-A关系 135
7.1.2 继承机制 135
7.1 继承的基本概念 135
第7章 继承与多态 135
7.1.3 继承的作用 136
7.2 Java语言的继承机制 137
7.2.1 继承的语法 137
7.2.2 继承与成员访问控制 139
7.2.3 继承成员的调整 140
7.2.4 子类对象实例的存储组织 142
7.2.5 继承与对象初始化及收尾 144
7.2.6 继承与子类型 146
7.3 多态性的基本概念 147
7.3.1 程序的多态性 147
7.4.1 方法重载的途径 148
7.4 方法重载 148
7.3.2 表示独立性 148
7.4.2 方法重载的二义性 151
7.4.3 构造方法的重载 154
7.5 动态绑定 155
7.6 对继承和多态的进一步讨论 157
7.6.1 单继承与多继承 157
7.6.2 最终类与抽象类 158
7.6.3 类属机制 161
7.7 内容小结 162
7.8 思考与练习 163
7.9 上机实习题 169
8.1.1 接口的作用 171
第8章 接口与程序包 171
8.1 接口 171
8.1.2 接口的声明 172
8.1.3 接口与类 173
8.1.4 接口的继承 179
8.1.5 接口与多态性 181
8.2 程序包 183
8.2.1 Java程序的组织 183
8.2.2 程序包的定义 184
8.2.3 程序包的引入 186
8.2.4 包级访问控制 187
8.2.5 Java的系统程序包 188
8.3.1 嵌套类的种类 189
8.3 嵌套类 189
8.3.2 内部类 190
8.3.3 回调机制 193
8.3.4 静态类 197
8.4 内容小结 197
8.5 思考与练习 198
8.6 上机实习题 202
9.1 异常处理的基本概念 204
9.1.1 异常处理 204
第9章 异常处理与断言 204
9.1.2 异常处理的模式 205
9.2 Java语言的异常处理机制 206
9.2.1 异常的分类 206
9.2.2 Java标准异常简介 208
9.2.3 异常的捕获与处理 209
9.2.4 异常的匹配 211
9.2.5 异常处理与收尾 212
9.2.6 异常处理与构造方法 213
9.2.7 异常的转发 214
9.2.8 异常声明与方法重载 216
9.2.9 异常处理与继承机制 216
9.3.1 程序断言 220
9.3 程序断言机制 220
9.3.2 程序断言的用法 221
9.3.3 在Java语言中实现部分断言 222
9.4 内容小结 224
9.5 思考与练习 224
9.6 上机实习题 227
第10章 输入/输出流 228
10.1 输入/输出基本概念 228
10.1.1 外部设备与文件 228
10.1.2 文件的基本概念 229
10.1.3 输入/输出流 229
10.2.1 面向字节的输入流类 230
10.2 Java流系统概述 230
10.2.2 面向字节的输出流类 232
10.2.3 面向字符的输入流类 233
10.2.4 面向字符的输出流类 235
10.2.5 Java API定义的流对象 236
10.3 文件流 237
10.3.1 文件及文件目录的操作 237
10.3.2 文件内容的顺序读写 238
10.3.3 文件内容的随机读写 240
10.4 过滤器流 241
10.4.1 装饰模式 242
10.4.2 数据转换流 243
10.4.3 带行号的输入流 244
10.5 对象串行化 245
10.5.1 对象串行化的作用 245
10.5.2 对象串行化的基本方法 246
10.5.3 串行化自己的对象 247
10.6 其他类型的流简介 249
10.6.1 管道流 249
10.6.2 连接流 251
10.7 内容小结 253
10.8 思考与练习 253
10.9 上机实习题 254
11.1 对象容器的基本概念 255
第11章 对象容器 255
11.2 Java对象容器概述 256
11.2.1 Java对象容器接口及其骨架类 256
11.2.2 Java的对象容器类 258
11.2.3 支持对象容器的辅助工具 260
11.3 迭代器 261
11.3.1 迭代器设计模式 261
11.3.2 迭代器的基本用法 262
11.3.3 列表专用迭代器 263
11.3.4 旧版本的枚举接口 265
11.4 类集容器 266
11.4.1 类集容器接口 266
11.4.2 列表容器 268
11.4.3 集合容器 271
11.5 映射容器 274
11.5.1 映射容器接口 274
11.5.2 映射容器类 280
11.6 内容小结 282
11.7 思考与练习 283
11.8 上机实习题 284
第12章 图形用户界面 285
12.1 用户界面设计原则 285
12.2 Java程序的用户界面设计 286
12.2.1 Java程序的用户界面 286
12.2.3 AWT和Swing组件 287
12.2.2 GUI系统的组成 287
12.3 Swing概述 288
12.3.1 Swing组件 288
12.3.2 Swing的M-UI模式 290
12.3.3 Swing的事件处理模式 291
12.3.4 一个简单的GUI程序 292
12.3.5 类JComponent简介 296
12.4 Swing顶层容器 297
12.5 Swing中间容器 299
12.6 Swing原子控件 300
12.6.1 原子控件概述 300
12.6.2 一些简单原子控件的使用 301
12.6.3 列表的使用 306
12.6.4 菜单的使用 308
12.7 Swing的布局管理 311
12.8 编写小应用程序 312
12.8.1 Applet的特点 312
12.8.2 Applet的编程模式 313
12.8.3 Applet的编程举例 314
12.9 内容小结 316
12.10 思考与练习 316
12.11 上机实习题 317
13.1.1 关系数据库的基本概念 318
13.1 关系数据库与SQL简介 318
第13章 数据库编程初步 318
13.1.2 创建关系数据库举例 319
13.1.3 SQL简介 320
13.2 JDBC结构与原理 323
13.2.1 数据库应用的多层结构 323
13.2.2 JDBC的结构 325
13.2.3 建立使用JDBC的运行环境 326
13.3 JDBC应用入门 327
13.3.1 使用JDBC的编程模式 327
13.3.2 Java与SQL间的数据类型映射 332
13.3.3 封装与数据库访问有关的操作 333
13.4.1 分析与设计 337
13.4 数据库应用程序举例 337
13.4.2 编码实现 339
13.5 内容小结 348
13.6 思考与练习 349
13.7 上机实习题 350
第14章 多线程编程 351
14.1 线程的基本概念 351
14.1.1 什么是线程? 351
14.1.2 Java程序中的线程 351
14.2 线程生存期与线程调度 352
14.2.1 创建线程 352
14.2.2 Java程序的主线程 355
14.2.3 线程的生存期 356
14.2.4 使用yield()方法 356
14.2.5 优先级与线程调度 358
14.2.6 守护线程 360
14.3 资源共享与线程同步 361
14.3.1 线程安全性 361
14.3.2 同步代码段与锁 362
14.3.3 设计线程安全的应用程序 365
14.4 其他线程通信方式 366
14.4.1 使用sleep()方法 366
14.4.2 使用join()方法 367
14.4.3 使用wait()/notify()/notifyAll()方法 368
14.4.4 使用I/O操作 371
14.5 使用定时器 371
14.5.1 通用定时器 371
14.5.2 Swing专用定时器 373
14.6 内容小结 374
14.7 思考与练习 374
14.8 上机实习题 375
第15章 网络通信编程 376
15.1 网络通信的基本概念 376
15.1.1 通信协议 376
15.1.2 TCP与UDP 378
15.1.3 端口 379
15.1.4 Java对网络通信的支持 380
15.2 基于URL的通信 380
15.2.1 使用URL对象 380
15.2.2 使用URL连接 383
15.3 基于TCP的通信 385
15.3.1 指定主机 385
15.3.2 基于socket的C/S编程 386
15.3.3 多线程服务程序 391
15.4 典型的因特网应用 393
15.4.1 一个简单的端口扫描程序 393
15.4.2 一个简单的HTTP服务程序 394
15.4.3 一个简单的Telnet客户程序 396
15.4.4 一个简单的SMTP客户程序 398
15.5 基于UDP的通信 400
15.5.1 类DatagramPacket 400
15.5.2 类DatagramSocket 401
15.5.3 例子程序 402
15.6 内容小结 404
15.7 思考与练习 404
15.8 上机实习题 405
16.1.1 设计原则与设计模式 406
16.1.2 B.Meyer的设计原则 406
16.1 设计原则 406
第16章 相关软件技术简介 406
16.1.3 R.Martin的设计原则 407
16.2 设计模式 408
16.2.1 什么是模式? 408
16.2.2 GoF设计模式 409
16.2.3 POSA设计模式 411
16.2.4 反模式 412
16.3 分布式对象技术 412
16.3.1 进程内通信与进程间通信 413
16.3.2 实现网络通信的途径 413
16.3.3 分布式对象系统 413
16.4 内容小结 414
16.5 思考与练习 414