目 录
第Ⅰ部分 Java语言
第1章 Java的历史和演变 .................... 3
1.1 Java的家世 ................................. 4
1.1.1 现代编程语言的诞生:
C语言 ...................................... 4
1.1.2 C++:下一个阶段 ................... 5
1.1.3 Java出现的时机已经成熟 ..... 6
1.2 Java的诞生 ................................. 6
1.3 Java改变Internet的方式 ........... 8
1.3.1 Java applet ................................ 8
1.3.2 安全性 ...................................... 8
1.3.3 可移植性 .................................. 9
1.4 Java的魔力:字节码 ................. 9
1.5 servlet:服务器端的Java ......... 10
1.6 Java的关键特性 ....................... 10
1.6.1 简单性 ................................... 10
1.6.2 面向对象 ............................... 11
1.6.3 健壮性 ................................... 11
1.6.4 多线程 ................................... 11
1.6.5 体系结构中立 ....................... 11
1.6.6 解释执行和高性能................ 12
1.6.7 分布式 ................................... 12
1.6.8 动态性 ................................... 12
1.7 Java的演变历程 ....................... 12
1.8 文化革新 ................................... 15
Java 完全参考手册(第 8 版)
VIII
第2章 Java综述 ................................ 17
2.1 面向对象编程 ........................... 17
2.1.1 两种范式 ................................ 18
2.1.2 抽象........................................ 18
2.1.3 OOP三原则 ........................... 19
2.2 第一个简单程序 ....................... 23
2.2.1 输入程序 ................................ 23
2.2.2 编译程序 ................................ 23
2.2.3 深入分析第一个示例程序 .... 24
2.3 第二个简短程序 ....................... 26
2.4 两种控制语句 ........................... 28
2.4.1 if语句 .................................... 28
2.4.2 for循环 .................................. 29
2.5 使用代码块 ............................... 30
2.6 词汇问题 ................................... 32
2.6.1 空白符 .................................... 32
2.6.2 标识符 .................................... 32
2.6.3 字面值 .................................... 32
2.6.4 注释........................................ 32
2.6.5 分隔符 .................................... 33
2.6.6 Java关键字 ............................ 33
2.7 Java类库 ................................... 34
第3章 数据类型、变量和数组 ............ 35
3.1 Java是强类型化的语言 ........... 35
3.2 基本类型 ................................... 36
3.3 整型 ........................................... 36
3.3.1 byte ......................................... 37
3.3.2 short........................................ 37
3.3.3 int ........................................... 37
3.3.4 long ........................................ 37
3.4 浮点型 ....................................... 38
3.4.1 float ........................................ 38
3.4.2 double ..................................... 39
3.5 字符型 ....................................... 39
3.6 布尔型 ....................................... 41
3.7 深入分析字面值 ....................... 42
3.7.1 整型字面值 ............................ 42
3.7.2 浮点型字面值 ....................... 43
3.7.3 布尔型字面值 ....................... 44
3.7.4 字符型字面值 ....................... 44
3.7.5 字符串字面值 ....................... 44
3.8 变量 ........................................... 45
3.8.1 变量的声明 ........................... 45
3.8.2 动态初始化 ........................... 45
3.8.3 变量的作用域和生命周期.... 46
3.9 类型转换和强制类型转换 ........ 48
3.9.1 Java的自动类型转换 ........... 49
3.9.2 强制转换不兼容的类型 ........ 49
3.10 表达式中的自动类型提升 ...... 50
3.11 数组 .......................................... 52
3.11.1 一维数组 ............................ 52
3.11.2 多维数组 ............................ 54
3.11.3 另一种数组声明语法 ........ 58
3.12 关于字符串的一些说明 .......... 59 3.13 向C/C++程序员提供指针
方面的注解 ............................. 60
第4章 运算符 ...................................... 61
4.1 算术运算符................................ 61
4.1.1 基本算术运算符 ................... 62
4.1.2 求模运算符 ........................... 63
4.1.3 算术与赋值复合运算符 ........ 64
4.1.4 自增与自减运算符................ 65
4.2 位运算符 ................................... 66
4.2.1 位逻辑运算符 ....................... 68
4.2.2 左移 ....................................... 70
4.2.3 右移 ....................................... 71
4.2.4 无符号右移 ........................... 73
4.2.5 位运算符与赋值的组合 ........ 74
4.3 关系运算符................................ 75
4.4 布尔逻辑运算符 ........................ 76
4.5 赋值运算符................................ 78
4.6 “?”运算符 .............................. 78
4.7 运算符的优先级 ........................ 79
4.8 使用圆括号................................ 80
目 录
IX
第5章 控制语句 .................................. 83
5.1 Java的选择语句 ....................... 83
5.1.1 if语句 .................................... 84
5.1.2 switch语句 ............................ 87
5.2 迭代语句 ................................... 91
5.2.1 while语句 .............................. 92
5.2.2 do-while语句......................... 93
5.2.3 for语句 .................................. 96
5.2.4 for循环的for-each版本 .... 100
5.2.5 嵌套的循环 ......................... 105
5.3 跳转语句 ................................. 106
5.3.1 使用break语句 .................. 106
5.3.2 使用continue语句 .............. 110
5.3.3 return语句 ........................... 111
第6章 类........................................... 113
6.1 类的基础知识 ......................... 114
6.1.1 类的一般形式 ...................... 114
6.1.2 一个简单的类 ...................... 115
6.2 声明对象 ................................. 117
6.3 为对象引用变量赋值 ............. 119
6.4 方法 ......................................... 120
6.4.1 为Box类添加方法 ............ 120
6.4.2 返回值 ................................. 122
6.4.3 添加带参数的方法 ............. 124
6.5 构造函数 ................................. 126
6.6 this关键字 .............................. 129
6.7 垃圾回收 ................................. 130
6.8 finalize()方法 ........................... 130
6.9 堆栈类 ..................................... 131
第7章 方法和类的深入分析.............. 135
7.1 重载方法 ................................. 135
7.2 将对象用作参数 ..................... 140
7.3 参数传递的深入分析 ............. 143
7.4 返回对象 ................................. 145
7.5 递归 ......................................... 146
7.6 访问控制 ................................. 148
7.7 理解static ................................ 151
7.8 final介绍 ................................. 153
7.9 重新审视数组.......................... 154
7.10 嵌套类和内部类 .................... 156
7.11 String类介绍 ......................... 158
7.12 使用命令行参数 .................... 161
7.13 varargs:可变长度参数 ........ 162
7.13.1 重载varargs方法 ............ 165
7.13.2 varargs方法与模糊性 ..... 166
第8章 继承 ....................................... 169
8.1 继承的基础知识 ...................... 169
8.1.1 成员访问与继承 ................. 171
8.1.2 一个更实际的例子.............. 172 8.1.3 超类变量可以引用子类
对象 ..................................... 174
8.2 使用super关键字 ................... 175 8.2.1 使用super调用超类的
构造函数 ............................. 176
8.2.2 super的另一种用法 ............ 179
8.3 创建多级继承层次 .................. 180
8.4 构造函数的调用时机 .............. 183
8.5 方法重写 ................................. 184
8.6 动态方法调度.......................... 187
8.6.1 重写方法的目的 ................. 189
8.6.2 应用方法重写 ..................... 189
8.7 使用抽象类.............................. 191
8.8 在继承中使用final关键字 .... 193 8.8.1 使用final关键字阻止
重写 ..................................... 194 8.8.2 使用final关键字阻止
继承 ..................................... 194
8.9 Object类 .................................. 195
第9章 包和接口 ............................... 197
9.1 包 ............................................. 198
9.1.1 定义包 ................................. 198
9.1.2 包查找与CLASSPATH....... 199
9.1.3 一个简短的包示例.............. 199
9.2 访问保护 ................................. 200
Java 完全参考手册(第 8 版)
X
9.3 导入包 ..................................... 204
9.4 接口 ......................................... 206
9.4.1 定义接口 ............................. 207
9.4.2 实现接口 ............................. 207
9.4.3 嵌套接口 ............................. 210
9.4.4 应用接口 .............................. 211
9.4.5 接口中的变量 ..................... 214
9.4.6 接口可以扩展 ..................... 216
第10章 异常处理 .............................. 219
10.1 异常处理的基础知识 ........... 219
10.2 异常类型 ............................... 220
10.3 未捕获的异常 ....................... 221
10.4 使用try和catch ................... 222
10.5 多条catch子句 ..................... 224
10.6 嵌套的try语句 ..................... 226
10.7 throw ...................................... 228
10.8 throws .................................... 229
10.9 finally ..................................... 230
10.10 Java的内置异常 ................. 232
10.11 创建自己的异常子类 ......... 233
10.12 链式异常 ............................. 235 10.13 JDK 7中3个新的
异常特性 ............................. 237
10.14 使用异常 ............................. 238
第11章 多线程编程 .......................... 239
11.1 Java线程模型 ....................... 240
11.1.1 线程优先级 ..................... 241
11.1.2 同步 ................................. 242
11.1.3 消息传递 ......................... 242 11.1.4 Thread类和Runnable
接口 ................................. 242
11.2 主线程 ................................... 243
11.3 创建线程 ............................... 244
11.3.1 实现Runnable接口 ........ 245
11.3.2 扩展Thread类 ............... 247
11.3.3 选择一种创建方式 ......... 248
11.4 创建多个线程 ....................... 248
11.5 使用isAlive()和join()方法 .... 250
11.6 线程优先级 ............................ 252
11.7 同步 ........................................ 253
11.7.1 使用同步方法 ................. 253
11.7.2 synchronized语句 ........... 255
11.8 线程间通信 ............................ 257
11.9 挂起、恢复与停止线程 ........ 263 11.9.1 Java 1.1以前使用的挂起、
恢复和停止线程的方式 .... 264 11.9.2 挂起、恢复与停止线程的
现代方式.......................... 266
11.10 获取线程的状态 .................. 268
11.11 使用多线程 .......................... 270 第12章 枚举、自动装箱与注解
(元数据) ............................... 271
12.1 枚举 ....................................... 271
12.1.1 枚举的基础知识 ............. 272 12.1.2 values()和valueOf()
方法 ................................. 274
12.1.3 Java枚举是类类型 ......... 275
12.1.4 枚举继承自Enum类 ...... 278
12.1.5 另一个枚举示例 ............. 279
12.2 类型封装器............................ 281
12.2.1 Character封装器 ............. 281
12.2.2 Boolean封装器 ............... 282
12.2.3 数值类型封装器 ............. 282
12.3 自动装箱 ............................... 283
12.3.1 自动装箱与方法 ............. 284 12.3.2 表达式中发生的
自动装箱/拆箱................. 285 12.3.3 布尔型和字符型数值的
自动装箱/拆箱................. 287 12.3.4 自动装箱/拆箱有助于
防止错误.......................... 287
12.3.5 一些警告 ......................... 288
12.4 注解(元数据) ......................... 289
12.4.1 注解的基础知识 ............. 289
目 录
XI
12.4.2 指定保留策略 ................. 289 12.4.3 在运行时使用反射获取
注解 ................................. 290
12.4.4 AnnotatedElement接口 .... 296
12.4.5 使用默认值 ..................... 296
12.4.6 标记注解......................... 297
12.4.7 单成员注解 ..................... 298
12.4.8 内置注解......................... 300
12.4.9 一些限制......................... 301
第13章 I/O、applet以及其他主题 ...... 303
13.1 I/O的基础知识 ..................... 304
13.1.1 流 .................................... 304
13.1.2 字节流和字符流 ............. 304
13.1.3 预定义流......................... 306
13.2 读取控制台输入 ................... 307
13.2.1 读取字符......................... 307
13.2.2 读取字符串 ..................... 308
13.3 向控制台写输出 ................... 310
13.4 PrintWriter类 ........................ 311
13.5 读/写文件 .............................. 312
13.6 自动关闭文件 ....................... 318
13.7 applet的基础知识................. 321
13.8 transient和volatile修饰符 .... 324
13.9 使用instanceof运算符 ......... 324
13.10 strictfp .................................. 327
13.11 本地方法 ............................. 327
13.12 使用断言 ............................. 331
13.13 静态导入 ............................. 334 13.14 通过this()调用重载的
构造函数 ............................. 336
第14章 泛型 ..................................... 339
14.1 什么是泛型 ........................... 340
14.2 一个简单的泛型示例 ........... 340
14.2.1 泛型只使用对象 ............. 344 14.2.2 基于不同类型参数的
泛型类型是不同的 ......... 344 14.2.3 泛型提升类型安全性的
原理 ................................. 344
14.3 带两个类型参数的泛型类 .... 347
14.4 泛型类的一般形式 ................ 348
14.5 有界类型 ............................... 349
14.6 使用通配符参数 .................... 351
14.7 创建泛型方法........................ 359
14.8 泛型接口 ............................... 362
14.9 原始类型与遗留代码 ............ 364
14.10 泛型类层次.......................... 367
14.10.1 使用泛型超类 ............. 367
14.10.2 泛型子类 ..................... 369 14.10.3 泛型层次中的运行时
类型比较 ..................... 370
14.10.4 强制转换 ..................... 373
14.10.5 重写泛型类的方法 ..... 373
14.11 泛型的类型推断 .................. 374
14.12 擦拭 ..................................... 376
14.13 模糊性错误.......................... 379
14.14 使用泛型的一些限制 .......... 381
14.14.1 不能实例化类型参数 ... 381 14.14.2 对静态成员的一些
限制 ............................. 381 14.14.3 对泛型数组的一些
限制 ............................. 382
14.14.4 对泛型异常的限制 ..... 383 第Ⅱ部分 Java库
第15章 字符串处理 .......................... 387
15.1 String类的构造函数 ............. 388
15.2 字符串的长度........................ 390
15.3 特殊的字符串操作 ................ 391
15.3.1 字符串字面值 ................. 391
15.3.2 字符串连接 ..................... 391 15.3.3 字符串和其他数据
类型的连接 ..................... 392 15.3.4 字符串转换和toString()
方法 ................................. 393
Java 完全参考手册(第 8 版)
XII
15.4 提取字符 ............................... 394
15.4.1 charAt() ........................... 394
15.4.2 getChars() ........................ 394
15.4.3 getBytes() ........................ 395
15.4.4 toCharArray() .................. 395
15.5 比较字符串 ........................... 395 15.5.1 equals()和
equalsIgnoreCase() .......... 395
15.5.2 regionMatches() .............. 396 15.5.3 startsWith()和
endsWith() ....................... 397
15.5.4 equals()与== ................... 397
15.5.5 compareTo() .................... 398
15.6 查找字符串 ........................... 399
15.7 修改字符串 ........................... 401
15.7.1 substring() ....................... 401
15.7.2 concat() ........................... 402
15.7.3 replace() .......................... 402
15.7.4 trim() ............................... 403
15.8 使用valueOf()转换数据 ....... 404 15.9 改变字符串中字符的
大小写 ................................... 404
15.10 其他String方法 .................. 405
15.11 StringBuffer类 .................... 406 15.11.1 StringBuffer类的
构造函数 .................... 406
15.11.2 length()与capacity() ... 407
15.11.3 ensureCapacity() ......... 407
15.11.4 setLength() .................. 408 15.11.5 charAt()与
setCharAt() ................. 408
15.11.6 getChars() ................... 409
15.11.7 append() ...................... 409
15.11.8 insert() ......................... 409
15.11.9 reverse() ...................... 410 15.11.10 delete()与
deleteCharAt()............ 411
15.11.11 replace() ..................... 411
15.11.12 substring() .................. 412 15.11.13 其他StringBuffer
方法 ........................... 412
15.12 StringBuilder类 ................... 413
第16章 探究java.lang ..................... 415
16.1 基本类型封装器 .................... 416
16.1.1 Number ............................ 416
16.1.2 Double与Float ............... 417 16.1.3 理解isInfinite()与
isNaN() ............................ 420 16.1.4 Byte、Short、Integer和
Long ................................. 420
16.1.5 Character .......................... 427 16.1.6 对Unicode代码点的
附加支持 ......................... 430
16.1.7 Boolean ............................ 431
16.2 Void类 ................................... 432
16.3 Process类 .............................. 432
16.4 Runtime类 ............................. 433
16.4.1 内存管理 ......................... 434
16.4.2 执行其他程序 ................. 435
16.5 ProcessBuilder类 .................. 436
16.6 System类 ............................... 439 16.6.1 使用currentTimeMillis()
计时程序的执行 ............. 440
16.6.2 使用arraycopy() .............. 441
16.6.3 环境属性 ......................... 442
16.7 Object类 ................................ 442 16.8 使用clone()方法和Cloneable
接口 ....................................... 443
16.9 Class类 .................................. 445
16.10 ClassLoader类 ..................... 448
16.11 Math类 ................................ 448
16.11.1 三角函数 ..................... 448
16.11.2 指数函数 ..................... 449
16.11.3 舍入函数 ..................... 449
16.11.4 其他数学方法 ............. 450
目 录
XIII
16.12 StrictMath类 ....................... 452
16.13 Compiler类 ......................... 452 16.14 Thread类、ThreadGroup类
和Runnable接口 ................ 452
16.14.1 Runnable接口 ............ 452
16.14.2 Thread类 .................... 452
16.14.3 ThreadGroup类 .......... 454 16.15 ThreadLocal和
InheritableThreadLocal类 .... 459
16.16 Package类 ........................... 459
16.17 RuntimePermission类 ......... 460
16.18 Throwable类 ....................... 460
16.19 SecurityManager类 ............. 460
16.20 StackTraceElement类 ......... 460
16.21 Enum类 ............................... 461
16.22 ClassValue类 ...................... 462
16.23 CharSequence接口 ............. 462
16.24 Comparable接口 ................. 462
16.25 Appendable接口 ................. 463
16.26 Iterable接口 ........................ 463
16.27 Readable接口 ..................... 464
16.28 AutoCloseable接口 ............. 464 16.29 Thread.UncaughtException-
Handler接口 ....................... 464
16.30 java.lang子包 ...................... 464
16.30.1 java.lang.annotation .... 465
16.30.2 java.lang.instrument .... 465
16.30.3 java.lang.invoke .......... 465
16.30.4 java.lang.management ... 465
16.30.5 java.lang.ref ................ 465
16.30.6 java.lang.reflect........... 465 第17章 java.util第1部分:
集合框架 .............................. 467
17.1 集合概述 ............................... 468
17.2 JDK 5对集合框架的修改 .... 469 17.2.1 泛型从根本上改变了
集合框架 ......................... 470 17.2.2 自动装箱使得使用基本
类型更加容易 ................. 470
17.2.3 for-each风格的循环 ....... 470
17.3 集合接口 ............................... 470
17.3.1 Collection接口 ................ 471
17.3.2 List接口 .......................... 473
17.3.3 Set接口 ........................... 474
17.3.4 SortedSet接口 ................. 474
17.3.5 NavigableSet接口 ........... 475
17.3.6 Queue接口 ...................... 476
17.3.7 Deque接口 ...................... 477
17.4 集合类 ................................... 479
17.4.1 ArrayList类 ..................... 480
17.4.2 LinkedList类 ................... 483
17.4.3 HashSet类 ....................... 484
17.4.4 LinkedHashSet类 ............ 486
17.4.5 TreeSet类 ........................ 486
17.4.6 PriorityQueue类 .............. 487
17.4.7 ArrayDeque类 ................. 488
17.4.8 EnumSet类 ...................... 489
17.5 通过迭代器访问集合 ............ 490
17.5.1 使用迭代器 ..................... 491 17.5.2 使用for-each循环替代
迭代器 ............................. 493 17.6 在集合中存储用户
定义的类................................ 494
17.7 RandomAccess接口 .............. 495
17.8 使用映射 ............................... 496
17.8.1 映射接口 ......................... 496
17.8.2 映射类 ............................. 500
17.9 比较器 ................................... 505
17.10 集合算法.............................. 508
17.11 Arrays类 .............................. 513
17.12 需要泛型集合的原因 .......... 518
17.13 遗留的类和接口 .................. 521
17.13.1 Enumeration接口 ....... 521
17.13.2 Vector类 ..................... 521
17.13.3 Stack类 ....................... 525
Java 完全参考手册(第 8 版)
XIV
17.13.4 Dictionary类 .............. 527
17.13.5 Hashtable类 ............... 528
17.13.6 Properties类 ............... 532
17.13.7 使用store()和load() .... 535
17.14 集合小结 ............................. 537 第18章 java.util第2部分:更多实用
工具类 ................................. 539
18.1 StringTokenizer类 ................. 539
18.2 BitSet类 ................................ 541
18.3 Date类 ................................... 544
18.4 Calendar类 ............................ 546
18.5 GregorianCalendar类 ............ 549
18.6 TimeZone类 .......................... 550
18.7 SimpleTimeZone类 .............. 551
18.8 Locale类 ............................... 552
18.9 Random类 ............................. 554
18.10 Observable类 ...................... 555
18.10.1 Observer接口 ............. 556
18.10.2 Observer示例 ............. 556
18.11 Timer和TimerTask类 ........ 559
18.12 Currency类 ......................... 561
18.13 Formatter类 ........................ 562 18.13.1 Formatter类的
构造函数 .................... 563
18.13.2 Formatter类的方法 .... 563
18.13.3 格式化的基础知识 .... 564
18.13.4 格式化字符串和字符 ... 566
18.13.5 格式化数字 ................ 566
18.13.6 格式化时间和日期 .... 567
18.13.7 %n和%%说明符 ....... 569
18.13.8 指定最小字段宽度 .... 569
18.13.9 指定精度 .................... 571
18.13.10 使用格式标志 .......... 572
18.13.11 对齐输出 .................. 572 18.13.12 空格、“+”、“0”以及
“(”标志 ................... 573
18.13.13 逗号标志 .................. 574
18.13.14 “#:”标志 ............... 574
18.13.15 大写选项 ................... 574
18.13.16 使用参数索引 ........... 575
18.13.17 关闭Formatter对象 ... 577
18.13.18 printf()方法 ............... 577
18.14 Scanner类 ............................ 577 18.14.1 Scanner类的
构造函数 ..................... 577
18.14.2 扫描的基础知识 ......... 578
18.14.3 一些Scanner示例 ...... 581
18.14.4 设置定界符 ................. 585
18.14.5 其他Scanner特性 ...... 587 18.15 ResourceBundle、 ListResourceBundle和
PropertyResourceBundle类.... 588
18.16 其他实用工具类和接口 ...... 592
18.17 java.util子包........................ 593 18.17.1 java.util.concurrent、 java.util.concurrent.atomic 和java.util.concurrent.
locks ............................ 593
18.17.2 java.util.jar ................... 593
18.17.3 java.util.logging ........... 593
18.17.4 java.util.prefs ............... 593
18.17.5 java.util.regex .............. 594
18.17.6 java.util.spi .................. 594
18.17.7 java.util.zip .................. 594
第19章 输入/输出:探究Java.io ...... 595
19.1 I/O类和接口 ......................... 596
19.2 File类 .................................... 597
19.2.1 目录 ................................. 600 19.2.2 使用FilenameFilter
接口 ................................. 601
19.2.3 listFiles()方法 .................. 602
19.2.4 创建目录 ......................... 602 19.3 AutoCloseable、Closeable和
Flushable接口 ....................... 602
目 录
XV
19.4 I/O异常 ................................. 603
19.5 关闭流的两种方式 ............... 604
19.6 流类 ....................................... 605
19.7 字节流 ................................... 605
19.7.1 InputStream类 ................ 605
19.7.2 OutputStream类 ............. 606
19.7.3 FileInputStream类 .......... 606
19.7.4 FileOutputStream类 ....... 609 19.7.5 ByteArrayInputStream
类 ..................................... 611 19.7.6 ByteArrayOutputStream
类 .................................... 613
19.7.7 过滤的字节流 ................. 614
19.7.8 缓存的字节流 ................. 614
19.7.9 SequenceInputStream类 .... 618
19.7.10 PrintStream类 ............... 620 19.7.11 DataOutputStream和
DataInputStream类 ...... 622
19.7.12 RandomAccessFile类 ... 624
19.8 字符流 ................................... 625
19.8.1 Reader类 ........................ 625
19.8.2 Writer类 ......................... 626
19.8.3 FileReader类 .................. 627
19.8.4 FileWriter类 ................... 627
19.8.5 CharArrayReader类 ....... 628
19.8.6 CharArrayWriter类 ........ 630
19.8.7 BufferedReader类 .......... 631
19.8.8 BufferedWriter类 ........... 633
19.8.9 PushbackReader类 ......... 633
19.8.10 PrintWriter类 ................ 634
19.9 Console类 ............................. 635
19.10 串行化 ................................. 637
19.10.1 Serializable接口 ........ 637
19.10.2 Externalizable接口 .... 637
19.10.3 ObjectOutput接口 ...... 638 19.10.4 ObjectOutputStream
类 ................................ 638
19.10.5 ObjectInput接口 ........ 639
19.10.6 ObjectInputStream类 .... 640
19.10.7 串行化示例 ................. 641
19.11 流的优点 .............................. 642
第20章 探究NIO ............................. 643
20.1 NIO类 ................................... 643
20.2 NIO的基础知识 ................... 644
20.2.1 缓存 ................................. 644
20.2.2 通道 ................................. 646
20.2.3 字符集和选择器 ............. 647
20.3 JDK 7对NIO的增强 ........... 648
20.3.1 Path接口 ......................... 648
20.3.2 Files类 ............................ 649
20.3.3 Path接口 ......................... 651
20.3.4 文件属性接口 ................. 652 20.3.5 FileSystem、FileSystems
和FileStore类 ................ 654
20.4 使用NIO系统 ...................... 654 20.4.1 为基于通道的I/O使用
NIO .................................. 654 20.4.2 为基于流的I/O
使用NIO ......................... 663 20.4.3 为路径和文件系统操作
使用NIO ......................... 666 20.5 JDK 7之前基于通道的
例子 ....................................... 674
20.5.1 读文件(JDK 7之前) ....... 674
20.5.2 写文件(JDK 7之前) ....... 677
第21章 联网 ..................................... 681
21.1 联网的基础知识 .................... 682
21.2 联网类和接口........................ 683
21.3 InetAddress类 ....................... 683
21.3.1 工厂方法 ......................... 684
21.3.2 实例方法 ......................... 685 21.4 Inet4Address类和
Inet6Address类...................... 685
21.5 TCP/IP客户端套接字 ........... 686
21.6 URL类 .................................. 689
Java 完全参考手册(第 8 版)
XVI
21.7 URLConnection类 ................ 691
21.8 HttpURLConnection类 ......... 694
21.9 URI类 ................................... 696
21.10 cookie................................... 696
21.11 TCP/IP服务器套接字 ........ 696
21.12 数据报 ................................. 697
21.12.1 DatagramSocket类 ..... 697
21.12.2 DatagramPacket类 ..... 698
21.12.3 数据报示例 ................ 699
第22章 Applet类 ............................. 701
22.1 applet的两种类型................. 701
22.2 applet的基础知识................. 702
22.3 applet的架构 ........................ 704
22.4 applet的骨架 ........................ 705
22.4.1 applet的初始化和终止 ... 706
22.4.2 重写update()方法 .......... 707
22.5 简单的applet显示方法 ........ 707
22.6 请求重画 ............................... 709
22.7 使用状态栏窗口 ................... 712
22.8 HTML APPLET标签 ............ 713
22.9 向applet传递参数................ 714 22.10 getDocumentBase()和
getCodeBase() ...................... 718 22.11 AppletContext接口和
showDocument()方法 .......... 718
22.12 AudioClip接口 ................... 720
22.13 AppletStub接口 .................. 720
22.14 向控制台输出 ..................... 720
第23章 事件处理 .............................. 721
23.1 两种事件处理机制 ............... 722
23.2 委托事件模型 ....................... 722
23.2.1 事件 ................................ 722
23.2.2 事件源 ............................ 723
23.2.3 事件监听器 ..................... 723
23.3 事件类 ................................... 724
23.3.1 ActionEvent类 ............... 725
23.3.2 AdjustmentEvent类 ........ 726
23.3.3 ComponentEvent类 ........ 726
23.3.4 ContainerEvent类 ........... 727
23.3.5 FocusEvent类 ................. 727
23.3.6 InputEvent类................... 728
23.3.7 ItemEvent类 .................... 729
23.3.8 KeyEvent类 .................... 730
23.3.9 MouseEvent类 ................ 730
23.3.10 MouseWheelEvent类 .... 732
23.3.11 TextEvent类 .................. 733
23.3.12 WindowEvent类 ........... 733
23.4 事件源 ................................... 734
23.5 事件监听器接口 .................... 735
23.5.1 ActionListener接口 ........ 736 23.5.2 AdjustmentListener
接口 ................................. 736 23.5.3 ComponentListener
接口 ................................. 736
23.5.4 ContainerListener接口 .... 736
23.5.5 FocusListener接口 .......... 736
23.5.6 ItemListener接口 ............ 736
23.5.7 KeyListener接口 ............. 737
23.5.8 MouseListener接口 ........ 737 23.5.9 MouseMotionListener
接口 ................................. 737 23.5.10 MouseWheelListener
接口 ............................... 737
23.5.11 TextListener接口 .......... 738 23.5.12 WindowFocusListener
接口 ............................... 738
23.5.13 WindowListener接口 .... 738
23.6 使用委托事件模型 ................ 738
23.6.1 处理鼠标事件 ................. 739
23.6.2 处理键盘事件 ................. 741
23.7 适配器类 ............................... 744
23.8 内部类 ................................... 746 第24章 AWT介绍:使用窗口、
图形和文本 .......................... 749
24.1 AWT类 .................................. 750
24.2 窗口基本元素........................ 752
24.2.1 Component类 .................. 752
目 录
XVII
24.2.2 Container类 .................... 753
24.2.3 Panel类 ........................... 753
24.2.4 Window类 ...................... 753
24.2.5 Frame类 ......................... 753
24.2.6 Canvas类 ........................ 753
24.3 使用框架窗口 ....................... 753
24.3.1 设置窗口的尺寸 ............. 754
24.3.2 隐藏和显示窗口 ............. 754
24.3.3 设置窗口的标题 ............. 754
24.3.4 关闭框架窗口 ................. 754
24.4 在applet中创建框架窗口 .... 755
24.5 创建基于窗口的程序 ........... 761
24.6 在窗口中显示信息 ............... 763
24.7 使用图形 ............................... 763
24.7.1 绘制直线......................... 764
24.7.2 绘制矩形......................... 765
24.7.3 绘制椭圆和圆 ................. 765
24.7.4 绘制弧形......................... 766
24.7.5 绘制多边形 ..................... 767
24.7.6 改变图形的大小 ............. 767
24.8 使用颜色 ............................... 768
24.8.1 Color类的方法 ............... 769
24.8.2 设置当前图形的颜色 ..... 770
24.8.3 一个演示颜色的applet ... 770
24.9 设置绘图模式 ....................... 771
24.10 使用字体 ............................. 773
24.10.1 确定可用字体 ............ 774
24.10.2 创建和选择字体 ........ 775
24.10.3 获取字体信息 ............ 777 24.11 使用FontMetrics管理文本
输出 ...................................... 778
24.11.1 显示多行文本 ............ 779
24.11.2 居中显示文本 ............ 781
24.11.3 对齐多行文本 ............ 782 第25章 使用AWT控件、布局
管理器和菜单 ...................... 787
25.1 控件的基础知识 ................... 788
25.1.1 添加和移除控件 ............. 788
25.1.2 响应控件 ......................... 788
25.1.3 HeadlessException异常 ... 788
25.2 使用标签 ............................... 789
25.3 使用命令按钮........................ 790
25.4 使用复选框............................ 793
25.5 使用复选框组........................ 795
25.6 使用下拉列表........................ 796
25.7 使用列表框............................ 798
25.8 管理滚动条............................ 801
25.9 使用TextField ....................... 804
25.10 使用TextArea ...................... 807
25.11 理解布局管理器 .................. 808 25.11.1 FlowLayout布局
管理器 ......................... 809 25.11.2 BorderLayout布局
管理器 ......................... 811
25.11.3 使用Insets ................... 812 25.11.4 GridLayout布局
管理器 ......................... 814 25.11.5 CardLayout布局
管理器 ......................... 815 25.11.6 GridBagLayout布局
管理器 ......................... 818
25.12 菜单栏和菜单 ...................... 823
25.13 对话框 ................................. 829
25.14 FileDialog类 ....................... 834 25.15 扩展AWT控件以处理
事件 ..................................... 835
25.15.1 扩展按钮 ..................... 836
25.15.2 扩展复选框 ................. 837
25.15.3 扩展复选框组 ............. 838
25.15.4 扩展下拉列表 ............. 839
25.15.5 扩展列表框 ................. 840
25.15.6 扩展滚动条 ................. 841
25.16 关于重载paint()方法 .......... 842
Java 完全参考手册(第 8 版)
XVIII
第26章 图像 ..................................... 843
26.1 文件格式 ............................... 844 26.2 图像基础:创建、加载与
显示 ....................................... 844
26.2.1 创建Image对象 ............. 844
26.2.2 加载图像......................... 845
26.2.3 显示图像......................... 845
26.3 ImageObserver接口 .............. 846
26.4 双缓存 ................................... 848
26.5 MediaTracker类 .................... 850
26.6 ImageProducer接口 .............. 853
26.7 ImageConsumer接口 ............ 855
26.8 ImageFilter类 ........................ 857
26.8.1 CropImageFilter类 ......... 858
26.8.2 RGBImageFilter类 ......... 860
26.9 单元格动画 ........................... 870
26.10 其他图像类 ......................... 873
第27章 并发实用工具 ...................... 875
27.1 并发API包 ........................... 876
27.1.1 java.util.concurrent包 ..... 876 27.1.2 java.util.concurrent.atomic
包 .................................... 877 27.1.3 java.util.concurrent.locks
包 .................................... 877
27.2 使用同步对象 ....................... 877
27.2.1 Semaphore类 .................. 878
27.2.2 CountDownLatch类 ....... 884
27.2.3 CyclicBarrier类 .............. 885
27.2.4 Exchanger类................... 888
27.2.5 Phaser类 ......................... 890
27.3 使用执行器 ........................... 898 27.3.1 一个简单的执行器
示例 ............................ 898 27.3.2 使用Callable和Future
接口 ................................ 900
27.4 TimeUnit枚举 ....................... 903
27.5 并发集合 ............................... 904
27.6 锁 ........................................... 905
27.7 原子操作 ............................... 908 27.8 通过Fork/Join Framework
进行并行编程 ........................ 909
27.8.1 主要的Fork/Join类 ........ 909
27.8.2 分而治之的策略 ............. 912 27.8.3 一个简单的Fork/Join
示例 ................................. 913 27.8.4 理解并行级别带来的
影响 ................................. 915 27.8.5 一个使用RecursiveTask<V>
的例子 ............................. 918
27.8.6 异步执行任务 ................. 921
27.8.7 取消任务 ......................... 921
27.8.8 确定任务的完成状态 ..... 921
27.8.9 重新启动任务 ................. 922
27.8.10 深入研究 ....................... 922 27.8.11 关于Fork/Join Framework
的一些提示 ................... 923 27.9 并发实用工具与Java传统
方式的比较............................ 924
第28章 正则表达式和其他包 ........... 925
28.1 核心Java API包 ................... 926
28.2 正则表达式处理 .................... 927
28.2.1 Pattern类 ......................... 928
28.2.2 Matcher类 ....................... 928
28.2.3 正则表达式的语法 ......... 929
28.2.4 演示模式匹配 ................. 929
28.2.5 模式匹配的两个选项 ..... 935
28.2.6 探究正则表达式 ............. 935
28.3 反射 ....................................... 936
28.4 远程方法调用........................ 939
28.5 文本格式化............................ 943
28.5.1 DateFormat类 ................. 943
28.5.2 SimpleDateFormat类 ...... 945
目 录
XIX
第Ⅲ部分 使用Java开发软件
第29章 Java Bean ............................. 951
29.1 Java Bean是什么 .................. 952
29.2 Java Bean的优势 .................. 952
29.3 反省 ....................................... 952
29.3.1 属性的设计模式 ............. 952
29.3.2 事件的设计模式 ............. 954
29.3.3 方法与设计模式 ............. 954
29.3.4 使用BeanInfo接口 ........ 955
29.4 绑定属性与约束属性 ........... 955
29.5 持久性 ................................... 955
29.6 定制器 ................................... 956
29.7 Java Bean API ........................ 956
29.7.1 Introspector类 ................ 958
29.7.2 PropertyDescriptor类 ..... 958
29.7.3 EventSetDescriptor类 .... 958
29.7.4 MethodDescriptor类 ...... 958
29.8 一个Bean示例 ..................... 958
第30章 Swing简介 .......................... 963
30.1 Swing的起源 ........................ 964
30.2 Swing以AWT为基础 ......... 964
30.3 两个关键的Swing特性 ....... 964
30.3.1 Swing组件是轻量级的 ... 964
30.3.2 Swing支持可插入外观 ... 965
30.4 MVC连接 ............................. 965
30.5 组件与容器 ........................... 966
30.5.1 组件 ................................ 966
30.5.2 容器 ................................ 967
30.5.3 顶级容器窗格 ................. 967
30.6 Swing包 ................................ 967 30.7 一个简单的Swing
应用程序 ............................... 968
30.8 事件处理 ............................... 972
30.9 创建Swing applet ................. 975
30.10 在Swing中绘图 ................. 977
30.10.1 绘图的基础知识 ........ 977
30.10.2 计算可绘制区域 ........ 978
30.10.3 一个绘图示例 ............. 979
第31章 探究Swing .......................... 983
31.1 JLabel与ImageIcon .............. 984
31.2 JTextField ............................... 985
31.3 Swing按钮 ............................ 987
31.3.1 JButton ............................. 988
31.3.2 JToggleButton .................. 990
31.3.3 复选框 ............................. 992
31.3.4 单选按钮 ......................... 994
31.4 JTabbedPane .......................... 996
31.5 JScrollPane ............................. 998
31.6 JList ...................................... 1000
31.7 JComboBox.......................... 1003
31.8 树 ......................................... 1006
31.9 JTable ................................... 1009
31.10 继续研究Swing ................ 1011
第32章 servlet ............................... 1013
32.1 背景 ..................................... 1013
32.2 sevelet的生命周期 ............. 1014
32.3 Servlet开发选项 ................. 1015
32.4 使用Tomcat ......................... 1015
32.5 一个简单的servlet .............. 1017 32.5.1 创建和编译servlet
源代码 .......................... 1017
32.5.2 启动Tomcat ................. 1018 32.5.3 启动Web浏览器并
请求servlet ................... 1018
32.6 servlet API ............................ 1018
32.7 javax.servlet包 .................... 1018
32.7.1 Servlet接口 .................. 1019
32.7.2 ServletConfig接口 ....... 1020
32.7.3 ServletContext接口 ..... 1020
32.7.4 ServletRequest接口 ..... 1020
32.7.5 ServletResponse接口 ... 1021
32.7.6 GenericServlet类 ......... 1022
32.7.7 ServletInputStream类 ... 1022
32.7.8 ServletOutputStream类 ... 1022
Java 完全参考手册(第 8 版)
XX
32.7.9 servlet异常类 ............... 1022
32.8 读取servlet参数 ................. 1022
32.9 javax.servlet.http包 ............. 1024 32.9.1 HttpServletRequest
接口 .............................. 1025 32.9.2 HttpServletResponse
接口 .............................. 1025
32.9.3 HttpSession接口 .......... 1026 32.9.4 HttpSessionBindingListener
接口 .............................. 1027
32.9.5 Cookie类 ...................... 1027
32.9.6 HttpServlet类 ............... 1028
32.9.7 HttpSessionEvent类 ..... 1029 32.9.8 HttpSessionBindingEvent
类 .................................. 1030
32.10 处理HTTP请求和响应 ... 1030 32.10.1 处理HTTP GET
请求 .......................... 1030 32.10.2 处理HTTP POST
请求 .......................... 1032
32.11 使用cookie ........................ 1033
32.12 会话跟踪 ........................... 1035 第Ⅳ部分 Java应用
第33章 applet和servlet在金融领域的 应用 ................................... 1039
33.1 计算贷款的还款额 ............. 1040
33.1.1 RegPay中声明的变量 ... 1044
33.1.2 init()方法....................... 1044
33.1.3 makeGUI()方法 ............ 1044
33.1.4 actionPerformed()方法 .... 1047
33.1.5 compute()方法 .............. 1048
33.2 计算投资的未来收益 ......... 1048 33.3 计算为达到未来收益所需
要的初始投资额 ................. 1052 33.4 计算为拿到期望的养老金
所需要的初始投资额 ......... 1056
33.5 计算给定投资的最大收益 ... 1060
33.6 计算贷款余额 ..................... 1064 33.7 创建应用于金融领域的
servlet ................................... 1068 33.7.1 将RegPay applet转换为
servlet............................ 1069
33.7.2 RegPayS servlet ............ 1069
33.8 一些尝试 ............................. 1072
第34章 使用Java创建下载管理器 ... 1073
34.1 理解Internet下载 ............... 1074
34.2 下载管理器概述 .................. 1074
34.3 DownLoad类....................... 1075
34.3.1 DownLoad类的变量 ... 1079 34.3.2 DownLoad类的
构造函数 ...................... 1079
34.3.3 download()方法 ............ 1079
34.3.4 run()方法 ...................... 1079
34.3.5 stateChanged()方法 ...... 1083
34.3.6 动作和访问器方法 ...... 1083
34.4 ProgressRenderer类 ............ 1083
34.5 DownloadsTableModel类 ... 1084
34.5.1 addDownload()方法 ..... 1086
34.5.2 clearDownload()方法 ... 1087
34.5.3 getColumnClass()方法 ... 1087
34.5.4 getValueAt()方法 .......... 1087
34.5.5 update()方法 ................. 1088
34.6 DownloadManager类 .......... 1088 34.6.1 DownloadManager类的
变量 .............................. 1094 34.6.2 DownloadManager类的
构造函数 ...................... 1095
34.6.3 verifyUrl()方法 ............. 1095 34.6.4 tableSelectionChanged()
方法 .............................. 1096
34.6.5 updateButtons()方法 ..... 1096
34.6.6 处理动作事件 .............. 1097
34.7 编译和运行下载管理器 ...... 1098
34.8 进一步完善下载管理器 ...... 1098
附录 使用Java的文档注释 ............. 1099
· · · · · · (
收起)