目录
第1篇面向对象程序设计启步
第1单元职员类3
1.1从现实世界中的对象到类模型3
1.1.1程序=模型 表现3
1.1.2现实世界中的对象分析4
1.1.3职员类的UML描述5
1.1.4职员类的Java语言描述5
1.1.5职员类的Java代码说明6
1.2类的应用与测试8
1.2.1对象引用及其创建8
1.2.2构造器与this()9
1.2.3对象成员的访问与this11
1.2.4主方法与主类12
1.2.5类文件与包14
1.3Java程序开发16
1.3.1Java编译器与Java虚拟机16
1.3.2JDK16
1.3.3Eclipse开发环境18
1.4知识链接24
1.4.1Java语言及其特点24
1.4.2Java数据类型26
1.4.3字面值27
1.4.4基本类型的转换29
1.4.5Java关键词与标识符32
1.4.6流与标准I/O流对象33
1.4.7Java注释34
习题135
第2单元计算器类38
2.1计算器类的定义38
2.1.1计算器建模38
2.1.2Calculator类的Java描述39
2.2Calculator类的测试39
2.2.1测试数据设计39
2.2.2规避整除风险——Calculator类改进之一40
2.3异常处理——Calculator类改进之二42
2.3.1Java异常处理概述42
2.3.2Java异常处理的基本形式42
2.3.3用throws向上层抛出异常44
2.3.4用throw直接抛出异常45
2.3.5Java提供的主要异常类47
2.4用选择结构确定计算类型——Calculator类改进之三47
2.4.1用if…else实现calculate()方法47
2.4.2关系操作符49
2.4.3用switch结构实现calculate()方法50
2.5用静态成员变量存储中间结果——Calculator类改进之四52
2.5.1静态成员变量的性质52
2.5.2带有静态成员变量的Calculator类定义52
2.6知识链接54
2.6.1Java表达式54
2.6.2静态方法——类方法55
2.6.3初始化块与静态初始化块57
2.6.4String类60
2.6.5正则表达式61
2.6.6Scanner类64
习题264
第3单元素数序列产生器72
3.1问题描述与对象建模72
3.1.1素数序列产生器建模72
3.1.2getPrimeSequence()方法的基本思路72
3.2使用isPrime()判定素数的PrimeGenerator类的实现73
3.2.1采用while结构的getPrimeSequence()方法73
3.2.2采用do…while结构的getPrimeSequence()方法75
3.2.3采用for结构的getPrimeSequence()方法75
3.2.4重复结构中的continue语句76
3.2.5采用for结构的isPrime()方法76
3.2.6将isPrime()定义为静态方法77
3.2.7不用isPrime()判定素数的PrimeGenerator类的实现78
3.3知识链接79
3.3.1变量的访问属性79
3.3.2变量的作用域79
3.3.3Java数据实体的生命期80
3.3.4基本类型的包装81
习题383
第4单元扑克游戏90
4.1数组与扑克牌的表示和存储90
4.1.1数组的概念90
4.1.2数组的声明与内存分配90
4.1.3数组的初始化92
4.1.4匿名数组93
4.2数组元素的访问93
4.2.1用普通循环结构访问数组元素94
4.2.2用增强for遍历数组元素94
4.3洗牌95
4.3.1随机数与Random类95
4.3.2洗牌方法设计96
4.3.3含有洗牌方法的扑克游戏类设计98
4.4扑克的发牌与二维数组99
4.4.1基本的发牌算法99
4.4.2用二维数组表示玩家手中的牌100
4.4.3使用二维数组的发牌方法102
4.4.4含有洗牌、发牌方法的扑克游戏类设计102
4.5知识链接104
4.5.1数组实用类Arrays104
4.5.2java.util.Vector类105
4.5.3命令行参数107
4.5.4Math类108
习题4109
第2篇面向类的程序设计
第5单元类的继承115
5.1学生类研究生类层次结构115
5.1.1由Student类派生GradStudent类115
5.1.2super关键字 117
5.1.3final关键字119
5.2Java的访问权限控制119
5.2.1类成员的访问权限控制119
5.2.2类的访问权限控制120
5.2.3private构造器120
5.3类层次中的类型转换121
5.3.1类层次中的赋值兼容规则121
5.3.2里氏代换原则122
5.3.3类型转换与类型测试122
5.4方法覆盖与隐藏123
5.4.1派生类实例方法覆盖基类中签名相同的实例方法123
5.4.2用@Override标注覆盖124
5.4.3派生类静态方法隐藏基类中签名相同的静态方法126
5.4.4JVM的绑定机制127
5.5知识链接128
5.5.1Object类128
5.5.2@Deprecated与@SuppressWarnings131
5.5.3Java异常类和错误类体系135
习题5137
第6单元抽象类与接口145
6.1圆、三角形和矩形145
6.1.13个独立的类: Circle、Rectangle和Triangle145
6.1.2枚举147
6.2抽象类148
6.2.1由具体类抽象出抽象类148
6.2.2由抽象类派生出实例类150
6.2.3抽象类小结153
6.3接口153
6.3.1接口及其特点153
6.3.2接口的实现类154
6.3.3关于接口的进一步讨论156
6.4知识链接157
6.4.1Java构件修饰符小结157
6.4.2对象克隆158
习题6160
第7单元面向对象程序架构优化原则164
7.0引言164
7.1从可重用说起: 合成/聚合优先原则165
7.1.1继承重用的特点166
7.1.2合成/聚合重用及其特点166
7.1.3合成/聚合优先原则167
7.2从可维护性说起: 开闭原则168
7.2.1软件的可维护性和可扩展性168
7.2.2开闭原则169
7.3面向抽象的原则170
7.3.1具体与抽象170
7.3.2依赖倒转原则170
7.3.3面向接口原则170
7.3.4面向接口编程举例171
7.4单一职责原则175
7.4.1对象的职责175
7.4.2单一职责原则的概念176
7.4.3接口分离原则176
7.5不要和陌生人说话181
7.5.1狭义迪米特法则181
7.5.2广义迪米特法则182
习题7183
第8单元设计模式186
8.1设计模式概述186
8.2设计模式举例——诉讼代理问题186
8.2.1无律师的涉讼程序设计186
8.2.2请律师代理的涉讼程序设计187
8.2.3关于代理模式189
8.3设计模式举例——商场营销问题190
8.3.1不用策略模式的商场营销解决方案190
8.3.2策略模式的定义192
8.3.3采用策略模式的商场营销解决方案193
8.4设计模式举例——图形对象的创建问题197
8.4.1简单工厂模式197
8.4.2工厂方法模式202
8.4.3策略模式与简单工厂模式结合207
8.5知识链接209
8.5.1类文件与类加载209
8.5.2Class对象209
8.5.3反射API213
8.5.4使用反射的工厂模式215
8.5.5使用反射 配置文件的工厂模式216
习题8218
第3篇基于API的应用开发
第9单元Java 网络程序设计223
9.1IP地址与InetAddress类223
9.1.1IP协议与IP地址223
9.1.2InetAddress类223
9.2Java Socket概述225
9.2.1Socket的概念225
9.2.2客户端/服务器工作模式225
9.3面向TCP的Java Socket程序设计226
9.3.1Socket类和ServerSocket类226
9.3.2TCP Socket通信过程227
9.3.3TCP Socket程序设计229
9.4面向UDP的Java程序设计232
9.4.1DatagramPacket类233
9.4.2DatagramSocket类233
9.4.3UDP Socket程序设计235
9.5网络资源访问238
9.5.1URI、URL和URN238
9.5.2URL类239
9.5.3URLConnection类240
9.6知识链接240
9.6.1字节流与字符流240
9.6.2缓冲流与转换流245
9.6.3PrintWriter类247
习题9248
第10单元JDBC250
10.1JDBC概述250
10.1.1JDBC的组成与工作过程250
10.1.2JDBC API及其对JDBC过程的支持250
10.2加载JDBC驱动252
10.2.1JDBC数据库驱动程序的类型252
10.2.2JDBC驱动类名与JDBC驱动程序的下载254
10.2.3DriverManager类254
10.2.4注册Driver256
10.3连接数据源258
10.3.1数据源描述规则——JDBC URL258
10.3.2获取Connection对象259
10.3.3连接过程中的异常处理262
10.3.4Connection接口的常用方法262
10.4创建SQL工作空间进行数据库操作263
10.4.1SQL263
10.4.2创建SQL工作空间265
10.4.3用Statement实例封装SQL语句265
10.5处理结果集267
10.5.1结果集游标的管理267
10.5.2getXxx()方法267
10.5.3updateXxx()方法268
10.5.4关闭数据库连接268
10.5.5JDBC数据库查询实例268
10.6PreparedStatement接口271
10.6.1用PreparedStatement实例封装SQL语句的特点271
10.6.2PreparedStatement接口的主要方法271
10.6.3PreparedStatement对象操作SQL语句的步骤272
10.6.4Java日期数据275
10.7事务处理276
10.7.1事务的概念276
10.7.2Connection类中有关事务处理的方法276
10.7.3JDBC事务处理程序的基本结构277
10.8DAO模式279
10.8.1DAO概述279
10.8.2DAO模式的基本结构281
10.8.3DAO程序举例284
习题10290
第11单元JavaBean292
11.1JavaBean概述292
11.1.1软件组件与JavaBean292
11.1.2JavaBean结构293
11.1.3JavaBean规范295
11.2开发JavaBean295
11.2.1JavaBean API295
11.2.2JavaBean开发工具296
习题11298
第12单元程序文档化、程序配置与程序发布300
12.1Javadoc300
12.1.1Javadoc及其结构300
12.1.2Javadoc标签300
12.1.3Javadoc应用规范302
12.1.4Javadoc命令304
12.2自定义Annotation305
12.2.1Annotation的基本定义格式305
12.2.2向Annotation注入数据306
12.2.3通过反射提取Annotation中的数据307
12.2.4用Annotation 反射设计DAO基类308
12.3Java程序配置314
12.3.1程序配置与程序配置文件314
12.3.2.properties文件315
12.3.3XML配置文件317
12.3.4基于InputStream输入流的配置文件的读取318
12.3.5基于资源绑定的配置文件的读取325
12.4Java程序的打包与发布326
12.4.1Java程序的打包与JAR文件包326
12.4.2manifest文件326
12.4.3JAR命令329
12.4.4在Eclipse环境中创建可执行JAR包331
12.4.5在MyEclipse环境中创建可执行JAR包333
习题12333
第4篇Java高级技术
第13单元Java泛型编程337
13.1泛型基础337
13.1.1问题的提出337
13.1.2泛型方法339
13.1.3多泛型类340
13.2泛型语法扩展341
13.2.1泛型通配符341
13.2.2泛型设限342
13.2.3泛型嵌套342
13.3实例——利用泛型和反射机制抽象DAO343
习题13345
第14单元Java多线程347
14.1Java多线程概述347
14.1.1进程与线程347
14.1.2Java线程的生命周期348
14.1.3Java多线程程序实例: 室友叫醒352
14.1.4线程调度与线程优先级356
14.1.5知识链接: JVM运行时数据区356
14.2 java.lang.Thread类358
14.2.1Thread类的构造器358
14.2.2Thread类中的优先级别静态常量359
14.2.3Thread类中影响线程状态的方法359
14.2.4Thread类中的一般方法360
14.2.5Thread类从Object继承的方法360
14.3多线程管理360
14.3.1多线程同步共享资源360
14.3.2线程死锁问题362
14.3.3线程组362
习题14363
第15单元Java数据结构和接口369
15.1数据的逻辑结构与物理结构369
15.1.1数据的逻辑结构369
15.1.2数据的物理结构370
15.1.3Java数据结构API372
15.2接口及其应用373
15.2.1Collection接口及其方法373
15.2.2List接口及其实现374
15.2.3Set接口及其实现376
15.3聚集的标准输出378
15.3.1Iterator接口378
15.3.2foreach379
15.4Map接口类及其应用380
15.4.1Map接口的定义与方法380
15.4.2Map.Entry接口380
15.4.3HashMap类和TreeMap类381
习题15383
附录A符号385
A.1Java主要操作符的优先级和结合性385
A.2Javadoc标签385
附录BJava运行时异常类和错误类387
B.1RuntimeException类387
B.2Error类388
附录CJava常用的工具包390
参考文献391