第1章 Java基础 1
1.1 Java的起源 2
Java与C和C++的关系 3
Java与C#的关系 3
1.2 Java对Internet的贡献 4
Java Applet 4
安全性 4
可移植性 5
1.3 Java的魔法:字节码 5
1.4 Java的主要术语 6
1.5面向对象程序设计 7
封装 8
多态性 8
继承 9
1.6第一个简单的程序 10
输入程序 10
编译程序 11
逐行分析第一个程序 11
1.7第二个简单程序 14
练习1-1将加仑换算为升 17
1.8两个控制语句 18
if语句 18
for循环语句 20
1.9创建代码块 21
1.10分号和定位 23
练习1-2改进从加仑到升的转换程序 24
1.11 Java的保留关键字 25
1.12 Java的标识符 26
1.13思考与练习 27
第2章 数据类型与运算符 28
2.1 Java的原语类型 29
整数类型 29
浮点型 31
字符型 31
布尔类型 33
练习2-1闪电有多远? 34
2.2字面值 35
十六进制与八进制常量 35
字符转义序列 35
字符串字面值 36
2.3变量详解 37
初始化变量 37
动态初始化 37
2.4作用域和变量的生命期 38
2.5算术运算符 41
2.6关系运算符和逻辑运算符 43
2.7赋值运算符 46
2.8速记赋值 46
2.9赋值中的类型转换 47
2.10不兼容类型的强制转换 48
练习2-2显示逻辑运算符的真值表 51
2.11表达式 52
表达式中的类型转换 52
间距和圆括号 54
2.12思考与练习 54
第3章 程序控制语句 56
3.1从键盘输入字符 57
3.2 if语句 58
嵌套if语句 59
if-else-if阶梯状结构 60
3.3 switch语句 62
练习3-1建立一个Java帮助系统 65
3.4 for循环 68
for循环的一些变体 69
缺失部分要素的for循环 70
无限循环 71
没有循环体的循环 71
在for循环内部声明循环控制变量 72
增强型for循环 73
3.5 while循环 73
3.6 do-while循环 75
练习3-2改进Java帮助系统 77
3.7使用break语句退出循环 79
3.8将break语句作为一种goto语句使用 81
3.9使用continue 85
练习3-3完成Java帮助系统 87
3.10嵌套的循环 90
3.11思考与练习 91
第4章 类、对象和方法 93
4.1类的基础知识 94
类的基本形式 94
定义类 95
4.2如何创建对象 98
4.3引用变量和赋值 98
4.4方法 99
4.5从方法返回值 102
4.6返回值 102
4.7使用参数 104
练习4-1创建Help类 107
4.8构造函数 113
4.9带参数的构造函数 114
4.10深入介绍new运算符 116
4.11垃圾回收与终止器 117
练习4-2演示垃圾回收 118
4.12 this关键字 120
4.13思考与练习 122
第5章 其他数据类型与运算符 123
5.1数组 124
练习5-1排序数组 127
5.2多维数组 129
5.3不规则数组 130
三维或更多维的数组 131
初始化多维数组 132
5.4另一种声明数组的语法 133
5.5数组引用赋值 134
5.6使用length成员 135
练习5-2 Queue类 137
5.7 for-each形式的循环 141
5.8字符串 145
构造字符串 146
操作字符串 146
字符串数组 148
字符串是不可变的 149
5.9使用命令行参数 150
5.10位运算符 152
位运算符的与、或、异或和非 152
位移运算符 156
位运算符赋值速记符 158
练习5-3 ShowBits类 158
5.11“?”运算符 161
5.12思考与练习 163
第6章 方法和类详解 164
6.1控制对类成员的访问 165
练习6-1改进Queue类 169
6.2向方法传递对象 171
6.3从方法返回对象 175
6.4方法重载 177
6.5重载构造函数 182
练习6-2重载Queue构造函数 184
6.6递归 187
6.7理解static关键字 189
练习6-3快速排序 193
6.8嵌套类和内部类 196
6.9可变长度变元 199
Varargs基础 199
重载Varargs方法 202
Varargs和歧义 203
6.10思考与练习 204
第7章 继承 206
7.1继承的基础知识 207
7.2构造函数和继承 212
7.3使用super访问超类成员 218
练习7-1扩展Vehicle类 219
7.4创建多级层次结构 222
7.5何时调用构造函数 225
7.6超类引用和子类对象 226
7.7方法重写 231
7.8重写的方法支持多态性 234
为何使用重写的方法 235
在TwoDShape中应用方法重写 236
7.9使用抽象类 240
7.10使用final 244
使用final防止重写 244
使用final防止继承 245
对数据成员使用final 245
7.11 Object类 246
7.12思考与练习 247
第8章 包和接口 248
8.1包 249
定义包 249
寻找包和CLASSPATH 250
一个简短的包的示例 250
8.2包和成员访问 252
8.3理解被保护的成员 254
8.4导入包 256
8.5 Java的类库位于包中 258
8.6接口 258
8.7实现接口 259
8.8使用接口引用 263
练习8-1创建队列接口 265
8.9接口中的变量 271
8.10接口能够扩展 272
8.11思考与练习 273
第9章 异常处理 274
9.1异常的层次结构 275
9.2异常处理基础 275
使用try和catch 276
一个简单的异常示例 276
9.3未捕获异常的结果 278
9.4使用多个catch语句 281
9.5捕获子类异常 282
9.6可嵌入的try代码块 283
9.7抛出异常 285
9.8 Throwable详解 287
9.9使用finally 288
9.10使用throws 290
9.11 Java的内置异常 292
9.12创建异常子类 294
练习9-1向排序类添加异常 295
9.13思考与练习 299
第10章 使用I/O 300
10.1 Java的I/O基于流 301
10.2字节流和字符流 301
10.3字节流类 301
10.4字符流类 302
10.5预定义流 302
10.6使用字节流 303
读取控制台输入 304
写入控制台输出 305
10.7使用字节流读写文件 306
从文件输入 306
写入文件 308
10.8读写二进制数据 310
练习10-1文件比较程序 314
10.9随机访问文件 316
10.10使用Java字符流 319
使用字符流的控制台输入 320
使用字符流的控制台输出 322
10.11使用字符流的文件I/O 324
使用FileWriter 324
使用FileReader 325
10.12使用Java类型包装器转换数值字符串 327
练习10-2创建一个基于磁盘的帮助系统 329
10.13思考与练习 335
第11章 多线程程序设计 336
11.1多线程基本原理 337
11.2 Thread类和Runnable接口 337
11.3创建一个线程 338
练习11-1扩展Thread 343
11.4创建多重线程 346
11.5确定线程何时结束 348
11.6线程的优先级 351
11.7同步化 354
11.8使用同步化方法 355
11.9同步化语句 358
11.10使用notify()、wait()和notifyAll()的线程通信 360
11.11线程的挂起、继续执行和停止 365
练习11-2使用主线程 369
11.12思考与练习 371
第12章 枚举、自动装箱和静态导入 372
12.1枚举 373
12.2 Java的枚举是类类型 376
12.3 values()和valueOf()方法 376
12.4构造函数、方法、实例变量和枚举 377
12.5枚举继承Enum 379
练习12-1计算机控制的交通指示灯 380
12.6类型包装器 386
12.7自动装箱基础 387
12.8自动装箱和方法 388
12.9发生在表达式中的自动装箱/自动拆箱 389
12.10静态导入 391
12.11注释(元数据) 394
12.12思考与练习 396
第13章 泛型 397
13.1泛型基础 398
13.2一个简单的泛型示例 398
13.3约束类型 404
13.4使用通配符变元 407
13.5约束通配符 410
13.6泛型方法 412
13.7泛型构造函数 414
13.8泛型接口 415
练习13-1创建一个泛型队列 417
13.9原类型和遗留代码 421
13.10擦除特性 424
13.11歧义错误 425
13.12一些泛型限制 426
13.13思考与练习 428
第14章 Applet、事件和其他议题 429
14.1 applet基础 430
14.2 applet层次结构 433
14.3一个完整的applet框架 433
14.4 applet初始化与终止 434
14.5请求重绘 435
练习12-1一个简单的广告条applet 436
14.6使用状态窗口 440
14.7向applet传递参数 441
14.8 Applet类 443
14.9委派事件模型 444
事件 444
事件源 444
事件侦听者 445
事件类 445
事件侦听者接口 445
14.10使用委派事件模型 446
处理鼠标事件 447
一个简单的鼠标事件applet 448
14.11其他Java关键字 451
transient和volatile修饰符 451
instanceof 451
strictfp 452
assert 452
Native方法 452
14.12思考与练习 454
第15章 Swing基础 455
15.1 Swing的起源和设计原则 456
15.2组件和容器 458
组件 458
容器 459
顶级容器窗格 459
15.3布局管理器 459
15.4第一个简单的Swing程序 460
15.5使用JButton 465
15.6使用JTextField 468
15.7创建JCheckBox 472
15.8使用JList 475
练习15-1一个基于Swing的文件比较实用程序 478
15.9使用匿名内部类处理事件 484
15.10创建一个Swing applet 484
15.11思考与练习 487
附录 思考与练习答案 489