《Java 程序设计语言(第4版)》主要讲授Java程序设计语言,系统地介绍Java的主要包(即java.lang.*、java.util和java.io)中的大多数类,并以内容丰富的示例对这些类如何工作进行了深入剖析。作者对这部经典著作进行更新,使其反映了Java 2标准版5.0(J2SE 5.0)中主要的增强。本版中增加了几章新内容,专门讨论泛型、枚举以及注解(这些是5.0版引入的主要的新特性),并且加了几小节论述断言和正则表达式。《Java 程序设计语言(第4版)》经过更新后还结合了当今构建健壮、高效和可维护的Java软件的最佳实践。
《Java 程序设计语言(第4版)》对所有程序员(包括那些经验丰富的程序员在内)都是不可或缺的参考书。
......(更多)
Ken Arnold 曾任 Sun 公司研究中心的高级工程师,是面向对象设计与实现方面首屈一指的专家。他曾经是 Jini 技术的架构师之一、 Sun 公司 JavaSpaces 技术的首席工程师。
James Gosling 是 Sun 公司院士和该公司开发平台组( Developer Platform Group )的 CTO 。他设计了 Java 程序设计语言,实现了最初的 Java 编译器和虚拟机,最近他正致力于 Java 实时规范( Real-Time Specification for Java )的相关工作。他是计算机界最受尊敬的程序员之一,曾荣获 Software Development 杂志评选的“程序设计杰出大奖”(1996 年)。
David Holmes 是澳大利亚布里斯班的 DLTech 公司的董事。他专攻同步与并发问题,是开发了最新的 Java 并发工具的 JSR-166 专家组的成员。他还参与了 Java 实时规范的修订工作,在过去的几年中他一直致力于该规范的实现工作。
......(更多)
第1章 快速浏览 1
1.1 开始 1
1.2 变量 2
1.3 代码中的注释 4
1.4 具名常量 5
1.5 Unicode字符 6
1.6 控制流 6
1.7 类和对象 8
1.7.1 创建对象 9
1.7.2 静态字段 (类字段) 10
1.7.3 垃圾回收器 10
1.8 方法和参数 10
1.8.1 调用方法 11
1.8.2 this引用 11
1.8.3 静态方法 (类方法) 12
1.9 数组 12
1.10 字符串对象 14
1.11 扩展一个类 16
1.11.1 调用超类的方法 17
1.11.2 Object类 18
1.11.3 类型强制转换 18
1.12 接口 18
1.13 泛型类型 20
1.14 异常 22
1.15 注解 23
1.16 包 24
1.17 Java平台 25
1.18 其他主题概述 26
第2章 类与对象 27
2.1 一个简单的类 27
2.1.1 类成员 28
2.1.2 类修饰符 28
2.2 字段 28
2.2.1 字段的初始化 29
2.2.2 静态字段 29
2.2.3 final字段 30
2.3 访问控制 31
2.4 创建对象 32
2.5 构造与初始化 32
2.5.1 构造器 33
2.5.2 初始化块 35
2.5.3 静态初始化 36
2.6 方法 37
2.6.1 静态方法 37
2.6.2 方法调用 38
2.6.3 引元数量可变的方法 39
2.6.4 方法异常与返回 40
2.6.5 参数值 41
2.6.6 使用方法来控制访问 43
2.7 this 45
2.8 重载方法 45
2.9 导入静态成员名 47
2.10 main方法 48
2.11 本地方法 49
第3章 类的扩展 50
3.1 扩展类 50
3.2 扩展类的构造器 53
3.3 继承与重定义成员 56
3.3.1 覆盖 56
3.3.2 隐藏字段 57
3.3.3 访问继承的成员 57
3.3.4 可访问性与覆盖 59
3.3.5 隐藏静态成员 59
3.3.6 super关键字 59
3.4 类型兼容与转换 60
3.4.1 兼容性 60
3.4.2 显式的类型强制转换 61
3.4.3 类型检测 61
3.5 protected的真正含义 62
3.6 将方法与类标记为final 64
3.7 抽象类与抽象方法 65
3.8 Object类 66
3.9 克隆对象 68
3.9.1 克隆的策略 68
3.9.2 正确克隆 69
3.9.3 浅克隆与深克隆 71
3.10 扩展类: 如何扩展以及何时扩展 72
3.11 设计一个可扩展的类 73
3.12 单重继承与多重继承 77
第4章 接口 79
4.1 一个简单的接口示例 79
4.2 接口声明 81
4.2.1 接口常量 81
4.2.2 接口方法 82
4.2.3 接口修饰符 82
4.3 扩展接口 83
4.3.1 继承和隐藏常量 83
4.3.2 继承、覆盖和重载方法 84
4.4 使用接口 85
4.4.1 实现接口 86
4.4.2 使用实现 87
4.5 标记接口 88
4.6 何时使用接口 88
第5章 嵌套类和接口 90
5.1 静态嵌套类型 90
5.1.1 静态嵌套类 90
5.1.2 嵌套接口 92
5.2 内部类 92
5.2.1 访问包围对象 93
5.2.2 扩展内部类 94
5.2.3 继承、作用字段和隐藏 95
5.3 局部内部类 96
5.4 匿名内部类 98
5.5 继承嵌套类型 99
5.6 接口中的嵌套 100
5.7 嵌套类型的实现 101
第6章 枚举类型 102
6.1 一个简单的枚举类型的例子 102
6.2 枚举声明 103
6.3 枚举常量的声明 104
6.3.1 构造 104
6.3.2 常量相关的行为 105
6.4 java.lang.Enum 107
6.5 是否应该使用枚举 108
第7章 语言符号、值和变量 109
7.1 词法元素 109
7.1.1 字符集 109
7.1.2 注释 110
7.1.3 语言符号 111
7.1.4 标识符 111
7.1.5 关键字 112
7.2 类型和字面常量 112
7.2.1 引用型字面常量 113
7.2.2 布尔型字面常量 113
7.2.3 字符型字面常量 113
7.2.4 整型字面常量 113
7.2.5 浮点型字面常量 113
7.2.6 字符串型字面常量 114
7.2.7 类字面常量 114
7.3 变量 115
7.3.1 字段和局部变量的声明 115
7.3.2 参数变量 116
7.3.3 final变量 116
7.4 数组变量 117
7.4.1 数组修饰符 118
7.4.2 数组的数组 118
7.4.3 数组初始化 118
7.4.4 数组和类型 119
7.5 名字的意义 120
第8章 包装器类 123
8.1 通用字段和方法 124
8.1.1 构造 124
8.1.2 常量 124
8.1.3 公共方法 125
8.2 Void类 126
8.3 Boolean类 126
8.4 Number类 126
8.4.1 整型包装器 126
8.4.2 浮点型包装器类 128
8.5 Character类 129
8.6 装箱转换 133
第9章 运算符和表达式 135
9.1 算术运算 135
9.1.1 整数运算 135
9.1.2 浮点运算 136
9.1.3 严格浮点运算和非严格浮点运算 137
9.2 通用运算符 137
9.2.1 递增运算符和递减运算符 137
9.2.2 关系运算符和判等运算符 138
9.2.3 逻辑运算符 139
9.2.4 instanceof 140
9.2.5 位操作运算符 140
9.2.6 条件运算符?: 141
9.2.7 赋值运算符 142
9.2.8 字符串连接运算符 143
9.2.9 new 144
9.3 表达式 144
9.3.1 计算顺序 144
9.3.2 表达式类型 145
9.4 类型转换 145
9.4.1 隐式类型转换 145
9.4.2 显式类型强制转换 147
9.4.3 字符串转换 148
9.5 运算符优先级和结合性 148
9.6 成员访问 150
第10章 控制流 154
10.1 语句和块 154
10.2 if-else 155
10.3 switch 156
10.4 while和do-while 158
10.5 for 159
10.5.1 基本的for语句 159
10.5.2 增强的for语句 161
10.6 标号 162
10.7 break 162
10.8 continue 164
10.9 return 165
10.10 什么?没有goto? 165
第11章 泛型类型 167
11.1 泛型类型声明 169
11.1.1 有界类型参数 170
11.1.2 嵌套泛型类型 171
11.2 使用泛型类型 173
11.3 泛型方法和泛型构造器 176
11.4 通配符捕获 179
11.5 揭秘:擦除与原始类型 181
11.5.1 运行时擦除 181
11.5.2 重载与覆盖 183
11.6 再谈寻找正确的方法 184
11.7 类的扩展与泛型类型 187
第12章 异常与断言 189
12.1 创建异常类型 189
12.2 throw 191
12.2.1 控制的转移 191
12.2.2 异步异常 191
12.3 throws子句 192
12.3.1 throws子句和方法覆盖 193
12.3.2 throws子句和本地方法 193
12.4 try、catch和finally 194
12.5 异常链 197
12.6 栈轨迹 199
12.7 什么时候使用异常 199
12.8 断言 200
12.9 什么时候使用断言 201
12.9.1 状态断言 201
12.9.2 控制流断言 202
12.10 打开和关闭断言 203
12.10.1 为什么要开关断言? 203
12.10.2 在命令行控制断言 203
12.10.3 彻底移除 204
12.10.4 使断言成为必需的 204
第13章 字符串与正则表达式 206
13.1 字符序列 206
13.2 String类 206
13.2.1 基本的String操作 207
13.2.2 字符串比较 208
13.2.3 字符串字面常量、等同性和内存限定 210
13.2.4 创建相关字符串 211
13.2.5 字符串转换 214
13.2.6 字符串和char数组 215
13.2.7 字符串和byte数组 215
13.2.8 字符集编码方式 216
13.3 正则表达式的匹配 217
13.3.1 正则表达式 217
13.3.2 正则表达式的编译和匹配 218
13.3.3 替换 220
13.3.4 区域 222
13.3.5 效率 223
13.4 StringBuilder类 223
13.4.1 修改缓冲区 224
13.4.2 取出数据 225
13.4.3 容量管理 226
13.4.4 StringBuffer类 227
13.5 使用UTF-16 227
第14章 线程 229
14.1 创建线程 230
14.2 使用Runnable 232
14.3 同步 235
14.3.1 synchronized方法 235
14.3.2 静态synchronized方法 237
14.3.3 synchronized语句 237
14.3.4 同步设计 240
14.4 wait、notifyAll和notify 241
14.5 等待和通知的详细介绍 243
14.6 线程调度 244
14.7 死锁 247
14.8 结束线程的执行 248
14.8.1 取消线程 249
14.8.2 等待线程结束 250
14.9 结束应用程序的执行 251
14.10 内存模型: 同步和volatile 252
14.10.1 同步动作 253
14.10.2 final字段和安全 254
14.10.3 “之前发生”关系 254
14.11 线程管理、线程安全和ThreadGroup 255
14.12 线程和异常 258
14.12.1 不要使用stop 259
14.12.2 栈轨迹 260
14.13 ThreadLocal变量 260
14.14 调试线程 261
第15章 注解 263
15.1 一个简单的注解实例 263
15.2 注解类型 264
15.3 注解元素 266
15.4 限制注解的适用性 267
15.5 保存策略 268
15.6 使用注解 268
第16章 反射 270
16.1 Class类 272
16.1.1 类型符号 272
16.1.2 类检查 273
16.1.3 检查类成员 277
16.1.4 命名类 279
16.1.5 通过名字获取Class对象 281
16.1.6 运行时类型查询 281
16.2 注解查询 282
16.3 Modifier类 283
16.4 成员类 283
16.5 访问检查和AccessibleObject 284
16.6 Field类 284
16.7 Method类 286
16.8 创建新对象和Constructor类 288
16.9 泛型类型检查 290
16.9.1 类型变量 290
16.9.2 参数化类型 291
16.9.3 通配符 291
16.9.4 泛型数组 291
16.9.5 Type对象的字符串表示 292
16.10 数组 292
16.11 包 294
16.12 Proxy类 295
16.13 加载类 297
16.13.1 ClassLoader类 298
16.13.2 为类的使用做准备 300
16.13.3 加载相关资源 301
16.14 在运行时控制断言 302
第17章 垃圾回收与内存 304
17.1 垃圾回收 304
17.2 一个简单的模型 305
17.3 终结 305
17.4 与垃圾回收器交互 308
17.5 可达性状态和引用对象 309
17.5.1 Reference类 309
17.5.2 引用和可达性强度 310
17.5.3 引用队列 312
17.5.4 终结和可达性 316
第18章 包 317
18.1 包的命名 317
18.2 类型导入 318
18.3 包的访问 319
18.4 包的内容 322
18.5 包的注解 323
18.6 包对象和规范 323
第19章 文档注释 326
19.1 剖析文档注释 326
19.2 标签 327
19.2.1 @see 327
19.2.2 {@link}和{@linkplain} 328
19.2.3 @param 328
19.2.4 @return 328
19.2.5 @throws和@exception 328
19.2.6 @deprecated 329
19.2.7 @author 329
19.2.8 @version 329
19.2.9 @since 330
19.2.10 {@literal}和{@code} 330
19.2.11 {@value} 330
19.2.12 {@docRoot} 330
19.2.13 {@inheritDoc} 331
19.3 继承方法的文档注释 331
19.4 一个简单示例 332
19.5 外部规范 334
19.5.1 包文档和概述文档 334
19.5.2 doc-files目录 337
19.6 使用说明 337
第20章 I/O包 338
20.1 流的概述 338
20.2 字节流 339
20.2.1 InputStream 340
20.2.2 OutputStream 342
20.3 字符流 343
20.3.1 Reader 344
20.3.2 Writer 345
20.3.3 字符流与标准流 346
20.4 InputStreamReader与OutputStreamWriter 346
20.5 流类简介 348
20.5.1 同步与并发 348
20.5.2 Filter流 349
20.5.3 Buffered流 351
20.5.4 Piped流 352
20.5.5 ByteArray字节流 353
20.5.6 CharArray字符流 354
20.5.7 String字符流 354
20.5.8 Print流 355
20.5.9 LineNumberReader 357
20.5.10 SequenceInputStream 358
20.5.11 Pushback流 359
20.5.12 StreamTokenizer 360
20.6 数据字节流 363
20.6.1 DataInput与DataOutput 364
20.6.2 Data流类 365
20.7 文件操作 366
20.7.1 File流与FileDescriptor 366
20.7.2 RandomAccessFile 367
20.7.3 File类 368
20.7.4 FilenameFilter与FileFilter 371
20.8 对象序列化 372
20.8.1 Object字节流 372
20.8.2 让我们的类成为可序列化的(Serializable) 373
20.8.3 序列化和反序列化顺序 375
20.8.4 定制序列化 375
20.8.5 对象版本机制 378
20.8.6 序列化字段 379
20.8.7 Externalizable接口 381
20.8.8 文档注释标签 381
20.9 IOException类 382
20.10 体验新I/O 383
第21章 集合 385
21.1 集合 385
21.2 迭代 387
21.3 使用Comparable和Comparator排序 389
21.4 Collection接口 390
21.5 Set和SortedSet 391
21.5.1 HashSet 392
21.5.2 LinkedHashSet 393
21.5.3 TreeSet 393
21.6 List 393
21.6.1 ArrayList 394
21.6.2 LinkedList 395
21.6.3 RandomAccess列表 396
21.7 Queue 396
21.8 Map和SortedMap 398
21.8.1 HashMap 400
21.8.2 LinkedHashMap 400
21.8.3 IdentityHashMap 401
21.8.4 WeakHashMap 401
21.8.5 TreeMap 402
21.9 enum集合 402
21.9.1 EnumSet 402
21.9.2 EnumMap 403
21.10 包装集合和Collections类 404
21.10.1 Collections工具 404
21.10.2 不可修改的包装器 407
21.10.3 检查型包装器 407
21.11 同步包装和并发集合 407
21.11.1 同步包装器 408
21.11.2 并发集合 409
21.12 Arrays工具类 411
21.13 编写迭代器实现 412
21.14 编写集合实现 413
21.15 遗留集合类型 417
21.15.1 Enumeration 417
21.15.2 Vector 418
21.15.3 Stack 419
21.15.4 Dictionary 419
21.15.5 Hashtable 419
21.16 Properties 419
第22章 各种常用工具 421
22.1 Formatter 421
22.1.1 格式说明符 422
22.1.2 整型转换 423
22.1.3 浮点转换 424
22.1.4 字符转换 425
22.1.5 通用转换 425
22.1.6 自定义格式化 425
22.1.7 格式控制异常 426
22.1.8 Formatter类 426
22.2 BitSet 427
22.3O bserver/Observable 429
22.4 Random 432
22.5 Scanner 433
22.5.1 数值流 433
22.5.2 扫描行 435
22.5.3 使用Scanner 437
22.5.4 本地化 440
22.6 StringTokenizer 440
22.7 Timer和TimerTask 441
22.8 UUID 444
22.9 Math和StrictMath 444
第23章 系统编程 447
23.1 System类 447
23.1.1 标准I/O流 447
23.1.2 系统属性 448
23.1.3 工具方法 449
23.2 创建进程 450
23.2.1 Process 451
23.2.2 进程环境 452
23.2.3 ProcessBuilder 453
23.2.4 可移植性 454
23.3 关闭 454
23.3.1 关闭挂钩 454
23.3.2 关闭序列 455
23.3.3 关闭策略 456
23.4 Runtime的其他部分 456
23.4.1 加载本地代码 457
23.4.2 调试 457
23.5 安全 457
23.5.1 SecurityManager类 458
23.5.2 权限 459
23.5.3 安全策略 460
23.5.4 访问控制器和特权执行 460
第24章 国际化与本地化 462
24.1 区域 462
24.2 资源束 464
24.2.1 ListResourceBundle 466
24.2.2 PropertyResourceBundle 467
24.2.3 子类化ResourceBundle 467
24.3 货币 468
24.4 时间、日期和日历 468
24.4.1 日历 469
24.4.2 时区 472
24.4.3 GregorianCalendar和SimpleTimeZone 473
24.5 格式化和解析日期与时间 474
24.6 文本的国际化和本地化 477
24.6.1 对照 477
24.6.2 格式化和解析 478
24.6.3 文本边界 480
第25章 标准包 482
25.1 java.awt——抽象窗口工具箱 483
25.2 java.applet——小应用程序 485
25.3 java.beans——构件 486
25.4 java.math——数学 486
25.5 java.net——网络 488
25.6 java.rmi——远程方法调用 490
25.7 java.security与相关的包——安全工具 493
25.8 java.sql——关系数据库访问 494
25.9 工具子包 494
25.9.1 并发工具java.util.concurrent 494
25.9.2 压缩文件工具java.util.jar 496
25.9.3 ZIP压缩文件工具java.util.zip 496
25.10 javax.*标准扩展 497
25.11 javax.accessibility——GUI的易用性 497
25.12 javax.naming——目录与命名服务 497
25.13 javax.sound——音频操作 498
25.14 javax.swing——Swing GUI构件 498
25.15 org.omg.CORBA--CORBA API 499
附录A 应用演化 500
附录B 常用表格 505
进阶读物 510
索引
......(更多)
求知欲是治疗无聊的良方。 求知欲本身无药可治。
......(更多)