12.16 练习题 25 1
1.2 类 3
第一篇 面向对象程序设计 3
1.1 对象 3
第1章 面向对象程序设计的基本概念 3
1.3 类型 4
1.4.1 信息/实现隐藏 5
1.4 封装 5
1.4.2 状态保持 6
1.5 继承 6
1.6 多态 7
1.7 小结 8
1.8 练习题 9
第2章 Java面向对象程序设计概述 10
2.1 引言 10
2.2 变量 11
2.3 注释 12
2.4 命名常量 12
2.5 控制流 13
2.6 类和对象 15
2.6.1 创建对象 15
2.6.2 静态域或类域 16
2.6.3 废区收集 17
2.7 方法和形参 17
2.7.1 方法的调用 18
2.7.2 this引用 19
2.7.3 静态方法或类方法 19
2.8 数组 20
2.9 字符串对象 23
2.10 类的扩展 24
2.10.1 调用超类的方法 26
2.10.2 Object类 26
2.10.3 类型强制转换 27
2.11 接口 27
2.12 异常 29
2.13 包 31
2.14 Java的底层结构 33
2.15 其他主题 33
2.16 小结 33
2.17 练习题 34
3.1.1 字符集 37
3.1.2 标记 37
3.1 词法元素 37
第3章 标记、运算符和表达式 37
第二篇 Java语言的命令式成分 37
3.1.3 标识符 38
3.1.4 关键字 38
3.2 类型及其字面值 39
3.2.1 基本类型 39
3.2.2 引用值 40
3.2.3 布尔值 40
3.2.4 字符值 40
3.2.5 整型值 40
3.3 变量 41
3.2.8 类的字面值 41
3.2.7 字符串值 41
3.2.6 浮点值 41
3.3.1 域和局部变量 42
3.3.2 形参 42
3.3.3 final变量 43
3.3.4 初始值 44
3.4 数组变量 44
3.4.1 数组修饰符 45
3.4.2 数组的数组 45
3.4.3 数组的初始化 46
3.4.4 数组和类型 47
3.5 算术运算符 48
3.5.1 整数运算 48
3.5.2 浮点运算 48
3.5.3 严格和非严格的浮点运算 49
3.6 普通运算符 50
3.6.1 递增与递减运算符 50
3.6.2 关系和判等运算符 51
3.6.3 逻辑运算符 52
3.6.4 instanceof运算符 53
3.6.5 按位运算符 53
3.6.6 条件运算符?: 54
3.6.7 赋值运算符 54
3.6.8 字符串连接 55
3.7 运算符的优先级和结合性 56
3.8 表达式 57
3.8.1 运算顺序 57
3.8.3 隐式转换 58
3.8.2 表达式类型 58
3.8.4 显式转换 59
3.9 访问成员 60
3.8.5 字符串转换 60
3.10 小结 61
3.11 练习题 61
第4章 流程控制 64
4.1 语句和分程序 64
4.2 if-else 65
4.3 switch-case-default 66
4.4 while和do-while 68
4.5 for 69
4.6 标号 71
4.7 break 71
4.8 continue 73
4.9 return 74
4.10 没有goto语句的原因 75
4.11 小结 75
4.12 练习题 76
第三篇 Java语言的面向对象机制 79
第5章 类和对象 79
5.1 一个简单的类 79
5.1.1 类成员 80
5.1.2 类修饰符 80
5.2 域 80
5.2.1 域初始化 81
5.2.2 静态域 81
5.3 访问控制 82
5.2.3 final域 82
5.4 创建对象 83
5.5 构造与初始化 84
5.5.1 构造器 84
5.5.2 初始化块 86
5.5.3 静态初始化 87
5.6 方法 88
5.6.1 静态方法 89
5.6.2 方法调用 89
5.6.3 方法执行和返回 90
5.6.4 形参值 91
5.6.5 用方法来控制访问 93
5.7 this引用 95
5.8 方法的名复用 95
10.3.2 throws子句和本地方法 1 97
5.9 main方法 97
5.10 native方法 98
5.11 小结 99
5.12 练习题 100
第6章 类的扩展 102
6.1 扩展类举例 102
6.2 扩展类中的构造器 106
6.3.1 方法的改写 109
6.3 方法的改写和域的隐藏 109
6.3.2 域的隐藏 110
6.3.3 访问继承成员 110
6.3.4 可访问性与改写 111
6.3.5 隐藏静态成员 112
6.3.6 super关键字 112
6.4.1 兼容性 113
6.4.2 显式的类型强制转换 113
6.4 类型兼容与类型转换 113
6.4.3 类型测试 114
6.5 protected的真正含义 114
6.6 final方法和类 116
6.7 抽象类和方法 118
6.8 Object类 119
6.9 对象的克隆 120
6.9.1 克隆策略 120
6.9.2 正确克隆 121
6.9.3 深度克隆和浅度克隆 124
6.10 扩展类的使用 124
6.11 扩展使用的类 125
6.12 单继承和多继承 129
6.13 小结 130
6.14 练习题 131
第7章 接口 133
7.1 接口举例 133
7.2 接口的说明 136
7.2.2 接口方法 136
7.2.1 接口常量 136
7.2.3 接口修饰符 137
7.3 扩展接口 137
7.3.1 继承和隐藏常量 137
7.3.2 继承、改写和名复用 138
7.4 接口的使用 139
7.4.1 接口的实现 140
7.4.2 实现的使用 141
7.6 何时使用接口 142
7.5 标记接口 142
7.7 小结 143
7.8 练习题 144
8.1.1 静态内嵌类 145
第8章 内嵌类型 145
8.1 静态内嵌类型 145
8.1.2 静态内嵌接口 146
8.2 内含类 146
8.2.1 访问 148
8.2.2 扩展内含类 148
8.2.3 继承、作用域和隐藏 149
8.3 局部内含类 150
8.4 匿名内含类 152
8.5 内嵌类型的继承 153
8.6 接口中的内嵌类型 154
8.7 内嵌类型的实现 155
8.8 名字的含义 156
8.9 小结 158
8.10 练习题 159
9.1 断言 160
9.1.1 断言语句 160
第9章 Java新添语言成分 160
9.1.2 断言用法 161
9.1.3 编译和运行 166
9.2 类属 166
9.2.1 需要类属的原因 167
9.2.2 简单类属 167
9.2.3 类属的类型兼容问题 168
9.2.4 通配符 168
9.2.5 类属方法 171
9.3 逐元循环 173
9.4 自动包装/解包 175
9.5 枚举类型 176
9.5.1 枚举举例 177
9.5.2 增加数据和行为 179
9.5.3 增加特定行为 180
9.5.4 EnumSet和EnumMap 181
9.6 可变形参 182
9.7 静态移入 184
9.8 诠释 184
9.8.2 给程序添加诠释 185
9.8.1 诠释类型说明 185
9.8.3 诠释的应用 186
9.9 小结 188
9.10 练习题 189
第四篇 Java语言基础类 193
第10章 异常 193
10.1 创建异常类型 193
10.2 throw 194
10.2.1 控制转移 195
10.2.2 异步异常 195
10.3 throws子句 196
10.3.1 throws子句和方法改写 197
10.4 try、catch和finally子句 197
10.5 何时使用异常 201
10.6 小结 202
10.7 练习题 203
第11章 字符串 204
11.1 基本字符串操作 204
11.2 字符串比较 205
11.3 实用功能 208
11.4 建立相关字符串 209
11.5 字符串转换 210
11.6 字符串与char数组 211
11.7 字符串与byte数组 212
11.8 StringBuffer类 213
11.8.1 修改缓冲区 214
11.8.2 提取数据 216
11.8.3 容量管理 216
11.10 练习题 217
11.9 小结 217
第12章 线程 218
12.1 线程的创建 219
12.2 使用Runnable 221
12.3 同步 224
12.3.1 同步方法 225
12.3.2 静态同步方法 226
12.3.3 同步语句 227
12.3.4 同步设计 230
12.4 线程通信 231
12.5 wait和notify的细节 233
12.6 线程调度 234
12.7 死锁 237
12.8 结束线程的执行 239
12.8.1 取消线程 239
12.8.2 等待线程结束 241
12.9 结束应用程序的执行 243
12.10 易变性(volatile) 243
12.11 线程管理、安全性与线程组 244
12.12 线程与异常 247
12.13 ThreadLocal变量 249
12.14 调试线程 250
12.15 小结 251
13.1 包装类 253
第13章 类型编程 253
13.1.1 Void类 255
13.1.2 Boolean类 255
13.1.3 Character类 256
13.1.4 Number类 258
13.1.5 整数包装类 259
13.1.6 浮点包装类 260
13.2 反射 261
13.2.1 Class类 262
13.2.2 类属的反射 265
13.2.3 命名类 268
13.2.4 检查类成员 269
13.2.5 Modifier类 272
13.2.6 Field类 273
13.2.7 Method类 274
13.2.8 创建对象与Constructor类 276
13.2.9 访问检查与AccessibleObject类 278
13.2.10 诠释的反射 278
13.2.11 枚举的反射 280
13.2.12 数组 281
13.2.13 包 282
13.2.14 Proxy类 282
13.3 类的加载 284
13.3.1 ClassLoader类 286
13.3.2 类的准备 289
13.3.3 加载相关资源 289
13.4 小结 291
13.5 练习题 292
第14章 废区收集与内存管理 293
14.1 废区收集 293
14.2 一个简单模型 294
14.3 终结 295
14.4 与废区收集器交互 297
14.5 可达状态与引用对象 298
14.5.1 Reference类 298
14.5.2 引用的强度和可达性 299
14.5.3 引用队列 301
14.6 小结 303
14.7 练习题 304
15.1 包的命名 305
第15章 包 305
15.2 类型移入 306
15.3 包的访问 307
15.4 包的内容 311
15.5 Package对象 311
15.6 小结 313
15.7 练习题 314
第五篇 J2SE类库 317
第16章 输入/输出包 317
16.1 字节流 318
16.1.1 InputStream输入流 319
16.1.2 OutputStream输出流 320
16.2.1 Reader类 322
16.2 字符流 322
16.2.2 Writer类 324
16.2.3 字符流和标准流 325
16.3 转换流 325
16.4 流类简介 326
16.4.1 同步和并发 327
16.4.2 Filter流 328
16.4.3 Buffered流 330
16.4.4 Piped流 330
16.4.5 ByteArray字节流 332
16.4.6 CharArray字符流 333
16.4.7 String字符流 334
16.4.8 Print流 335
16.4.9 LineNumberReader类 336
16.4.10 SequenceInputStream类 337
16.4.11 Pushback流 338
16.4.12 StreamTokenizer类 340
16.5 数据字节流 344
16.5.1 DataInput和DataOutput接口 344
16.5.2 Data流类 345
16.6 文件处理 346
16.6.1 File流和FileDescriptor 346
16.6.2 RandomAccessFile类 347
16.6.3 File类 348
16.6.4 FilenameFilter与FileFilter接口 352
16.7 对象序化 353
16.7.1 Object字节流 353
16.7.2 使类可序化 354
16.7.3 序化和去序化的顺序 355
16.7.4 定制序化 356
16.7.5 对象版本 359
16.7.6 序化域 360
16.7.7 Externalizable接口 362
16.8 IOException异常 362
16.9 小结 364
16.10 练习题 364
第17章 集聚类型 365
17.1 集聚 365
17.2 迭代 367
17.3 排序 369
17.4 Collection接口 370
17.5 Set与SortedSet接口 371
17.5.2 TreeSet类 373
17.5.1 HashSet类 373
17.6 List接口 374
17.6.1 ArrayList类 375
17.6.2 LinkedList类 375
17.7 Map与SortedMap接口 377
17.7.1 HashMap类 379
17.7.2 TreeMap类 379
17.7.3 WeakHashMap类 380
17.8 包装的集聚和Collections类 380
17.8.1 同步包装 380
17.8.2 不可修改的包装对象 382
17.8.3 Collections工具方法 382
17.10 Iterator的实现 385
17.9 Arrays类 385
17.11 Collection的实现 387
17.12 遗留集聚类型 391
17.12.1 Enumeration接口 392
17.12.2 Vector类 392
17.12.3 Stack类 392
17.12.4 Dictionary类 392
17.12.5 Hashtable类 393
17.13 Properties类 393
17.14 小结 394
17.15 练习题 395
第18章 其他设施 396
18.1 BitSet类 396
18.2 Observer/Observable 398
18.3 Random类 401
18.4 StringTokenizer类 402
18.5 Timer和TimerTask类 403
18.6 Date类 405
18.7 Math和StrictMath类 406
18.8 小结 407
18.9 练习题 407
第19章 系统编程 409
19.1 System类 409
19.1.1 标准I/O流 409
19.1.2 系统性质 410
19.2.1 Process类 413
19.2 创建进程 413
19.1.3 实用工具 413
19.2.2 进程的环境变量 415
19.2.3 可移植性 416
19.3 停机 416
19.3.1 停机钩子 416
19.3.2 停机序列 417
19.3.3 停机策略 418
19.4 Runtime类的其他功能 418
19.4.1 加载本地代码库 418
19.4.2 调试 419
19.5 安全性 419
19.5.1 SecurityManager类 419
19.5.2 许可 420
19.5.3 安全策略 421
19.5.4 访问控制与特权执行 422
19.6 小结 423
19.7 练习题 423
第20章 其他包 424
20.1 java.awt——抽象窗口工具 425
20.2 java.applet——小应用程序 427
20.3 java.beans——构件 428
20.4 java.math——教学运算 429
20.5 java.net——网络 430
20.6 java.rmi——远程方法调用 433
20.7 java.security——安全工具 437
20.8 java.sql/javax.sql——关系数据库访问 437
20.9 java.nio——新输入/输出 440
20.11.1 归档文件——java.util.jar 441
20.10 java.text——多语种支持 441
20.11 工具子包 441
20.11.2 ZIP文件——java.util.zip 442
20.12 javax.*——标准扩展包 442
20.13 javax.accessibility——GUI的易用性 442
20.14 javax.naming——命名与目录服务 443
20.15 javax.sound——声音处理 444
20.16 javax.swing——Swing GUI构件 444
20.17 org.omg.CORBA——CORBAAPI 444
20.18 小结 445
附录A Java语言语法规范 446
附录B 文档注释语法规范 461
参考文献 463