第1章Java基础 1
1.1 Java的起源 2
1.1.1 Java与C和C+++的关系 3
1.1.2 Java与C#的关系 3
1.2 Java对Internet的贡献 4
1.2.1 Java Applet 4
1.2.2安全性 4
1.2.3可移植性 4
1.3 Java的魔法:字节码 5
1.4 Java的主要术语 6
1.5面向对象程序设计 7
1.5.1封装 8
1.5.2多态性 8
1.5.3继承 9
1.6获得Java开发工具包 9
1.7第一个简单的程序 10
1.7.1输入程序 10
1.7.2编译程序 11
1.7.3逐行分析第一个程序 12
1.8处理语法错误 14
1.9第二个简单程序 14
1.10另一种数据类型 16
1.11两个控制语句 19
1.11.1 if语句 19
1.11.2 for循环语句 20
1.12创建代码块 22
1.13分号和定位 23
1.14缩进原则 23
1.15 Java关键字 25
1.16 Java的标识符 26
1.17 Java类库 26
1.18自测题 27
第2章 数据类型与运算符 29
2.1数据类型为什么重要 30
2.2 Java的基本类型 30
2.2.1整数类型 30
2.2.2浮点型 32
2.2.3字符型 33
2.2.4布尔类型 34
2.3字面值 36
2.3.1十六进制、八进制和二进制字面值 36
2.3.2字符转义序列 37
2.3.3字符串字面值 37
2.4变量详解 38
2.4.1初始化变量 38
2.4.2动态初始化 39
2.5变量的作用域和生命期 39
2.6运算符 42
2.7算术运算符 42
2.8关系运算符和逻辑运算符 44
2.9短路逻辑运算符 46
2.10赋值运算符 47
2.11速记赋值 47
2.12赋值中的类型转换 49
2.13不兼容类型的强制转换 50
2.14运算符优先级 51
2.15表达式 53
2.15.1表达式中的类型转换 53
2.15.2间距和圆括号 55
2.16自测题 55
第3章 程序控制语句 57
3.1从键盘输入字符 58
3.2 if语句 59
3.2.1嵌套if语句 60
3.2.2 if-else-if阶梯状结构 61
3.3 switch语句 62
3.4 for循环 68
3.4.1 for循环的一些变体 69
3.4.2缺失部分要素的for循环 70
3.4.3无限循环 71
3.4.4没有循环体的循环 71
3.4.5在for循环内部声明循环控 制变量 72
3.4.6增强型for循环 73
3.5 while循环 73
3.6 do-while循环 74
3.7使用break语句退出循环 79
3.8将break语句作为一种goto语 句使用 81
3.9使用continue 84
3.10嵌套循环 89
3.11自测题 90
第4章类、对象和方法 93
4.1类的基础知识 94
4.1.1类的基本形式 94
4.1.2定义类 95
4.2如何创建对象 98
4.3引用变量和赋值 98
4.4方法 99
4.5从方法返回值 101
4.6返回值 102
4.7使用形参 104
4.8构造函数 112
4.9带形参的构造函数 113
4.10深入介绍new运算符 115
4.11垃圾回收与终止器 116
4.12 this关键字 119
4.13自测题 121
第5章 其他数据类型与运算符 123
5.1数组 124
5.2多维数组 129
5.3不规则数组 130
5.3.1三维或更多维的数组 131
5.3.2初始化多维数组 131
5.4另一种声明数组的语法 132
5.5数组引用赋值 133
5.6使用length成员 134
5.7 for-each形式的循环 140
5.7.1迭代多维数组 142
5.7.2应用增强型for循环 144
5.8字符串 144
5.8.1构造字符串 145
5.8.2操作字符串 145
5.8.3字符串数组 147
5.8.4字符串是不可变的 148
5.8.5使用String控制switch 语句 149
5.9使用命令行实参 150
5.10位运算符 151
5.10.1位运算符的与、或、异 或和非 152
5.10.2移位运算符 156
5.10.3位运算符赋值速记符 158
5.11“?”运算符 160
5.12自测题 162
第6章 方法和类详解 163
6.1控制对类成员的访问 164
6.2向方法传递对象 169
6.3返回对象 173
6.4方法重载 174
6.5重载构造函数 179
6.6递归 184
6.7理解static关键字 186
6.8嵌套类和内部类 192
6.9可变长度实参 194
6.9.1 Varargs基础 195
6.9.2重载Varargs方法 197
6.9.3 Varargs和歧义 199
6.10自测题 200
第7章 继承 203
7.1继承的基础知识 204
7.2成员访问与继承 206
7.3构造函数和继承 209
7.4使用super调用超类构造 函数 210
7.5使用super访问超类成员 214
7.6创建多级层次结构 218
7.7何时调用构造函数 221
7.8超类引用和子类对象 222
7.9方法重写 226
7.10重写的方法支持多态性 228
7.11为何使用重写的方法 230
7.12使用抽象类 234
7.13使用final 237
7.13.1使用final防止重写 237
7.13.2使用final防止继承 238
7.13.3对数据成员使用fiinal 238
7.14 Object类 240
7.15自测题 240
第8章 包和接口 243
8.1包 244
8.1.1定义包 244
8.1.2寻找包和CLASSPATH 245
8.1.3一个简短的包的示例 245
8.2包和成员访问 247
8.3理解被保护的成员 249
8.4导入包 251
8.5 Java的类库位于包中 252
8.6接口 253
8.7实现接口 254
8.8使用接口引用 257
8.9接口中的变量 264
8.10接口能够扩展 264
8.11自测题 265
第9章 异常处理 267
9.1异常的层次结构 268
9.2异常处理基础 268
9.2.1使用关键字try和catch 269
9.2.2一个简单的异常示例 270
9.3未捕获异常的结果 271
9.4使用多个catch语句 274
9.5捕获子类异常 275
9.6 try代码块可以嵌套 276
9.7抛出异常 277
9.8 Throwable详解 279
9.9使用fiinally 280
9.10使用throws语句 282
9.11 JDK 7新增的异常功能 283
9.12 Java的内置异常 285
9.13创建异常子类 287
9.14自测题 292
第10章 使用I/O 293
10.1 Java的I/O基于流 294
10.2字节流和字符流 294
10.3字节流类 295
10.4字符流类 295
10.5预定义流 296
10.6使用字节流 296
10.6.1读取控制台输入 297
10.6.2写入控制台输出 298
10.7使用字节流读写文件 299
10.7.1从文件输入 299
10.7.2写入文件 303
10.8自动关闭文件 305
10.9读写二进制数据 308
10.10随机访问文件 312
10.11使用Java字符流 314
10.11.1使用字符流的控制台 输入 315
10.11.2使用字符流的控制台 输出 317
10.12使用字符流的文件I/O 318
10.12.1使用FileWriter 319
10.12.2使用FileReader 320
10.13使用Java类型包装器转换 数值字符串 321
10.14自测题 329
第11章 多线程程序设计 331
11.1多线程基本原理 332
11.2 Thread类和Runnable接口 333
11.3创建一个线程 333
11.4创建多个线程 340
11.5确定线程何时结束 342
11.6线程的优先级 345
11.7同步 348
11.8使用同步方法 349
11.9同步语句 351
11.10使用notify()、wait()和notifyAll()的线程通信 354
11.11线程的挂起、继续执行和 停止 359
11.12自测题 364
第12章 枚举、自动装箱、静态导 入和注释 365
12.1枚举 366
12.2 Java的枚举是类类型 368
12.3 values()和valueOf()方法 369
12.4构造函数、方法、实例变量 和枚举 370
12.5枚举继承Enum 372
12.6自动装箱 378
12.7类型包装器 379
12.8自动装箱基础 380
12.9自动装箱和方法 381
12.10发生在表达式中的自动装 箱/自动拆箱 382
12.11静态导入 384
12.12注释(元数据) 387
12.13自测题 389
第13章 泛型 391
13.1泛型基础 392
13.2一个简单的泛型示例 392
13.2.1泛型只能用于对象 396
13.2.2泛型类型是否相同基于 其类型实参 396
13.2.3带有两个类型形参的泛 型类 396
13.2.4泛型类的一般形式 398
13.3约束类型 398
13.4使用通配符实参 401
13.5约束通配符 404
13.6泛型方法 406
13.7泛型构造函数 408
13.8泛型接口 409
13.9原类型和遗留代码 415
13.10使用菱形运算符进行类 型推断 418
13.11擦除特性 419
13.12歧义错误 419
13.13一些泛型限制 420
13.13.1类型形参不能实 例化 420
13.13.2对静态成员的限制 421
13.13.3泛型数组限制 421
13.13.4泛型异常限制 422
13.14继续学习泛型 422
13.15自测题 422
第14章Applet、事件和其他 主题 425
14.1 applet基础 426
14.2 applet的组织和基本构件 428
14.3 applet架构 429
14.4一个完整的applet框架 429
14.5 applet初始化与终止 430
14.6请求重绘 431
14.7使用状态窗口 436
14.8向applet传递形参 436
14.9Applet类 438
14.10事件处理 439
14.11委派事件模型 440
14.12事件 440
14.12.1事件源 440
14.12.2事件侦听器 441
14.12.3事件类 441
14.12.4事件侦听器接口 441
14.13使用委派事件模型 442
14.13.1处理鼠标事件和鼠标移 动事件 442
14.13.2一个简单的鼠标事 件applet 443
14.14其他Java关键字 446
14.14.1 transient和volatile修 饰符 446
14.14.2 instanceof 447
14.14.3 strictfp 447
14.14.4 assert 447
14.14.5 Native方法 448
14.15自测题 449
第15章Swing基础 451
15.1 Swing的起源和设计原则 452
15.2组件和容器 454
15.2.1组件 454
15.2.2容器 455
15.2.3顶级容器窗格 455
15.3布局管理器 455
15.4第一个简单的 Swing程序 456
15.5使用JButton 461
15.6使用JTextField 464
15.7创建JCheckBox 468
15.8使用JList 471
15.9使用匿名内部类来处理 事件 479
15.10创建一个Swing applet 480
15.11进一步学习 482
15.12自测题 483
附录A自测题答案 485
附录B 使用Java的文档注释 521