16.26 Readable接口 33 1
1.1.1 现代编程语言的诞生:C 3
目录 3
第1部分 Java语言 3
第1章 Java的起源 3
1.1 Java的由来 3
1.1.2 C++:更上一层楼 4
1.2 Java的诞生 5
1.1.3 Java出现的时机已经到来 5
1.3 Java对Internet的重要性 6
1.4 Java的魔力:字节码 7
1.3.1 Java applet 7
1.3.2 安全性 7
1.3.3 可移植性 7
1.5 Java专门用语 8
1.5.5 体系结构中立 9
1.5.1 简单 9
1.5.2 面向对象 9
1.5.3 健壮 9
1.5.4 多线程 9
1.6 Java的演化 10
1.5.6 解释执行和高性能 10
1.5.7 分布式 10
1.5.8 动态 10
1.8 文化革新 11
1.7 J2SE 5的革命 11
2.1.2 抽象 12
第2章 Java语言概述 12
2.1 面向对象编程 12
2.1.1 两种范型 12
2.1.3 面向对象编程的3个原则 13
2.2.2 编译程序 17
2.2 第1个简单程序 17
2.2.1 键入程序 17
2.2.3 详细讨论第1个示例程序 18
2.3 第2个示例程序 19
2.4 两条控制语句 20
2.4.2 for循环 21
2.4.1 if语句 21
2.5 使用程序块 23
2.6.4 注释 24
2.6 基本词汇 24
2.6.1 空白分隔符 24
2.6.2 标识符 24
2.6.3 字面量 24
2.6.7 Java类库 25
2.6.5 分隔符 25
2.6.6 Java关键词 25
3.2 基本类型 26
第3章 数据类型、变量和数组 26
3.1 Java语言是一种强类型语言 26
3.3.2 短整型 27
3.3 整型 27
3.3.1 字节型 27
3.4 浮点型 28
3.3.3 int 28
3.3.4 长整型 28
3.5 字符 29
3.4.1 单精度浮点型 29
3.4.2 双精度浮点型 29
3.6 布尔型 30
3.7.2 浮点字面量 31
3.7 深入分析字面量 31
3.7.1 整数字面量 31
3.7.5 字符串字面量 32
3.7.3 布尔型字面量 32
3.7.4 字符字面量 32
3.8.3 变量的作用域和生命周期 33
3.8 变量 33
3.8.1 声明一个变量 33
3.8.2 动态初始化 33
3.9.1 Java的自动转换 35
3.9 类型转换与强制转换 35
3.9.2 强制转换不兼容的类型 36
3.10 表达式中的自动类型提升 37
3.11.1 一维数组 38
3.11 数组 38
3.11.2 多维数组 40
3.12 关于字符串的几点解释 43
3.11.3 另一种数组声明语法 43
3.13 C/C++程序员请注意指针的用法 44
4.1.1 基本算术运算符 45
第4章 运算符 45
4.1 算术运算符 45
4.1.2 模运算符 46
4.1.3 算术赋值运算符 47
4.1.4 递增和递减运算 48
4.2 位运算符 49
4.2.1 位逻辑运算符 50
4.2.2 左移 51
4.2.3 右移 52
4.2.4 无符号右移 53
4.2.5 位运算符赋值 54
4.3 关系运算符 55
4.4 布尔逻辑运算符 56
4.5 赋值运算符 57
4.7 运算符优先级 58
.4.6 ?运算符 58
4.8 使用圆括号 59
5.1.1 if语句 60
第5章 程序控制语句 60
5.1 Java的选择语句 60
5.1.2 switch 62
5.2.1 while 66
5.2 迭代语句 66
5.2.2 do-while 67
5.2.3 for 69
5.2.4 for循环的一些变化 71
5.3 for循环的ForEach版本 72
5.3.1 多维数组上的迭代 74
5.3.2 应用增强的for 75
5.4.1 使用break 76
5.3.3 循环嵌套 76
5.4 跳转语句 76
5.4.2 使用continue 79
5.4.3 return 80
6.1.1 类的一般形式 82
第6章 介绍类 82
6.1 类的基础 82
6.1.2 简单的类 83
6.2 声明对象 85
6.3 给对象引用变量赋值 86
6.4.1 给Box类添加一个方法 87
6.4 介绍方法 87
6.4.2 返回值 89
6.4.3 添加一个带有参数的方法 90
6.5 构造函数 92
6.6 this关键词 94
6.8 finalize()方法 95
6.7 垃圾收集 95
12.1.1 枚举的基础知识 96
6.9 堆栈类 96
第7章 方法和类详述 98
7.1 重载方法 98
7.2 把对象作为参数使用 102
7.3 参数传递 104
7.4 返回对象 105
7.5 递归 106
7.6 访问控制 108
7.7 关键词static 110
7.8 关键词final 111
7.9 数组 112
7.10 嵌套类和内部类 113
7.11 String类 115
7.12 使用命令行参数 117
7.12.1 Varargs:变长参数 118
7.12.2 重载Vararg方法 120
7.12.3 Varargs和模糊性 121
第8章 继承 123
8.1 继承的基础知识 123
8.1.1 成员访问和继承 124
8.1.2 一个更实用的示例 125
8.1.3 超类变量可以引用子类对象 127
8.2 super 127
8.2.1 使用super调用超类构造函数 128
8.2.2 Super的第二种用法 130
8.3 创建多级层次结构 131
8.4 何时调用构造函数 133
8.5 方法重写 134
8.6 动态方法调度 136
8.6.1 为什么重写方法 137
8.6.2 应用方法重写 138
8.7 抽象类 139
8.8 在继承中使用final 141
8.8.1 使用final来阻止重写 141
8.8.2 使用final阻止继承 142
8.9 Object类 142
第9章 包和接口 143
9.1 包 143
9.1.1 定义一个包 143
9.1.2 查找包和CLASSPATH 144
9.1.3 一个简短的包示例 144
9.2 访问保护 145
9.3 导入包 148
9.4 接口 149
9.4.1 接口定义 150
9.4.2 实现接口 150
9.4.3 应用接口 152
9.4.4 接口中的变量 155
9.4.5 可以扩展的接口 156
第10章 异常处理 158
10.1 异常处理基础知识 158
10.2 异常类型 159
10.3 未捕获的异常 159
10.4 trv和catch 160
10.5 多条catch语句 161
10.6 嵌套的try语句 162
10.7 throw 164
10.8 throws 165
10.9 finally 166
10.10 Java内置的异常 167
10.11 创建自己的异常子类 168
10.12 链式异常 170
10.13 使用异常 171
第11章 多线程编程 172
11.1 Java的线程模型 173
11.1.1 线程的优先级 173
11.1.2 同步 173
11.1.3 消息 174
11.1.4 Thread类和Runnable接口 174
11.2 主线程 174
11.3 创建一个线程 176
11.3.1 实现Runnable接口 176
11.3.2 扩展线程 177
11.3.3 选择一种方法 178
11.4 创建多线程 179
11.5 使用isAlive()和join() 180
11.6 线程的优先级 182
11.7 同步 184
11.7.1 使用同步方法 184
11.7.2 同步语句 186
11.8 线程间通信 187
11.9 暂停、恢复和停止线程 192
11.9.1 Java 1.1以及之前版本使用的暂停、恢复和停止线程的方法 192
11.9.2 暂停、恢复和停止线程的方法 194
11.10 使用多线程 195
第12章 枚举、自动装箱和元数据(注释) 196
12.1 枚举 196
12.1.2 values()和valueOf()方法 198
12.1.3 Java枚举是类类型 199
12.1.4 枚举继承Enum 200
12.1.5 一个枚举例子 202
12.2.2 Boolean包装器 203
12.2 类型包装器 203
12.2.1 Character包装器 203
12.2.3 数字类型包装器 204
12.3.1 自动装箱与方法 205
12.3 自动装箱 205
12.3.2 表达式中的自动装/拆箱 206
12.3.3 对布尔型和字符型值的自动装/拆箱 207
12.4 元数据(注释) 208
12.3.4 自动装/拆箱有助于防止发生错误 208
12.3.5 一点警告 208
12.4.2 指定一个保留策略 209
12.4.1 注释的基础知识 209
12.4.3 使用映射在运行时获得注释 210
12.4.4 AnnotatedElement接口 213
12.4.5 使用默认值 214
12.4.7 单成员注释 215
12.4.6 标记注释 215
12.4.8 内置注释 216
12.4.9 一些限制 217
13.1.2 字节流和字符流 218
第13章 输入/输出、Applet和其他主题 218
13.1 输入/输出基础 218
13.1.1 流 218
13.2 读取控制台输入 220
13.1.3 预定义流 220
13.2.1 读取字符 221
13.2.2 读取字符串 222
13.4 PrintWriter类 223
13.3 向控制台写输出 223
13.5 读写文件 224
13.6 applet基础 227
13.7 transient和volatile修饰符 228
13.8 使用instanceof 229
13.10 本地方法 231
13.9 strictfp 231
13.11 使用assert 234
13.12 静态输入 236
14.1 何为泛型 238
第14章 泛型 238
14.2 一个关于泛型的简单例子 239
14.2.2 泛型的差别是基于类型参数 241
14.2.1 泛型只使用对象 241
14.2.3 泛型如何增强类型安全 242
14.3 带两个类型参数的泛型类 243
14.4 泛型类的一般形式 244
14.5 有界类型 245
14.6 使用通配符参数 246
14.7 创建一个泛型方法 252
14.8 泛型接口 254
14.9 原始类型和遗留代码 256
14.10.1 使用泛型超类 258
14.10 泛型类层次 258
14.10.2 泛型子类 259
14.10.3 泛型层次中的运行时类型比较 260
14.10.4 强制转换 262
14.10.5 重写泛型类中的方法 263
14.11 擦拭 264
14.12 模糊错误 266
14.13.1 类型参数不能被实例化 267
14.13 泛型的一些局限 267
14.13.3 泛型数组的局限 268
14.13.2 静态成员方面的局限 268
14.14 有关泛型的最后思考 269
14.13.4 泛型异常局限 269
15.1 String构造函数 273
第2部分 Java库 273
第15章 字符串处理 273
15.3.1 字符串字面量 275
15.2 字符串的长度 275
15.3 特殊的字符串操作 275
15.3.3 字符串与其他数据类型的连接 276
15.3.2 字符串的连接 276
15.3.4 字符串转换和toString() 277
15.4.2 getChars() 278
15.4 字符截取 278
15.4.1 charAt() 278
15.5.1 equals()和equalsIgnoreCase() 279
15.4.3 getBytes() 279
15.4.4 toCharArray() 279
15.5 字符串比较 279
15.5.4 equals()与= 280
15.5.2 regionMatehes() 280
15.5.3 startsWith()和endsWith() 280
15.5.5 compareTo() 281
15.6 搜索字符串 282
15.7.1 substring() 283
15.7 修改字符串 283
15.7.3 replace() 284
15.7.2 concat() 284
15.8 使用valueOf()进行数据转换 285
15.7.4 trim() 285
15.10 附加的String方法 286
15.9 改变字符串中字符的大小写 286
15.11 StringBuffer 287
15.11.3 ensureCapacity() 288
15.11.1 StringBuffer构造函数 288
15.11.2 length()和capacity() 288
1 5.11.6 getChars() 289
15.11.4 setLength() 289
15.11.5 charAt()和setCharAt() 289
15.11.8 insert() 290
15.11.7 append() 290
15.11.10 delete()和deleteCharAt() 291
15.11.9 reverse() 291
15.11.13 附加的StringBuffer方法 292
15.11.11 replace() 292
15.11.12 substring() 292
15.12 StringBuilder 293
16.1 简单类型包装器 294
第16章 java.lang研究 294
16.1.2 Double和Float 295
16.1.1 Number 295
16.1.3 Byte,Short,Integer和Long 298
16.1.4 Character 303
16.1.5 对Character的补充:支持Unicode代码点 305
16.1.6 Boolean 306
16.3 Process 307
16.2 Void 307
16.4 Runtime 308
16.4.2 执行其他程序 309
16.4.1 内存管理 309
16.5 ProcessBuilder 310
16.6 System 311
16.6.1 使用eurrentTimeMillis()记录程序执行的时间 312
16.6.3 环境属性 313
16.6.2 使用arraycopy() 313
16.7 Object 314
16.8 使用clone()和Cloneable接口 315
16.9 Class 316
16.10 ClassLoader 318
16.11.1 先验函数 319
16.11 Math 319
16.11.4 其他的数学方法 320
16.11.2 指数函数 320
16.11.3 取整函数 320
16.14 Thread,ThreadGroup和Runnable 321
16.12 StrictMath 321
16.13 Compiler 321
16.14.2 Thread 322
16.14.1 Runnable接口 322
16.14.3 ThreadGroup 324
16.16 Package 327
16.15 ThreadLocal和InheritableThreadLocal 327
16.20 StackTraceElement 328
16.17 RuntimePermission 328
16.18 Throwable 328
16.19 SecurityManager 328
16.21 Enum类 329
16.24 Appendable接口 330
16.22 The CharSequence Interface 330
16.23 Comparable接口 330
16.27 java.1ang子包 331
16.25 Iterable接口 331
16.27.1 iava.1ang.annotation 331
16.27.5 java.1ang.reflect 332
16.27.4 jaVa.1ang.ref 332
16.27.2 iava.1ang.instrument 332
16.27.3 java.1ang.management 332
第17章 java.util第1部分:集合框架 333
17.2 J2SE 5对集合的修改 334
17.1 集合概述 334
17.3 Collection接口 335
17.2.3 for each类型的for循环 335
17.2.1 泛型根本性地改变了集合框架 335
17.2.2 自动装箱为简单类型的使用提供了便利 335
17.3.1 Collection接口 336
17.3.2 List接口 337
17.3.4 SortedSet接口 338
17.3.3 Set接口 338
17.3.5 Queue接口 339
17.4.1 ArrayList类 340
17.4 Collection(集合)类 340
17.4.2 LinkedList类 342
17.4.3 HashSet类 344
17.4.5 TreeSet类 345
17.4.4 LinkedHashSet类 345
17.4.7 EnumSet类 346
17.4.6 PriorityQueue类 346
17.5 使用迭代器访问集合 347
17.5.1 使用迭代器 348
17.5.2 替代迭代器的For-Each方案 349
17.6 在集合中存储用户定义的类 350
17.8.1 映射接口 351
17.8 使用映射 351
17.7 RandomAccess接口 351
17.8.2 映射类 353
17.9 比较函数 357
17.10 集合算法 360
17.11 数组 363
17.12 引进泛型集合的原因 366
17.13.1 Enumeration接口 368
17.13 遗留的类和接口 368
17.13.2 Vector 369
17.13.3 Stack 372
17.13.5 Hashtable(哈希表) 373
17.13.4 Dictionary 373
17.13.6 Properties 376
17.13.7使用store()和load() 378
17.14 集合小结 380
18.1 StringTokenizer(字符串符号赋予器类) 381
第18章 java.util第2部分:更多的工具类 381
18.2 BitSet 382
18.3 Date 384
18.4 Calendar 385
18.5 GregorianCalendar 388
18.6 TimeZone 389
18.7 SimpleTimeZone 390
18.9 Random 391
18.8 Locale 391
18.10 Observable 393
18.10.2 Observer范例 394
18.10.1 Observer接口 394
18.11 Timer和TimerTask 396
18.1 3 Formatter 398
18.12 Currency 398
18.13.2 Formatter方法 399
18.13.1 Formatter的构造函数 399
18.13.3 Formatter基础 400
18.13.4 格式化字符串与字符 401
18.13.6 格式化时间和日期 402
18.13.5 格式化数字 402
18.13.8 指定最小域宽 404
18.13.7 %n和%%格式指定符 404
18.13.9 指定精度 405
18.13.11 对齐输出 406
18.13.10 使用格式标志 406
18.13.13 逗号标志 407
18.13.12 空格、+、0和(标志 407
18.13.16 使用参数索引 408
18.13.15 大写选项 408
18.1 3.14 #标志 408
1 8.14 Scanner 409
18.13.17 链接Java printf() 409
18.14.2 Scanner基础 410
1 8.14.1 Scanner的构造函数 410
18.14.3 一些Scanner应用的例子 412
18.14.4 设置定界符 415
18.14.5 Scanner的其他特性 416
18.15.6 java.util.zip 417
18.15.5 java.util.regex 417
18.15 java.util子包 417
18.15.1 java.util.concurrent、java.util.concurrent.atomic和java.util.concurrent.locks 417
18.15.2 java.util.jar 417
18.15.3 java.util.logging 417
18.15.4 iava.util.prefs 417
19.1 Java的I/O类和接口 418
第19章 输入/输出:深入探讨java.io 418
19.2 File 419
19.2.1 目录 421
19.2.3 listFiles()替代方案 422
19.2.2 使用FilenameFilter 422
19.5 字节流 423
19.4 流类Stream 423
19.2.4 创建目录 423
19.3 Closeable和Flushable接口 423
19.5.3 FileInputStream 424
19.5.2 OutputStream 424
19.5.1 InputStream 424
19.5.4 FileOutputStream 426
19.5.5 ByteArrayInputStream 427
19.5.6 ByteArrayOutputStream 428
19.5.8 缓冲字节流 429
19.5.7 过滤字节流 429
19.5.9 SequenceInputStream 432
19.5.10 PrintStream 433
19.5.11 DataOutputStream和DataInputStream 434
19.6.1 Reader 436
19.6 字符流类 436
19.5.12 RandomAccessFile 436
19.6.3 FileReader 437
19.6.2 Writer 437
19.6.4 FileWriter 438
19.6.6 CharArrayWriter 439
19.6.5 CharArrayReader 439
19.6.7 BufieredReader 440
19.6.9 PushbackReader 441
19.6.8 BufferedWriter 441
19.6.10 PrintWriter 442
19.7 使用流I/O 443
19.8.2 Externalizable接口 446
19.8.1 Serializable接口 446
19.8 序列化 446
19.8.4 ObjectOutputStream类 447
19.8.3 ObjectOutput接口 447
19.8.6 ObjectInputStream 448
19.8.5 ObjectInput接口 448
19.8.7 序列化例子 449
19.9 流的优点 450
20.1.1 套接字概览 451
20.1 网络基础 451
第20章 网络 451
20.1.4 代理服务器 452
20.1.3 保留套接字 452
20.1.2 客户/服务器模式 452
20.2 Java和网络 453
20.1.5 Internet地址 453
20.3.1 工厂方法 454
20.3 InetAddress类 454
20.5 TCP/IP客户套接字 455
20.4 Inet4Address和Inet6Address 455
20.3.2 实例方法 455
20.6 URL 457
20.7 URLConnection类 458
20.9 缓存代理HTTP服务器 460
20.8 TCP/IP服务器套接字 460
20.10.2 数据报服务器和客户端 474
20.10.1 DatagramPacket 474
20.10 数据报 474
20.12 J2SE 5新增的类 476
20.11 URJ类 476
2 1.1 Applet基础 477
第21章 Applet类 477
21.3 Applet的框架 479
21.2 Applet的体系结构 479
21.3.1 Applet的初始化与终止 480
21.4 简单的applet显示方法 481
21.3.2 重写的update() 481
21.5 请求重画 483
21.6 使用状态窗口 485
21.7 HTML APPLET标记 486
21.8 把参数传递给applet 487
2 1.9 getDocumentBase()和getCodeBase() 489
2 1.10 AppletContext和showDocument() 490
21.13 向控制台输出 491
21.12 AppletStub接口 491
21.11 AudioClip接口 491
22.2.1 事件 492
22.2 委托事件模型 492
第22章 事件处理 492
22.1 两种事件处理机制 492
22.3 事件类(Event) 493
22.2.3 事件监听器 493
22.2.2 事件源 493
22.3.1 ActionEvent类 494
22.3.3 ComponentEvent类 495
22.3.2 AdjustmentEvent类 495
22.3.5 FocusEvent类 496
22.3.4 ContainerEvent类 496
22.3.7 ItemEvent类 497
22.3.6 InputEvent类 497
22.3.8 KeyEvent类 498
22.3.9 MouseEvent类 499
22.3.12 WindowEvent类 500
22.3.11 TextEvent类 500
22.3.10 MouseWheelEvent类 500
22.4 事件源 501
22.5.3 ComponentListener接口 502
22.5.2 AdjustmentListener接口 502
22.5 事件监听器接口 502
22.5.1 ActionListener接口 502
22.5.8 MouseListener接口 503
22.5.7 KeyListener接口 503
22.5.4 ContainerListener接口 503
22.5.5 FocusListener接口 503
22.5.6 ItemListener接口 503
22.6 使用委托事件模型 504
22.5.13 WindowListener接口 504
22.5.9 MouseMotionListener接口 504
22.5.10 MouseWhellListener接口 504
22.5.11 TextListener接口 504
22.5.12 WindowFocusListener接口 504
22.6.1 处理鼠标事件 505
22.6.2 处理键盘事件 507
22.7 适配器类 509
22.8 内部类 511
第23章 介绍AWT:使用窗口、图形、文本 513
23.1 AWT类 513
23.2.3 面板 515
23.2.2 容器 515
23.2 窗口基本元素 515
23.2.1 组件 515
23.3.1 设定窗口尺寸 516
23.3 使用框架窗口 516
23.2.4 窗口 516
23.2.5 框架 516
23.2.6 画布 516
23.4 在applet中创建框架窗口 517
23.3.4 关闭框架窗口 517
23.3.2 隐藏和显示窗口 517
23.3.3 设置窗口标题 517
23.5 创建窗口化程序 522
23.7.1 画直线 524
23.7 处理图形 524
23.6 在窗口中显示信息 524
23.7.2 画矩形 525
23.7.4 画圆弧 526
23.7.3 画椭圆和圆弧 526
23.7.5 画多边形 527
23.7.6 缩放图形 528
23.8.1 Color方法 529
23.8 处理颜色 529
23.8.3 一个演示颜色的applet 530
23.8.2 设置当前图形颜色 530
23.9 设定画图模式 531
23.10 处理字体 532
23.10.1 确定可用字体 533
23.10.2 创建和选择字体 534
23.10.3 获取字体信息 535
23.11 使用FontMetrics管理文本输出 536
23.11.1 显示多行文本 537
23.11.2 居中文本 538
23.11.3 多行文本对齐 539
24.1.1 添加和删除控件 543
24.1 控件基础知识 543
第24章 使用AWT控件、布局管理器和菜单 543
24.2 标签 544
24.1.2 对控件的响应 544
24.3 使用按钮 545
24.4 使用复选框 547
24.5 复选框组 549
24.5.2 处理选项列表 551
24.5.1 选项控件 551
24.6 使用列表框 553
24.7 管理滚动条 555
24.8 使用文本域TextField 557
24.9 使用TextArea 559
24.10 了解布局管理器 561
24.10.1 FlowLayout 562
24.10.2 BorderLayout 563
24.10.3 使用Insets 564
24.10.4 GridLayout 565
24.10.5 卡片布局CardLayout 566
24.10.6 GridBagLayout 569
24.11 菜单栏和菜单 572
24.12 对话框 577
24.13 FileDialog 580
24.14 通过扩展AWT组件处理事件 582
24.14.1 扩展按钮 583
24.14.3 扩展复选框组 584
24.14.2 扩展复选框 584
24.14.4 扩展选项 585
24.14.6 扩展滚动条 586
24.14.5 扩展列表框 586
24.15 对控件、菜单和布局管理器的研究 587
25.2 图像基础:创建、装载和显示 588
25.1 文件格式 588
第25章 图像 588
25.2.3 显示图像 589
25.2.2 装载图像 589
25.2.1 创建图像对象 589
25.3 ImageObserver 590
25.4 双缓冲技术 591
25.5 MediaTracker 594
25.6 ImageProducer 596
25.7 ImageConsumer 597
25.8 ImageFilter 599
25.8.1 CropImageFilter 600
25.8.2 RGBImageFilter 601
25.9 单元格动画 610
25.10 其他成像类 612
26.1 并发API包 613
第26章 并发实用工具 613
26.2 使用同步对象 614
26.1.3 java.util.concurrent.locks 614
26.1.1 java.util.concurrent 614
26.1.2 java.util.concurrent.atomic 614
26.2.1 Semaphore 615
26.2.2 CountDownLatch 619
26.2.3 CyclicBarrier 620
26.2.4 Exchanger 622
26.3.1 执行程序的简单例子 624
26.3 使用执行程序 624
26.3.2 使用Callable和Future 626
26.4 TimeUnit枚举 628
26.6 锁 629
26.5 并发集合 629
26.7 原子操作 631
26.8 并发实用工具和Java传统方法的对比 632
27.1 核心Java API包 633
第27章 NIO、规则表达式和其他包 633
27.2 新的I/O包 634
27.2.1 NIO基础知识 635
27.2.3 使用新的I/O系统 637
27.2.2 Charsets和Selectors 637
27.3.2 Matcher 642
27.3.1 Pattern 642
27.2.4 NIO是未来的I/O解决方案吗 642
27.3 规则表达式处理 642
27.3.3 规则表达式语法 643
27.3.4 演示模式匹配 644
27.4 反射 648
27.3.6 研究规则表达式 648
27.3.5 双模式匹配选项 648
27.5 远程方法调用 651
27.6.1 DateFormat类 654
27.6 文本格式化 654
27.6.2 SimpleDateFormat类 655
28.2 Java Bean的优点 659
28.1 什么是Java Bean 659
第3部分 Java软件开发技术 659
第28章 Java Bean 659
28.3.1 设计属性模式 660
28.3 反省 660
28.3.4 使用BeanInfo接口 661
28.3.3 方法和设计模式 661
28.3.2 设计事件模式 661
28.7 Java Bean API 662
28.6 自定义器 662
28.4 绑定和约束属性 662
28.5 持久性 662
28.8 开发一个简单的Bean 664
28.7.4 MethodDescriptor 664
28.7.1 Introspector 664
28.7.2 PropertyDescriptor 664
28.7.3 EventSetDescriptor 664
第29章 Swing导读 668
29.3 图标和标签 669
29.2 JFrame和JComponent 669
29.1 JApplet 669
29.4 处理线程问题 671
29.5 文本域 672
29.6 按钮 673
29.6.1 JButton类 674
29.6.2 复选框 675
29.6.3 单选按钮 677
29.7 组合框 678
29.8 选项卡窗格 680
29.9 滚动窗格 682
29.10 树 683
29.11 深入研究Swing 686
30.1 背景知识 687
第30章 Servlet 687
30.3 使用Tomcat开发Servlet 688
30.2 Servlet的生命周期 688
30.4.1 创建和编译Servlet源代码 689
30.4 简单的Servlet 689
30.5 Servlet API 690
30.4.3 启动Web浏览器并请求Servlet 690
30.4.2 启动Tomcat 690
30.6.1 Servlet接口 691
30.6 javax.servlet包 691
30.6.4 ServletRepuest接口 692
30.6.3 ServletContext接口 692
30.6.2 ServletConfig接口 692
30.6.7 ServletInputStream类 693
30.6.6 GenericServlet类 693
30.6.5 ServletResponse接口 693
30.7 读取Servlet参数 694
30.6.9 Servlet异常类 694
30.6.8 ServletOutputStream类 694
30.8.1 HttpServletRequest接口 695
30.8 javax.Servlet.http包 695
30.8.2 HttpServletResponse接口 696
30.8.5 Cookie类 697
30.8.4 HttpSessionBindingListener接口 697
30.8.3 HttpSession接口 697
30.8.6 HttpServlet类 698
30.8.8 HttpSessionBindingEvent类 699
30.8.7 HttpSessionEvent类 699
30.9.1 处理HTTP GET请求 700
30.9 处理HTTP请求和响应 700
30.9.2 处理HTTP POST请求 701
30.10 使用Cookie 702
30.11 会话追踪 703
31.1 计算贷款的偿还额 707
第31章 金融应用中的applet和servlet 707
第4部分 Java应用 707
31.1.2 init()方法 710
31.1.1 RegPay域 710
31.1.4 paint()方法 712
31.1.3 actionPerformed()方法 712
31.2 计算投资的长期回报 713
31.1.5 compute()方法 713
31.3 计算达到长期回报所需的初始投资 716
31.4 计算达到期望养老金所需的初始投资 719
3 1.5 计算给定投资的养老金最大值 722
31.6 计算贷款余额 724
31.7.1 将RegPay applet转换为servlet 727
31.7 创建用于金融计算的Servlet 727
31.7.2 RegPay servlet 728
31.8 一些尝试 730
32.1 理解Internet下载 731
第32章 使用Java创建下载管理器 731
32.3 Download类 732
32.2 下载管理器概述 732
32.3.3 download()方法 735
32.3.2 Download的构造函数 735
32.3.1 Download变量 735
32.3.4 run()方法 736
32.3.5 stateChanged()方法 738
32.4 ProgressRenderer类 739
32.3.6 操作和存取方法 739
32.5 DownloadsTableModel类 740
32.5.2 clearDownload()方法 741
32.5.1 addDownload()方法 741
32.5.5 update()方法 742
32.5.4 getValueAt()方法 742
32.5.3 getColumnClass()方法 742
32.6 DownloadManager类 743
32.6.3 verifyUrl()方法 747
32.6.2 DownloadManager构造函数 747
32.6.1 DownloadManager变量 747
32.6.5 updateButtons()方法 748
32.6.4 tableSelectionChanged()方法 748
32.7 编译并运行下载管理器 749
32.6.6 操作事件的处理 749
32.8 改进下载管理器 750
附录A Java的文档注释 751