第1篇 Java开发入门 1
第1单元 职员类 2
1.1 从对象到类:类的定义 2
1.1.1 对象建模 2
1.1.2 类:对象的抽象 2
1.1.3 信息隐蔽与类成员的访问控制 4
1.1.4 成员变量与数据类型 5
1.1.5 成员方法:定义与调用 6
1.2 从类到对象:对象的声明、建立与初始化 7
1.2.1 创建对象的过程 7
1.2.2 构造方法 8
1.2.3 对象成员的访问与this 9
1.3 包 9
1.3.1 包的作用与结构 9
1.3.2 包的声明 10
1.3.3 包或类的导入 10
1.4 流与Java输入/输出初步 11
1.4.1 流的概念 11
1.4.2 System类与标准I/O流对象 11
1.4.3 使用PrintStream类的println()和print()方法输出 11
1.4.4 使用Scanner类进行键盘输入 12
1.5 类的测试:main()方法与主类 12
1.5.1 主方法main() 12
1.5.2 源程序文件与主类 13
1.5.3 本例的源程序代码 13
1.6 Java程序的运行 15
1.6.1 JVM 15
1.6.2 Java开发环境 16
1.6.3 在Eclipse环境中创建并运行本例程序 17
习题1 19
第2单元 计算器类 24
2.1 问题建模与计算器类的定义 24
2.1.1 问题建模 24
2.1.2 Calculator类的描述 24
2.1.3 运算符及其运算规则 25
2.1.4 程序的可靠性:程序测试和调试 25
2.1.5 整数除的风险与对策 26
2.2 异常处理:Calculator类改进之一 28
2.2.1 异常处理的意义 28
2.2.2 Java的隐含异常处理机制 28
2.2.3 Java程序中的显式异常处理 29
2.2.4 本例进行异常处理的三种方式 30
2.2.5 Java.lang中定义的主要异常类 31
2.3 用选择结构确定计算类型:Calculator类改进之二 32
2.3.1 用if-else实现计算方法calculate() 32
2.3.2 关系操作符 34
2.3.3 分支结构的测试 34
2.3.4 用switch结构实现计算方法Calculate() 35
2.4 static成员:Calculator类改进之三 36
2.4.1 static成员的性质 36
2.4.2 带有static成员的Calculator类定义 37
2.4.3 静态变量与实例变量的比较 38
习题2 39
第3单元 素数序列 44
3.1 问题描述与对象建模 44
3.1.1 对象建模 44
3.1.2 getPrimeSeries()方法算法分析 44
3.1.3 isAPrime()方法分析 45
3.2 变量生命期和作用域 46
3.2.1 变量的作用域 46
3.2.2 变量的生命期与存储特点 47
3.2.3 垃圾回收的基本原理 47
3.3 Java的重复控制结构 48
3.3.1 while结构和do-while结构 48
3.3.2 for结构 49
3.3.3 continue语句和break语句 50
3.3.4 PrimeSeries类的定义代码 50
3.3.5 重复控制结构的测试 51
3.4 Java关键字与标识符命名规则 52
3.4.1 Java关键字(保留字) 52
3.4.2 Java标识符及其命名规则 53
3.4.3 几种流行的命名法 53
习题3 54
第4单元 阶乘计算器 59
4.1 阶乘计算器类建模 59
4.2 基于迭代法的阶乘计算器 59
4.3 基于递归法的阶乘计算器 63
4.4 另一个经典案例:Hanoi游戏机的递归程序 64
习题4 67
第5单元 扑克游戏 69
5.1 数组与扑克牌的表示和存储 69
5.1.1 数组的概念 69
5.1.2 数组引用变量的声明和创建 69
5.1.3 数组的显式初始化 70
5.1.4 数组元素的访问 70
5.1.5 foreach循环 71
5.2 随机数与扑克游戏洗牌 71
5.2.1 随机数的概念 71
5.2.2 Random类 72
5.2.3 一次洗牌算法 72
5.2.4 洗牌方法的测试 73
5.2.5 n次洗牌算法 74
5.2.6 Math类 76
5.3 扑克整理与数组排序 77
5.3.1 冒泡排序算法 77
5.3.2 基于冒泡排序算法的cardSort()方法 77
5.4 扑克发牌与二维数组 78
5.4.1 基本的发牌算法 78
5.4.2 用二维数组表示玩家手中的牌 78
5.4.3 使用二维数组的发牌方法 79
5.5 数组实用类:java.util.Arrays 81
5.5.1 数组元素检索方法 81
5.5.2 数组比较方法 82
5.5.3 数组元素填充方法 82
5.5.4 数组元素升序排序方法 82
5.6 String数组与命令行参数 83
5.6.1 引用数组和String数组 83
5.6.2 命令行参数 83
5.7 数组改进:Vector类 83
习题5 86
第6单元 学生——研究生 90
6.1 派生:学生——研究生类的定义 90
6.1.1 类派生 90
6.1.2 super、this与构造方法 91
6.1.3 方法覆盖与成员变量隐藏 92
6.2 动态绑定 94
6.2.1 动态绑定和静态绑定 94
6.2.2 Java虚拟机的动态绑定与静态绑定 95
6.3 对象造型 95
6.3.1 向上造型与向下造型 95
6.3.2 instanceof操作 95
6.4 类成员的访问权限控制 96
6.4.1 类成员访问权限的级别 96
6.4.2 private构造方法 96
6.5 Object类 96
6.5.1 Object类中的主要方法 96
6.5.2 Object()、toString()和getClass()的用法 97
6.5.3 e quals(Object obj)与==的比较 98
习题6 98
第7单元 圆、三角形和矩形 106
7.1 定义三个分立的类 106
7.1.1 分别定义Circle类、Rectangle类和Triangle类 106
7.1.2 直接数 108
7.1.3 final关键字 108
7.1.4 枚举 109
7.1.5 Java异常类体系与用户自定义异常类 109
7.2 抽象类 111
7.3 接口 115
7.3.1 接口及其定义 115
7.3.2 接口的实现 116
7.3.3 关于接口的进一步讨论 117
7.4 设计模式初步 119
7.4.1 模板方法模式 119
7.4.2 简单工厂模式 120
7.4.3 工厂方法模式 123
7.4.4 策略模式 126
7.4.5 策略模式与简单工厂模式结合 129
7.5 反射 130
7.5.1 Java的类加载方法 131
7.5.2 Class对象 132
7.5.3 反射API 134
7.5.4 使用反射的工厂模式 136
7.5.5 使用反射+配置文件的工厂模式 137
习题7 139
第8单元 Java基本知识小结 144
8.1 Java程序开发的核心思想 144
8.1.1 面向对象的抽象 144
8.1.2 封装 144
8.1.3 可重用性 145
8.1.4 多态性 145
8.2 Java程序构造 146
8.2.1 Java构件定义中使用的修饰符 146
8.2.2 Java程序主要构件定义格式 147
8.2.3 Java语句 147
8.2.4 Java程序的流程控制 147
8.3 Java数据类型 149
8.3.1 数据的字面形式 149
8.3.2 BigDecimal和BigInteger 151
8.3.3 基本数据类型之间的类型转换 152
8.3.4 基本类型的默认初始化值 152
8.3.5 基本类型的包装 152
8.3.6 引用类型 153
8.3.7 String类 153
8.4 Java运算符的优先级别与结合性 154
8.5 Java编程规范建议 155
8.5.1 命名建议 155
8.5.2 注释规范 156
8.5.3 关于代码的一般建议 160
8.5.4 关于声明的建议 161
8.5.5 关于语句的建议 162
8.5.6 编程技巧 162
8.6 Java类库 163
8.7 程序测试、调试与异常处理 164
8.7.1 程序中的错误 164
8.7.2 程序测试的基本思想 164
8.7.3 程序测试的基本方法 165
8.7.4 程序测试过程 166
8.7.5 程序调试 166
8.7.6 异常处理 166
8.8 软件设计模式和反模式 167
习题8 168
第2篇 Java开发进阶 171
第9单元 Java图形用户界面技术 172
9.1 图形用户界面的基本知识 172
9.1.1 组件与容器 172
9.1.2 布局管理器与坐标系 173
9.1.3 事件与事件监听器 175
9.2 AWT包及其应用 175
9.2.1 AWT概述 175
9.2.2 AWT组件应用特性 176
9.2.3 AWT容器应用特性 179
9.2.4 AWT布局管理器 179
9.2.5 AWT事件处理 181
9.2.6 内嵌类、匿名类及其在事件处理中的应用 187
9.3 Swing包及其应用 190
9.3.1 MVC设计模式 190
9.3.2 Swing简介 192
9.3.3 Swing容器 193
9.3.4 Swing布局管理器 197
9.3.5 Swing组件与事件处理 199
习题9 202
第10单元 Java数据持久化技术 205
10.1 数据库与数据持久化技术 205
10.1.1 数据库与SQL 205
10.1.2 数据持久层的概念 208
10.2 JDBC原理 209
10.2.1 JDBC体系结构与驱动器类型 209
10.2.2 JDBC驱动程序及其加载 210
10.2.3 用JDBC URL命名数据源 211
10.3 JDBC工作流程 212
10.3.1 加载数据库驱动程序 213
10.3.2 创建一个数据源连接 214
10.3.3 创建SQL工作空间 215
10.3.4 传送SQL语句,得到结果集 215
10.3.5 处理结果集 217
10.3.6 关闭数据库连接 218
10.3.7 实例 218
10.4 事务处理 221
10.4.1 事务的概念 221
10.4.2 JDBC中的事务处理 221
10.4.3 实例 222
10.5 持久层架构Hibernate 224
10.5.1 ORM 224
10.5.2 建立Hibernate开发环境 225
10.5.3 Hibernate开发流程 225
习题10 226
第11单元 Java套接口程序设计 227
11.1 基本概念 227
11.1.1 TCP/IP协议与Socket地址 227
11.1.2 客户机/服务器工作模式 230
11.2 基于TCP的Java Socket程序设计 231
11.2.1 面向TCP的Java SocketAPI 231
11.2.2 服务器端TCP Socket程序设计 233
11.2.3 客户端TCP Socket程序设计 235
11.3 基于UDP的Java Socket程序设计 237
11.3.1 DatagramPacket类 237
11.3.2 DatagramSocket类 238
11.3.3 UDP Socket程序设计 239
习题11 242
第12单元 Java Web应用开发 244
12.1 Java Web技术概述 244
12.1.1 URI、URL和URN 244
12.1.2 超文本和超媒体 246
12.1.3 HTML和XML 247
12.1.4 网站和主页 251
12.1.5 HTTP 251
12.1.6 Java Web技术演进 256
12.2 Java Servlet 261
12.2.1 创建Servlet开发与运行环境 261
12.2.2 Servlet类定义与Servlet对象生命周期 264
12.2.3 Servlet的部署和运行 265
12.2.4 HttpServlet类的doXxx()方法 266
12.3 JSP技术 267
12.3.1 JSP页面结构和基本语法 267
12.3.2 JSP运行机制和环境 269
12.3.3 JSP指令标记 270
12.3.4 JSP动作标记 271
12.3.5 JSP内置对象 274
12.4 Java Web开发架构 285
12.4.1 软件架构 285
12.4.2 经典的MVC支柱框架——Struts 286
12.4.3 基于控制反转和面向切面的MVC框架——Spring 289
习题12 292
第3篇 Java高级开发 295
第13单元 JavaBean技术 296
13.1 JavaBean概述 296
13.1.1 JavaBean结构 296
13.1.2 JavaBean规范 298
13.1.3 JavaBean开发环境 298
13.2 基于JavaBean的JSP应用开发 299
13.2.1 JSP与JavaBean交互的动作元素 299
13.2.2 JSP与JavaBean交互实例 300
13.2.3 JSP+Servlet+JavaBean组成的MVC架构 302
习题13 307
第14单元 Java多线程技术 309
14.1 线程的概念 309
14.1.1 线程与进程 309
14.1.2 线程的状态 309
14.2 Java多线程的实现 310
14.2.1 通过继承java.lang.Thread类创建线程 310
14.2.2 通过实现java.lang.Runnable接口创建线程 313
14.3 多线程同步与死锁 315
14.3.1 多线程同步共享资源 315
14.3.2 线程死锁 316
习题14 317
第15单元 Java泛型编程 319
15.1 泛型基础 319
15.1.1 问题的提出 319
15.1.2 泛型方法 321
15.1.3 多泛型类 321
15.2 泛型语法扩展 322
15.2.1 泛型通配符 322
15.2.2 泛型设限 323
15.2.3 泛型嵌套 323
习题15 325
第16单元 Java数据结构接口 327
16.1 概念 327
16.1.1 数据的逻辑结构 327
16.1.2 数据的物理结构 328
16.1.3 Java数据结构API 330
16.2 Collection接口类及其应用 330
16.2.1 Collection接口方法 330
16.2.2 List接口及其实现 331
16.2.3 Set接口及其实现 333
16.3 聚集的标准输出 335
16.3.1 Iterator接口 335
16.3.2 foreach 336
16.4 Map接口类及其应用 336
16.4.1 Map接口的定义与方法 336
16.4.2 Map.Entry接口 337
16.4.3 HashMap类和TreeMap类 338
习题16&. 339
附录A HTML常用标记 342
参考文献 344