目 录
第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 可移植性 5
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 第一个简单的程序 10
1.6.1 输入程序 10
1.6.2 编译程序 11
1.6.3 逐行分析第一个程序 11
1.7 第二个简单程序 14
练习1-1 将加仑换算为升 17
1.8 两个控制语句 18
1.8.1 if语句 18
1.8.2 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
2.1.1 整数类型 29
2.1.2 浮点型 31
2.1.3 字符型 31
2.1.4 布尔类型 33
练习2-1 闪电有多远? 34
2.2 字面值 35
2.2.1 十六进制与八进制
常量 35
2.2.2 字符转义序列 35
2.2.3 字符串字面值 36
2.3 变量详解 37
2.3.1 初始化变量 37
2.3.2 动态初始化 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
2.11.1 表达式中的类型
转换 52
2.11.2 间距和圆括号 54
2.12 思考与练习 54
第3章 程序控制语句 56
3.1 从键盘输入字符 57
3.2 if语句 58
3.2.1 嵌套if语句 59
3.2.2 if-else-if阶梯状
结构 60
3.3 switch语句 62
练习3-1 建立一个Java
帮助系统 65
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循环 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
4.1.1 类的基本形式 94
4.1.2 定义类 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
5.3.1 三维或更多维的
数组 131
5.3.2 初始化多维数组 132
5.4 另一种声明数组的语法 133
5.5 数组引用赋值 134
5.6 使用length成员 135
练习5-2 Queue类 137
5.7 for-each形式的循环 141
5.8 字符串 145
5.8.1 构造字符串 146
5.8.2 操作字符串 146
5.8.3 字符串数组 148
5.8.4 字符串是不可变的 149
5.9 使用命令行参数 150
5.10 位运算符 152
5.10.1 位运算符的与、
或、异或和非 152
5.10.2 位移运算符 156
5.10.3 位运算符赋值
速记符 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
6.9.1 Varargs基础 199
6.9.2 重载Varargs方法 202
6.9.3 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
7.8.1 为何使用重写的
方法 235
7.8.2 在TwoDShape中
应用方法重写 236
7.9 使用抽象类 240
7.10 使用final 244
7.10.1 使用final防止
重写 244
7.10.2 使用final防止
继承 245
7.10.3 对数据成员
使用final 245
7.11 Object类 246
7.12 思考与练习 247
第8章 包和接口 248
8.1 包 249
8.1.1 定义包 249
8.1.2 寻找包和
CLASSPATH 250
8.1.3 一个简短的包的
示例 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
9.2.1 使用try和catch 276
9.2.2 一个简单的异常
示例 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
10.6.1 读取控制台输入 304
10.6.2 写入控制台输出 305
10.7 使用字节流读写文件 306
10.7.1 从文件输入 306
10.7.2 写入文件 308
10.8 读写二进制数据 310
练习10-1 文件比较程序 314
10.9 随机访问文件 316
10.10 使用Java字符流 319
10.10.1 使用字符流的
控制台输入 320
10.10.2 使用字符流的
控制台输出 322
10.11 使用字符流的文件I/O 324
10.11.1 使用FileWriter 324
10.11.2 使用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
14.9.1 事件 444
14.9.2 事件源 444
14.9.3 事件侦听者 445
14.9.4 事件类 445
14.9.5 事件侦听者接口 445
14.10 使用委派事件模型 446
14.10.1 处理鼠标事件 447
14.10.2 一个简单的鼠标
事件applet 448
14.11 其他Java关键字 451
14.11.1 transient和
volatile修饰符 451
14.11.2 instanceof 451
14.11.3 strictfp 452
14.11.4 assert 452
14.11.5 Native方法 452
14.12 思考与练习 454
第15章 Swing基础 455
15.1 Swing的起源和设计原则 456
15.2 组件和容器 458
15.2.1 组件 458
15.2.2 容器 459
15.2.3 顶级容器窗格 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
??
??
??
??
VIII Java实用教程(第4版)
目录 IX