第1章 简介 1
1.1 示例程序 4
1.2 符号 4
1.3 预定义类和接口的关系 4
1.4 参考文献 5
第2章 语法 7
2.1 与环境无关的语法 7
2.2 词法语法 7
2.3 语义语法 7
2.4 语法符号 8
3.1 Unicode 11
第3章 词法结构 11
3.2 词法转换 12
3.3 Unicode转义符 12
3.4 行终止符 13
3.5 输入元素和标记 14
3.6 空白 15
3.7 注释 15
3.8 标识符 16
3.9 关键字 17
3.10 字面值 18
3.12 运算符 26
3.11 分隔符 26
第4章 类型、值和变量 27
4.1 各种类型和值 28
4.2 基本类型和值 28
4.3 引用类型和值 35
4.4 类型变量 39
4.5 参数化类型 41
4.6 类型擦除 45
4.7 可具体化的类型 45
4.8 原生类型 46
4.10 子类型化 49
4.9 交集类型 49
4.11 在何处使用类型 51
4.12 变量 53
第5章 转换和提升 60
5.1 转换的种类 62
5.2 赋值转换 71
5.3 方法调用转换 76
5.4 字符串转换 77
5.5 强制转换 77
5.6 数值提升 82
第6章 名称 85
6.2 名称和标识符 86
6.1 声明 86
6.3 声明的作用域 88
6.4 成员和继承 92
6.5 确定名称的含义 95
66 访问控制 104
6.7 完全限定的名称和规范名称 109
6.8 命名约定 110
第7章 包 116
7.1 包成员 116
7.2 包的主机支持 117
7.4 包声明 119
7.3 编译单元 119
7.5 导入声明 121
7.6 顶级类型声明 126
7.7 惟一的包名称 128
第8章 类 130
8.1 类声明 131
8.2 类成员 143
8.3 字段声明 147
8.4 方法声明 159
8.5 成员类型声明 180
8.7 静态初始化语句 181
8.6 实例初始化语句 181
8.8 构造函数声明 182
8.9 枚举 189
第9章 接口 197
9.1 接口声明 197
9.2 接口成员 200
9.3 字段(常量)声明 201
9.4 抽象方法声明 203
9.5 成员类型声明 205
9.6 注释类型 206
9.7 注释 213
10.1 数组类型 219
第10章 数组 219
10.2 数组变量 220
10.3 数组创建 221
10.4 数组访问 221
10.5 数组:一个简单的示例 221
10.6 数组初始化语句 222
10.7 数组成员 223
10.8 数组的Class对象 224
10.9 字符的数组不是一个String 224
10.10 数组存储异常 224
第11章 异常 226
11.2 异常的编译时检查 227
11.1 异常的起因 227
11.3 异常处理 229
11.4 异常的示例 231
11.5 异常层次结构 232
第12章 执行 234
12.1 虚拟机启动 234
12.2 加载类和接口 236
12.3 链接类和接口 237
12.4 初始化类和接口 239
12.5 创建新的类实例 243
12.6 类实例的终结 246
12.7 卸载类和接口 249
12.8 程序退出 250
第13章 二进制兼容性 251
13.1 二进制的形式 252
13.2 二进制兼容性是什么,不是什么 255
13.3 包的演变 255
13.4 类的演变 256
13.5 接口的演变 269
第14章 块和语句 271
14.1 语句的正常结束和突然结束 271
14.2 块 272
14.3 本地类声明 273
14.4 局部变量声明语句 274
14.5 语句 278
14.6 空语句 279
14.7 标签语句 280
14.8 表达式语句 280
14.9 if语句 281
14.10 assert语句 282
14.11 switch语句 285
14.12 while语句 288
14.13 do语句 289
14.14 for语句 291
14.15 break语句 294
14.16 continue语句 296
14.17 return语句 297
14.18 throw语句 298
14.19 synchronized语句 299
14.20 try语句 300
14.21 不可到达语句 305
第15章 表达式 309
15.1 计算、表示和结果 309
15.3 表达式的类型 310
15.4 精确浮点数表达式 310
15.2 变量作为值 310
15.5 表达式和运行时检查 311
15.6 计算的正常和突然结束 312
15.7 求值顺序 313
15.8 主表达式 317
15.9 类实例创建表达式 320
15.10 数组创建表达式 325
15.11 字段访问表达式 329
15.12 内存调用表达式 332
15.13 数组访问表达式 362
15.14 后缀表达式 365
15.15 一元运算符 366
15.16 强制转换表达式 369
15.17 乘法运算符 370
15.18 加运算符 373
15.19 移位运算符 377
15.20 关系运算符 378
15.21 相等运算符 380
15.22 位和逻辑运算符 382
15.23 条件与运算符&& 383
15.24 条件或运算符‖ 383
15.25 条件运算符?: 384
15.26 赋值运算符 385
15.28 常量表达式 396
15.27 表达式 396
第16章 明确赋值 398
16.1 明确赋值和表达式 402
16.2 语明确赋值和语句 406
16.3 明确赋值和参数 412
16.4 明确赋值和数组初始化方法 412
16.5 明确赋值和枚举常量 412
16.6 明确赋值和匿名类 413
16.7 明确赋值和成员类型 413
16.8 明确赋值和静态初始化方法 413
16.9 明确赋值、构造函数和实例初始化方法 414
17.1 锁 415
第17章 线程和锁 415
17.2 示例中的符号 416
17.3 不正确同步的程序出现意外行为 416
17.4 内存模型 418
17.5 Final字段语义 428
17.6 字分开 432
17.7 double和long的非原子处理 433
17.8 等待集合和通知 433
17.9 休眠和转交 435
第18章 语法 437
18.1 Java编程语言的语法 437