目 录 1
第1章Java基础 1
1.1 Java的起源 2
1.1.1 Java与C和C++的关系 3
1.1.2 Java与C#的关系 4
1.2 Java对Internet的贡献 4
1.3 Java的魔术:字节码 5
1.2.3可移植性 5
1.2.2安全性 5
1.2.1 Java applets和Java应用程序 5
1.4 Java术语 6
1.5面向对象程序设计 8
1.5.1 封装 9
1.5.2 多态性 9
1.5.3 继承 10
获得Java软件开发人员工具包 10
1.6.1输入程序 11
1.6第一个简单的程序 11
1.6.2编译程序 12
1.6.3逐行分析第一个程序 12
1.6.4语法错误处理 15
1.7第二个简单程序 16
另一种数据类型 18
练习1-1将加仑换算为升 19
1.8两个控制语句 20
1.8.1 if语句 21
1.8.2 for循环语句 23
1.9创建代码块 24
1.10分号和定位 26
缩进原则 26
练习1-2改进从加仑到升的转换程序 27
1.11 Java关键字 29
1.12 Java的标识符 29
1.13思考与练习 30
Java类库 30
第2章数据类型与运算符 32
2.1 Java的简单类型 33
2.1.1 整数类型 34
2.1.2浮点型 35
2.1.3 字符 36
2.1.4 boolean类型 37
练习2-1 闪电有多远? 39
2.2.1 十六进制与八进制常量 40
2.2字面值 40
2.2.2字符转义序列 41
2.2.3字符串字面值 41
2.3变量详解 43
2.3.1初始化变量 43
2.3.2动态初始化 44
2.4变量的作用域和生命期 44
2.5算术运算符 47
2.6关系运算符和逻辑运算符 50
2.7赋值运算符 54
2.8赋值速记符 54
2.9赋值中的类型转换 55
2.10不兼容类型的强制转换 57
练习2-2显示逻辑运算符的真值表 59
2.11 表达式 60
2.11.1 表达式中的类型转换 61
2.11.2间距和圆括号 62
2.12思考与练习 63
第3章程序控制语句 64
3.1从键盘输入字符 65
3.2 if语句 66
3.2.1嵌套if语句 68
3.2.2 if-else-if阶梯状结构 69
3.3 switch语句 70
练习3-1建立一个Java帮助系统 74
3.4 for循环 77
3.4.1 for循环的一些变化形式 78
3.4.2缺失部分的for循环 79
3.4.3无限循环 80
3.4.4没有循环体的循环 81
3.4.5在for循环内部声明循环控制变量 81
3.5 while循环 83
3.6 do-while循环 84
练习3-2改进Java帮助系统 86
3.7使用break退出循环 89
3.8将break语句作为一种goto语句来使用 91
3.9使用continue 95
练习3-3完成Java帮助系统 97
3.10嵌套循环 100
3.11思考与练习 102
第4章类、对象和方法 104
4.1 类的基础 105
4.1.1 类的基本形式 105
4.1.2定义类 106
4.2如何创建对象 109
4.3 引用变量和赋值 110
4.4方法 111
向Vehicle类添加方法 112
4.5从方法返回值 114
4.6返回值 115
4.7使用参数 117
向Vehicle添加一个带参数的方法 118
练习4-1创建Help类 120
4.8构造函数 126
4.9带参数的构造函数 127
向Vehicle类添加一个构造函数 128
4.10深入介绍new运算符 130
4.11垃圾回收与终止器 130
finalize()方法 131
练习4-2演示垃圾回收 132
4.12 this关键字 134
4.13思考与练习 136
第5章其他数据类型与运算符 137
5.1数组 138
一维数组 138
练习5-1数组排序 142
5.2多维数组 143
二维数组 144
5.3不规则数组 145
5.3.2初始化多维数组 146
5.3.1三维或更多维的数组 146
5.4另一种声明数组的语法 148
5.5赋值数组引用 148
5.6使用length成员 150
练习5-2 Queue类 152
5.7字符串 156
5.7.1构造字符串 156
5.7.2操作字符串 157
5.7.4字符串是不可变的 160
5.7.3字符串数组 160
5.8使用命令行参数 162
5.9位运算符 163
5.9.1位运算符的与、或、异或和非 164
5.9.2位移运算符 168
5.9.3位运算赋值速记符 171
练习5-3 ShowBits类 171
5.10 “?”运算符 174
5.11 思考与练习 176
第6章方法和类详解 177
6.1 控制对类成员的访问 178
Java的访问指示符 178
练习6-1改进Queue类 183
6.2向方法传递对象 184
如何传递变量 185
6.3 返回对象 188
6.4方法重载 190
6.5重载构造函数 195
练习6-2重载队列构造函数 198
6.6递归 201
6.7 理解static 203
static代码块 206
练习6-3快速排序 207
6.8介绍嵌套类和内部类 210
6.9思考与练习 213
第7章继承 215
7.1继承的基础知识 216
成员访问与继承 219
7.2构造函数和继承 222
使用super调用超类构造函数 223
7.3使用super访问超类成员 228
练习7-1扩展Vehicle类 229
7.4创建多级层次结构 232
7.5何时调用构造函数 235
7.6超类引用和子类对象 237
7.7方法重写 242
7.8重写的方法支持多态性 245
7.8.1 为何使用重写的方法 246
7.8.2在TwoDShape中应用方法重写 247
7.9使用抽象类 251
7.10使用final 256
7.10.1使用final防止重写 256
7.10.2使用final防止继承 256
7.10.3数据成员使用final 257
7.11 Object类 258
7.12思考与练习 259
第8章包和接口 261
8.1 包 262
8.1.1定义包 262
8.1.2寻找包和CLASSPATH 263
8.1.3 一个简短的包的示例 264
8.2包和成员访问 265
8.2.1 包访问示例 267
8.3理解被保护的成员 268
8.4导入包 271
8.5 Java的类库位于包中 272
8.6接口 273
8.7 实现接口 274
8.8使用接口引用 278
练习8-1创建队列接口 280
8.9接口中的变量 286
8.10接口能够扩展 287
8.11思考与练习 288
第9章异常处理 289
9.1异常层次结构 290
9.2异常处理基础 290
9.2.1使用try和catch 291
9.2.2一个简单的异常示例 292
9.3未捕获异常的结果 294
异常使你能够合理地处理错误 295
9.4使用多个catch语句 297
9.5捕获子类异常 298
9.6可嵌入的try代码块 299
9.7抛出异常 301
重抛出一个异常 301
9.8 Throwable详解 303
9.9使用finally 305
9.10使用throws 307
9.11 Java的内置异常 308
9.12创建异常子类 311
练习9-1 向排序类添加异常 313
9.13思考与练习 317
第10章使用I/0 318
10.1 Java的I/O基于流 319
10.2字节流和字符流 319
10.4字符流类 320
10.5预定义流 320
10.3字节流类 320
10.6使用字节流 322
10.6.1读取控制台输入 323
10.6.2写入控制台输出 324
10.7使用字节流读写文件 325
10.7.1从文件输入 326
10.7.2写入文件 327
10.8读写二进制数据 330
练习10-1文件比较实用程序 333
10.9随机访问文件 335
10.10使用Java字符流 338
10.10.1基于字符流的控制台输入 339
10.10.2使用字符流的控制台输出 341
10.11使用字符流的文件I/O 343
10.11.1使用FileWriter 343
10.11.2使用FileReader 344
10.12使用Java类型包装器转换数值字符串 346
练习10-2创建一个基于磁盘的帮助系统 348
10.13思考与练习 355
第11章多线程程序设计 356
11.1多线程基本原理 357
11.2Thread类和Runnab1e接口 358
11.3创建一个线程 359
一些简单的改进 362
练习11-1扩展Thread 364
11.4创建多重线程 366
11.5确定线程何时结束 369
11.6线程的优先级 373
11.7 同步化 376
11.8使用同步化方法 376
11.9同步化语句 379
11.10使用notify()、wait()和notifyAll()的线程通信 381
使用wait()和notify()的一个示例 382
11.11 线程的挂起、继续执行和停止 387
练习11-2使用主线程 391
11.12思考与练习 392
第12章applet、事件和其他议题 394
12.1 applet基础知识 395
applet的组织和基本元素 398
12.2 applet体系结构 398
12.3一个完整的applet框架 399
12.4 applet初始化与终止 400
12.5请求重绘 401
update()方法 402
练习12-1一个简单的广告条applet 402
12.6使用状态窗口 406
12.7向applet传递参数 407
12.8 Applet类 409
事件处理 411
12.9委派事件模型 411
12.9.3事件侦听者 412
12.9.4事件类 412
12.9.1事件 412
12.9.2事件源 412
12.9.5事件侦听者接口 413
12.10使用委派事件模型 414
12.10.1处理鼠标事件 415
12.10.2一个简单的鼠标事件applet 415
12.11其他Java关键字 418
12.11.2 instanceof 419
12.11.3 strictfp 419
12.11.1 transient和volatile修饰符 419
12.11.4 assert 420
12.11.5 Native方法 421
12.12思考与练习 422
附录A思考与练习答案 423
附录B使用Java的文档注释 456
B.1 javadoc标记 457
B.2文档注释的一般格式 461
B.3 javadoc的输出 461
B.4一个使用文档注释的示例 461