第1篇Java面向对象启步 3
第1单元 职员类 3
1.1从对象到类:类的定义 3
1.1.1对象建模 3
1.1.2类:对象的抽象 4
1.1.3信息隐蔽与类成员的访问控制 6
1.1.4成员变量与数据类型 6
1.1.5成员方法:定义与调用 8
1.1.6 Java关键词与标识符 9
1.2从类到对象:对象的声明、建立与初始化 10
1.2.1创建对象的过程 11
1.2.2构造方法 12
1.2.3对象成员的访问与this 13
1.3包 13
1.3.1包的作用与结构 13
1.3.2包的声明 14
1.3.3包或类的导入 14
1.4流与Java输入输出初步 15
1.4.1流的概念 15
1.4.2 System类与标准I/O流对象 15
1.4.3使用PrintStream类的println()和print()方法输出 16
1.4.4使用Scanner类进行键盘输入 16
1.5源程序文件与Java平台 17
1.5.1主方法 17
1.5.2源程序文件 17
1.5.3 Java程序的编译与解释 19
1.6 Java开发运行环境 20
1.6.1 JDK 20
1.6.2 Eclipse开发环境 22
习题1 27
第2单元 计算器类 32
2.1计算器类的定义 32
2.1.1问题建模 32
2.1.2 Calculator类的Java描述 32
2.1.3运算符及其运算规则 33
2.1.4程序的可靠性:程序测试和调试 33
2.1.5整数除的风险与对策 35
2.2异常处理——Calculator类改进之一 36
2.2.1 Java的隐含异常处理机制 37
2.2.2 Java程序中的显式异常处理 37
2.2.3进行异常处理的4种方式 38
2.3用选择结构确定计算类型——Calculator类改进之二 42
2.3.1用if-else实现方法calculate() 42
2.3.2关系操作符 44
2.3.3用switch结构实现计算方法calculate() 44
2.4判断结构的测试 46
2.4.1逻辑覆盖测试及其策略 46
2.4.2本例的测试用例设计 50
2.5使用static成员变量存储计算结果——Calculator类改进之三 50
2.5.1 static变量的性质 50
2.5.2带有static成员的Calculator类定义 51
习题2 52
第3单元 素数序列 60
3.1问题描述与对象建模 60
3.1.1对象建模 60
3.1.2 getPrimeSeries()方法算法分析 60
3.1.3 isPrime()方法的设计与静态方法的使用 61
3.2变量的访问属性 63
3.2.1变量的作用域 63
3.2.2静态变量、实例变量与方法变量的存储与生命期 64
3.2.3对象的生命期与Java垃圾回收 64
3.3 Java的重复控制结构 65
3.3.1 while结构和do-while结构 65
3.3.2 for结构 66
3.3.3 continue语句和break语句 67
3.3.4 PrimeSeries类的定义代码 68
3.4重复控制结构的测试 69
3.4.1等价分类法与边值分析法 69
3.4.2循环结构的测试用例设计 70
3.4.3本例测试数据的设计 70
3.5知识链接 71
3.5.1 Java操作符的优先级别与结合性 71
3.5.2表达式及其求值规则 72
习题3 72
第4单元 阶乘计算器 80
4.1阶乘计算器类建模 80
4.2用迭代方法实现的阶乘计算器 80
4.2.1用迭代法实现getFactorial ()方法 80
4.2.2考虑特殊情况的getFactorial ()方法算法 81
4.2.3构造方法定义 82
4.2.4测试用例设计 82
4.2.5主方法设计 83
4.2.6完整的阶乘类定义 83
4.3用递归方法实现的阶乘计算器 84
4.3.1问题的提出 84
4.3.2递归过程 85
4.4 Hanoi游戏机 86
4.4.1问题描述 86
4.4.2问题建模 86
4.4.3成员方法hanoiPlay()的实现 86
4.4.4 HanoiGame类的定义 87
4.4.5递归过程分析 87
4.5知识链接 88
4.5.1直接数的表示形式 88
4.5.2 BigDecimal和BigInteger 90
4.5.3基本类型的包装 91
4.5.4类型转换 92
4.5.5 String类 95
习题4 96
第5单元 扑克游戏 99
5.1数组与扑克牌的表示和存储 99
5.1.1数组的概念 99
5.1.2数组引用变量的声明和创建 99
5.1.3数组的显式初始化 100
5.1.4数组元素的访问 101
5.1.5 ForEach循环 101
5.2随机数与扑克游戏洗牌 102
5.2.1随机数的概念 102
5.2.2 Random类 102
5.2.3一次洗牌算法 103
5.2.4洗牌方法的测试 104
5.2.5 n次洗牌算法 105
5.2.6 Math类 107
5.3扑克整理与数组排序 108
5.3.1冒泡排序算法 108
5.3.2基于冒泡排序算法的cardSort()方法 109
5.4扑克发牌与二维数组 109
5.4.1基本的发牌算法 109
5.4.2用二维数组表示玩家手中的牌 110
5.4.3使用二维数组的发牌方法 111
5.5数组实用类:java. util. Arrays 113
5.5.1数组元素检索方法 113
5.5.2数组比较方法 113
5.5.3数组元素填充方法 114
5.5.4数组元素升序排序方法 114
5.6 String数组与命令行参数 115
5.6.1引用数组和String数组 115
5.6.2命令行参数 115
5.7知识链接:Vector类 115
习题5 118
第6单元 学生-研究生 122
6.1学生类-研究生类层次结构 122
6.1.1由Student类派生GradStudent类 122
6.1.2关键词this和super 124
6.1.3 Java继承规则 126
6.2访问权限控制 126
6.2.1类成员的访问权限控制级别 126
6.2.2类的访问权限控制级别 126
6.2.3 private构造方法 127
6.3类层次中的类型转换 127
6.3.1类层次中的赋值兼容规则 127
6.3.2里氏代换原则 128
6.3.3类型转换与类型测试 128
6.4方法覆盖与隐藏 129
6.4.1派生类实例方法覆盖基类中原型相同的实例方法 129
6.4.2派生类静态方法隐藏基类中原型相同的静态方法 130
6.4.3 JVM的绑定机制 131
6.5知识链接 132
6.5.1 Object类 132
6.5.2 Java异常类和错误类的继承体系 135
习题6 137
第2篇Java面向抽象编程 151
第7单元 抽象类与接口 151
7.1圆、三角形和矩形 151
7.1.1三个独立的类:Circle 、 Rectangle和Triangle 151
7.1.2 final关键字 153
7.1.3 Java构件修饰符 154
7.1.4枚举 154
7.2抽象类 155
7.2.1由具体类抽象出抽象类 155
7.2.2抽象类的特征 160
7.3接口 160
7.3.1接口及其定义 160
7.3.2接口的实现 161
7.3.3关于接口的进一步讨论 163
习题7 164
第8单元 面向对象程序设计的基本原则 172
8.1从可重用说起:合成/聚合优先原则 173
8.1.1继承重用的特点 174
8.1.2合成/聚合重用及其特点 174
8.1.3合成/聚合优先原则 174
8.2从可维护性说起:开闭原则 176
8.2.1软件的可维护性和可扩展性 176
8.2.2开闭原则 177
8.3面向抽象编程 177
8.3.1具体与抽象 177
8.3.2依赖倒转原则 178
8.3.3接口与面向接口的编程 178
8.3.4面向接口编程举例 179
8.4单一职责原则 183
8.4.1对象的职责 183
8.4.2单一职责原则的概念 183
8.4.3接口分离原则 184
8.5不要和陌生人说话 188
8.5.1狭义迪米特法则 189
8.5.2广义迪米特法则 189
习题8 190
第9单元 设计模式举例 193
9.1图形对象的创建问题 193
9.1.1简单工厂模式 194
9.1.2工厂方法模式 199
9.1.3其他创建性设计模式 203
9.2商场营销问题 204
9.2.1策略模式的引入 205
9.2.2策略模式与简单工厂模式结合 210
9.2.3其他行为型设计模式 213
9.3消息发送问题 218
9.3.1不用模式的解决方案 218
9.3.2采用桥接模式的解决方案 222
9.3.3其他结构型设计模式 225
习题9 229
第10单元 反射、配置文件与程序打包发布 231
10.1反射 231
10.1.1类文件与类加载 231
10.1.2 Class对象 232
10.1.3反射API 235
10.1.4使用反射的简单工厂模式 237
10.2 Java程序的属性配置文件 238
10.2.1 .properties配置文件和XML配置文件 238
10.2.2 Java应用程序读取配置文件 239
10.2.3使用反射+配置文件的简单工厂模式 242
10.3 Java程序的打包与发布 243
10.3.1 Java程序打包与JAR文件包 243
10.3.2 manifest文件 244
10.3.3创建可执行JAR包 246
习题10 250
第3篇 基于API的Java开发 255
第11单元Java图形用户界面技术 255
11.1图形用户界面的基本知识 255
11.1.1组件与容器 255
11.1.2布局管理器与坐标系 256
11.1.3事件与事件监听器 258
11.1.4 GUI程序开发的基本过程 259
11.2 AWT及其应用 259
11.2.1 AWT及其API 259
11.2.2抽象类Component与AWT组件 259
11.2.3抽象类Container与AWT容器 262
11.2.4 AWT布局管理器 264
11.3事件处理 266
11.3.1 AWT事件类 266
11.3.2事件监听接口 266
11.3.3组件注册事件监听器 269
11.3.4事件适配器 271
11.3.5内嵌类、匿名类及其在事件处理中的应用 271
11.4 Swing及其应用 275
11.4.1 Swing的特点 275
11.4.2 Swing组件 276
11.4.3 Swing布局管理器 281
11.4.4 Swing事件处理 284
习题11 286
第12单元Java多线程 291
12.1 Java多线程概述 291
12.1.1进程与线程 291
12.1.2线程的状态 292
12.1.3 Java多线程机制 293
12.1.4 Thread类 293
12.2线程状态控制 295
12.2.1创建线程 295
12.2.2线程调度 298
12.2.3线程暂停 299
12.3多线程管理 299
12.3.1多线程同步共享资源 299
12.3.2线程死锁问题 301
12.3.3线程组 301
习题12 302
第13单元Java网络程序设计 307
13.1 Java Socket程序设计基础 307
13.1.1 IP地址与InetAddress类 307
13.1.2端口号与套接口地址 309
13.1.3客户端/服务器工作模式 311
13.2基于TCP的Java Socket程序设计 311
13.2.1 Socket类和ServerSocket类 311
13.2.2 TCP Socket通信过程 313
13.2.3 TCP Socket程序设计 314
13.3基于UDP的Java Socket程序设计 318
13.3.1 DatagramPacket类和DatagramSocket类 318
13.3.2 DatagramSocket类 319
13.3.3 UDP Socket程序设计 321
13.4基于URL的Java网络程序设计 324
13.4.1 URI、URL和URN 324
13.4.2 URL类 325
13.4.3 URLConnection类 326
习题13 326
第14单元JavaBean 328
14.1 JavaBean概述 328
14.1.1软件组件与JavaBean 328
14.1.2 JavaBean结构 328
14.1.3 JavaBean规范 331
14.2开发JavaBean 331
14.2.1 JavaBean的API 331
14.2.2 JavaBean开发工具 332
习题14 334
第15单元Java数据持久化技术 336
15.1数据库与数据持久化技术 336
15.1.1数据库与SQL 336
15.1.2数据持久层的概念 339
15.2 JDBC原理 340
15.2.1 JDBC体系结构 340
15.2.2 JDBC驱动程序 341
15.2.3用JDBC URL命名数据源 342
15.3 JDBC工作流程 344
15.3.1加载数据库驱动程序 344
15.3.2创建一个数据源连接 347
15.3.3创建SQL工作空间 349
15.3.4传送SQL语句,得到结果集 349
15.3.5处理结果集 351
15.3.6关闭数据库连接 352
15.3.7实例 352
15.4连接数据库的配置文件 354
15.4.1从配置文件读取连接数据库字符串的程序结构 354
15.4.2主流数据库配置文件示例 357
15.5事务处理 358
15.5.1事务的概念 358
15.5.2 JDBC中的事务处理 359
15.5.3实例 360
15.6持久层架构Hibernate 362
15.6.1 ORM 362
15.6.2 Hibernate的基本原理 362
15.6.3 Hibernate工作流程 364
15.6.4 Hibernate开发流程 364
15.6.5 Hibernate开发环境 365
习题15 365
第4篇 面向Web开发 369
第16单元Java Web概述 369
16.1 Web支持技术 369
16.1.1超文本与超媒体 369
16.1.2 HTML 370
16.1.3 XML 371
16.1.4 HTTP 377
16.2 Java Web技术演进 381
16.2.1 Java Applets——客户端Java动态Web技术 381
16.2.2从CGI到Java Servlet再到JSP 383
16.2.3 Java EE 385
习题16 386
第17单元Java Servlet 390
17.1 Servlet环境 390
17.1.1安装JSDK 390
17.1.2 JSDK的配置 390
17.1.3 Servlet容器与Tomcat服务器 391
17.2 Servlet语法 393
17.2.1 Servlet类定义 393
17.2.2 Servlet对象生命周期 394
17.2.3 HttpServlet类的doXxx()方法 395
17.3 Servlet运行 396
17.3.1 Servlet类字节码文件的生成和保存 396
17.3.2 Servlet的部署和运行 397
习题17 398
第18单元JSP技术 404
18.1 JSP概要 404
18.1.1 JSP页面结构 404
18.1.2 JSP运行机制 405
18.1.3 JSP环境引擎 405
18.1.4 JSP注释元素 407
18.1.5 JSP页面元素 407
18.2 JSP脚本元素 408
18.2.1 JSP声明 408
18.2.2 JSP表达式 408
18.2.3 1SP代码段 408
18.3 JSP指令元素 409
18.3.1 include指令 409
18.3.2 page指令 409
18.4 JSP动作元素 410
18.4.1页面插入动作include 411
18.4.2页面切换动作forward 412
18.5 1SP内置对象 413
18.5.1 out对象 414
18.5.2 request对象 414
18.5.3 response对象 415
18.5.4 session对象 419
18.5.5 application对象 421
18.6 JSP与JavaBean交互 425
18.6.1 JSP与JavaBean交互的动作元素 425
18.6.2 JSP与JavaBean交互实例 427
习题18 429
第19单元MVC模式 434
19.1 MVC概述 434
19.1.1 MVC的概念 434
19.1.2 MVC组件与工作原理 434
19.1.3 MVC的优势与应用 435
19.2 JSP+Servlet+JavaBean实现的MVC 435
19.2.1 JSPServlet+JavaBean实现的MVC模式结构 435
19.2.2 JSP+Servlet+JavaBean实现的MVC实例 436
习题19 440
第20单元Java Web架构简介 442
20.1软件架构概述 442
20.1.1架构的概念 442
20.1.2软件架构及其目标 443
20.1.3 Java EE应用分层模型 443
20.2经典MVC支柱框架——Struts 444
20.2.1 Struts的构成 444
20.2.2 Struts的工作过程 446
20.2.3 Struts应用 446
20.2.4 Struts与Hibernate整合 446
20.2.5 Struts2 447
20.3基于控制反转和面向切面的轻量级框架——Spring 448
20.3.1基本概念 448
20.3.2 Spring的组件架构 451
20.3.3 Spring的下载和安装 453
20.3.4 Spring应用实例 453
20.3.5 SSH整合 455
20.4 Java Web用户界面标准——JSF框架 455
20.4.1 JSF的特点 455
20.4.2 JSF的工作流程 456
20.4.3 JSF应用程序结构 456
习题20 457
附录A Java运行时异常类和错误类 458
A.1 RuntimeException类 458
A.2 Error类 459
参考文献 462