第1章 计算机和Java applet简介 1
1.1 简介 1
1.2 什么是计算机 4
1.3 计算机的组织结构 4
1.4 操作系统的发展 5
1.5 个人计算、分布式计算和客户/服务器计算 5
1.6 机器语言、汇编语言和高级语言 6
1.7 C++的历史 7
1.8 Java的历史 8
1.9 Java的类库 8
1.10 其他高级语言 9
1.11 结构化编程 9
1.12 一个典型Java环境的基础知识 9
1.13 预览本书 11
1.14 关于Java和本书的一般注意事项 13
1.15 Java编程介绍 15
1.16 一个简单的例子:打印一行文本 15
1.17 另一个Java程序:整数相加 19
1.18 关于内存的概念 24
1.19 算术运算 25
1.20 条件判断:相等运算符和关系运算符 28
小结 32
术语 35
自测练习 37
自测练习答案 38
练习 39
第2章 控制结构(一) 43
2.1 简介 43
2.2 算法 43
2.3 伪代码 43
2.4 控制结构 44
2.5 if选择结构 46
2.6 if/else选择结构 47
2.7 while循环结构 51
2.8 构造算法:实例1(计数器控制循环) 52
2.9 自顶向下、逐步求精的构造算法:实例2(标志控制循环) 56
2.10 自顶向下、逐步求精的构造算法——实例3(嵌套的控制结构) 61
2.11 赋值运算符 65
2.12 自增和自减运算符 66
2.13 基本数据类型 68
2.14 常见的转义序列 69
小结 70
术语 71
自测练习 72
自测练习答案 73
练习 74
第3章 控制结构(二) 80
3.1 简介 80
3.2 计数器控制循环的实质 80
3.3 for循环结构 82
3.4 使用for结构的例子 85
3.5 switch多重选择结构 88
3.6 do/while循环结构 91
3.7 break和continue语句 93
3.8 带标记的break和continue语句 95
3.9 逻辑运算符 97
3.10 结构化编程小结 101
小结 105
术语 105
自测练习 106
自测练习答案 107
练习 108
第4章 方法 112
4.1 简介 112
4.2 Java中的程序模块 112
4.3 Math类的方法 113
4.4 方法 114
4.5 方法定义 115
4.6 参数类型提升 119
4.7 Java API软件包 120
4.8 生成随机数 121
4.9 案例:一个机会游戏 124
4.10 自动变量 128
4.11 作用域规则 129
4.12 递归 131
4.13 使用递归的例子:斐波纳契数列 133
4.14 递归与迭代 136
4.15 方法重载 138
4.16 Applet类的方法 140
小结 141
术语 143
自测练习 144
自测练习答案 146
练习 149
第5章 数组 157
5.1 简介 157
5.2 数组 157
5.3 声明数组和分配数组 159
5.4 使用数组的实例 160
5.4.1 分配数组并初始化数组元素 160
5.4.2 使用初始化值列表来初始化数组元素 161
5.4.3 计算存储在数组元素中的值 162
5.4.4 对数组元素求和 164
5.4.5 使用数组分析调查结果 165
5.5 引用和引用参数 169
5.6 向方法传递数组 170
5.7 数组排序 172
5.8 数组查找:线性查找和二分查找 174
5.8.1 线性查找 174
5.8.2 二分查找 175
5.9 多维数组 178
小结 184
术语 185
自测练习 185
自测练习答案 186
练习 187
递归练习 195
特殊小节:建立自己的计算机 198
第6章 基于对象的编程 204
6.1 简介 204
6.2 通过类实现一个抽象数据类型Time 205
6.3 类作用域 208
6.4 控制对成员的访问 209
6.5 实用方法 210
6.6 初始化类对象:构造函数 213
6.7 使用重载的构造函数 214
6.8 使用set和get方法 217
6.9 软件可重用性 221
6.10 final实例变量 222
6.11 复合:作为其他类的实例变量的对象 223
6.12 软件包访问 226
6.13 使用this引用 227
6.14 终止函数 231
6.15 静态类成员 231
6.16 数据抽象和信息隐藏 234
6.16.1 案例:队列抽象数据类型 236
小结 236
术语 237
自测练习 238
自测练习答案 238
练习 238
第7章 面向对象的编程 242
7.1 简介 242
7.2 超类和子类 243
7.3 protected成员 245
7.4 超类对象和子类对象之间的关系 245
7.5 在子类中使用构造函数和终止函数 249
7.6 从子类对象到超类对象的隐式转换 252
7.7 使用继承的软件工程 253
7.8 复合与继承 254
7.9 案例分析:点、圆、圆柱体 254
7.10 多态简介 259
7.11 类型域和switch语句 259
7.12 动态方法绑定 259
7.13 final方法和类 260
7.14 抽象超类和具体类 260
7.15 多态的例子 261
7.16 案例分析:一个使用多态的工资支付系统 262
7.17 新类和动态绑定 268
7.18 案例分析:继承接口与实现 269
7.19 基本类型的类型包装类 273
小结 274
术语 275
自测练习 276
自测练习答案 277
练习 277
第8章 字符串和字符 279
8.1 简介 279
8.2 字符和字符串的基础 279
8.3 String构造函数 280
8.4 String方法:length、charAt、getChars、getBytes 282
8.5 比较String 284
8.6 String方法hashCode 289
8.7 在String中定位字符和子字符串 290
8.8 从String中提取子字符串 292
8.9 连接String 293
8.10 其他的String方法 294
8.11 使用String方法valueOf 296
8.12 String方法intern 297
8.13 StringBuffer类 299
8.14 StringBuffer构造函数 300
8.15 StringBuffer的length、capacity、setLength和ensureCapacity方法 301
8.16 StringBuffer的charAt、setCharAt和getChars方法 302
8.17 StringBuffer的append方法 304
8.18 StringBuffer的insert方法 305
8.19 Character类的例子 307
8.20 StringTokenizer类 313
8.21 洗牌和发牌的模拟 315
小结 318
术语 320
自测练习 322
自测练习答案 322
练习 322
特殊小节:高级字符串操作练习 324
挑战性的字符串操作项目 327
第9章 图形 328
9.1 简介 328
9.2 图形环境和图形对象 329
9.3 绘制字符串、字符和字节 330
9.4 颜色控制 331
9.5 字体控制 336
9.6 绘制线条 343
9.7 绘制矩形 344
9.8 绘制圆角矩形 345
9.9 绘制三维矩形 347
9.10 绘制椭圆 349
9.11 绘制圆弧 350
9.12 绘制多边形 352
9.13 屏幕操作 355
9.14 绘图模式 356
小结 358
术语 360
自测练习 361
自测练习答案 362
练习 362
第10章 图形用户界面组件(一) 365
10.1 简介 365
10.2 标签 366
10.3 揿压式按钮 369
10.4 文本字段 372
10.5 选择按钮 376
10.6 复选框按钮和单选按钮 378
10.7 列表 382
10.8 面板 386
10.9 鼠标事件 387
10.10 键盘事件 394
10.11 FlowLayout布局管理器 399
10.12 BorderLayout布局管理器 404
10.13 GridLayout布局管理器 407
小结 409
术语 411
自测练习 413
自测练习答案 414
练习 414
第11章 图形用户界面组件(二) 419
11.1 简介 419
11.2 文本区域 419
11.3 画板 422
11.4 滚动条 426
11.5 定制组件 430
11.6 框架 432
11.7 菜单 441
11.8 对话框 448
11.9 高级布局管理器 455
11.10 CardLayout布局管理器 455
11.11 GridBagLayout布局管理器 458
11.12 不使用布局管理器 465
11.13 程序员自定义的布局管理器 466
小结 470
术语 471
自测练习 473
自测练习答案 474
练习 474
第12章 异常处理 477
12.1 简介 477
12.2 何时使用异常处理 479
12.3 其他的错误处理技术 479
12.4 Java异常处理的基础 480
12.5 一个异常处理的简单实例:除数为零 480
12.6 try程序块 483
12.7 抛出异常 484
12.8 捕获异常 484
12.9 重抛出异常 486
12.10 throws子句 486
12.11 构造函数、终止函数和异常处理 490
12.12 异常和继承 491
12.13 finally程序块 491
12.14 使用printStackTrace和getMessage方法 495
小结 497
术语 498
自测练习 499
自测练习答案 499
练习 500
第13章 多线程 502
13.1 简介 502
13.2 Thread类:线程方法介绍 504
13.3 线程状态:一个线程的生命周期 505
13.4 线程优先级与线程调度 506
13.5 线程同步 509
13.6 未使用线程同步的生产者/消费者关系 510
13.7 使用线程同步的生产者/消费者关系 513
13.8 生产者/消费者的关系:循环缓冲区 516
13.9 精灵线程 521
13.10 Runnable接口 521
13.11 线程组 524
小结 526
术语 528
自测练习 529
自测练习答案 530
练习 530
第14章 多媒体:图像、动画和声音 534
14.1 简介 534
14.2 加载、显示和按比例调整图像 535
14.3 动画介绍:图像的循环 537
14.4 图形双缓存 539
14.5 利用MediaTracker来监视图像的加载 542
14.6 利用一个独立线程来运行动画 545
14.7 加载和播放音频剪辑 548
14.8 通过HTML的param标记来定制applet 550
14.9 图像映射 554
小结 557
术语 559
自测练习 559
自测练习答案 560
练习 560
第15章 文件和流 566
15.1 简介 566
15.2 数据组织 566
15.3 文件和流 568
15.4 创建顺序访问文件 571
15.5 从顺序访问文件中读取数据 576
15.6 更新顺序访问文件 584
15.7 随机访问文件 584
15.8 创建随机访问文件 585
15.9 向随机访问文件中随机地写入数据 588
15.10 从随机访问文件中顺序地读取数据 592
15.11 案例:交易处理程序 595
15.12 File类 605
15.13 对象的输入/输出 608
小结 609
术语 611
自测练习 613
自测练习答案 614
练习 615
第16章 网络 618
16.1 简介 618
16.2 利用URL 619
16.3 采用URL的流连接从服务器上读取文件 621
16.4 建立一个简单的服务器(采用流套接字) 623
16.5 建立一个简单的客户(采用流套接字) 624
16.6 通过流套接字进行的客户/服务器交互 625
16.7 采用数据报方式进行无连接的客户/服务器交互 629
16.8 采用多线程服务器实现的客户/服务器间的三连棋游戏 635
16.9 网络和安全性 644
小结 645
术语 646
自测练习 647
自测练习答案 648
练习 649
第17章 数据结构 651
17.1 简介 651
17.2 自引用的类 651
17.3 动态内存请求 652
17.4 链表 653
17.5 堆栈 661
17.6 队列 664
17.7 树 666
小结 671
术语 671
自测练习 672
自测练习答案 673
练习 674
特殊小节:建立自己的编译器 679
第18章 Java工具包和位处理 691
18.1 简介 691
18.2 Vector类和Enumeration接口 691
18.3 Stack类 696
18.4 Dictionary类 699
18.5 Hashtable类 699
18.6 Date类 704
18.7 Observable类和Observer接口 705
18.8 Properties类 708
18.9 Random类 711
18.10 位处理和位运算符 712
18.11 BitSet类 720
小结 723
术语 726
自测练习 728
自测练习答案 729
练习 729
附录A 运算符优先级表 732
附录B ASCII字符集 734
附录C 数值系统 735
附录D 面向对象的电梯模拟程序 745
参考文献 756