第1章 计算机和Java小程序(applet)简介 1
1.1 引言 1
1.2 什么是计算机? 4
1.3 计算机组织结构 5
1.4 操作系统的发展 5
1.5 个人、分布式和客户机/服务器计算结构 6
1.6 机器语言、汇编语言和高级语言 6
1.7 C++的历史 7
1.8 Java的历史 8
1.9 Java的类库 9
1.10 其他高级语言 9
1.11 结构化编程 10
1.12 一个典型Java环境的基础知识 10
1.13 浏览本书 12
1.14 关于Java和本书的一般注意事项 15
1.16 一个简单的程序:打印一行文本 16
1.15 Java编程介绍 16
1.17 另一个Java程序:整数相加 21
1.18 关于内存的概念 26
1.19 算术 26
1.20 条件判断:相等操作符和关系操作符 29
小结·术语表·自测练习·自测练习答案·练习 34
2.1 引言 46
2.2 算法 46
第2章 开发Java应用程序 46
2.3 伪码 47
2.4 控制结构 47
2.5 If选择结构 49
2.6 if/else选择结构 50
2.7 while循环结构 54
2.8 样板算法:实例1(计数控制循环) 55
2.9 自顶向下、逐步求精的样板算法:实例2(标记控制循环) 60
2.10 自顶向下、逐步求精的样板算法:实例3(嵌套的控制结构) 66
2.11 赋值操作符 69
2.12 增1和减1操作符 70
2.13 基本数据类型 72
2.14 常见的转义序列 73
小结·术语表·自测练习·自测练习答案·练习 74
第3章 控制结构 85
3.1 引言 85
3.2 计数器控制循环的本质 85
3.3 for循环结构 87
3.4 使用for结构的例子 90
3.5 switch多重选择结构 93
3.6 do/while循环结构 96
3.7 break和continue语句 97
3.8 有标号的break和continue语句 99
3.9 逻辑操作符 102
3.10 结构化编程小结 106
小结·术语表·自测练习·自测练习答案·练习 110
4.2 Java中的程序模块 117
第4章 方法 117
4.1 引言 117
4.3 Math类方法 118
4.4 方法 119
4.5 方法定义 120
4.6 Java API包 125
4.7 生成随机数 126
4.8 例子:一个机会游戏 129
4.9 自动变量 132
4.10 作用域规则 133
4.11 递归 135
4.12 使用递归的例子:菲波那契数列 137
4.13 递归与循环 140
4.14 方法重载 142
4.15 Applet类的方法 143
小结·术语表·自测练习·自测练习答案·练习 145
5.1 引言 160
5.2 数组 160
第5章 数组 160
5.3 声明数组和分配数组 161
5.4 数组使用实例 162
5.5 引用和引用参数 171
5.6 向方法传递数组 172
5.7 数组排序 174
5.8 数组查找:线性查找和二分查找 175
5.9 多维数组 180
小结·术语表·自测练习·自测练习答案·练习·递归练习·特别章节:建立你自己的计算机 185
第6章 基于对象的编程 204
6.1 引言 204
6.2 用一个类实现一个抽象数据类型time 205
6.3 类作用域 208
6.4 控制对成员的访问 209
6.5 实用方法 210
6.6 初始化类对象:构造函数 213
6.7 使用重载的构造函数 213
6.8 使用Set和Get方法 216
6.9 软件可重用性 220
6.10 常数实例变量 220
6.11 复合:作为其他类实例变量的对象 222
6.12 友好成员 224
6.13 使用this引用 225
6.14 终止函数 229
6.15 静态类成员 229
6.16 数据抽象和信息隐藏 232
小结·术语表·自测练习·自测练习答案·练习 234
第7章 面向对象的编程 240
7.1 引言 240
7.2 超类和子类 241
7.3 保护成员 243
7.4 超类对象和子类对象间的关系 243
7.5 在子类中使用构造函数和终止函数 247
7.6 从子类对象到超类对象的隐式转换 250
7.7 使用继承的软件工程 251
7.9 实例研究:点、圆、柱 252
7.8 复合与继承 252
7.10 多态简介 256
7.11 类型域和Switch语句 256
7.12 动态方法结合 257
7.13 final方法和类 257
7.14 抽象超类和实体类 258
7.15 多态的例子 258
7.16 实例研究:一个使用多态的工资支付系统 260
7.17 新类和动态结合 265
7.18 实例研究:继承接口与实现 266
7.19 基本类型的类型包装类 270
小结·术语表·自测练习·自测练习答案·练习 270
第8章 串和字符 276
8.1 引言 276
8.2 字符和串的基础 276
8.3 String构造函数 276
8.4 String方法:length,charAt,getChars,getBytes 279
8.5 比较String 281
8.6 String方法hashCode 285
8.7 在String中定位字符和子串 286
8.8 从String中抽取子串 288
8.9 联接String 289
8.10 其他String方法 290
8.11 使用String方法valueOf 292
8.12 String方法intern 293
8.13 StringBuffer类 295
8.14 StringBuffer构造函数 296
8.15 StringBuffer的length,capacity,setLength和ensureCapacity方法 297
8.16 StringBuffer的charAt,setCharAt和getChars方法 298
8.17 StringBuffer的append方法 299
8.18 StringBuffer的insert方法 301
8.19 Character类的例子 302
8.20 类StringTokenizer 308
8.21 一个扑克洗牌和发牌的仿真 310
小结·术语表·自测练习·自测练习答案·练习·特别章节:高级串操作练习·特别章节:挑战性的串操作项目 313
9.1 引言 323
第9章 图形 323
9.2 图形环境和图形对象 324
9.3 绘制串、字符和字节 325
9.4 颜色控制 327
9.5 字体控制 330
9.6 绘制线条 338
9.7 绘制矩形 339
9.8 绘制圆角矩形 340
9.9 绘制三维矩形 342
9.10 绘制椭圆 343
9.11 绘制弧 345
9.12 绘制多边形 347
9.13 屏幕操作 350
9.14 绘图模式 351
小结·术语表·自测练习·自测练习答案·练习 352
第10章 基本的图形用户界面构件 360
10.1 引言 360
10.2 标签 361
10.3 揿压式按钮 364
10.4 文字域 367
10.5 选择按钮 370
10.6 复选框按钮和单选按钮 373
10.7 列表 377
10.8 面板 381
10.9 鼠标事件 382
10.10 键盘事件 388
10.11 布局管理器FlowLayout 393
10.12 布局管理器BorderLayout 398
10.13 布局管理器GridLayout 401
小结·术语表·自测练习·自测练习答案·练习 403
第11章 高级的图形用户界面构件 414
11.1 引言 414
11.2 文本区 414
11.3 画板 417
11.4 滚动条 421
11.5 定制构件 425
11.6 框架 427
11.7 菜单 435
11.8 对话框 442
11.9 高级的布局管理器 448
11.10 CardLayout布局管理器 449
11.11 GridBagLayout布局管理器 451
11.12 不使用布局管理器 458
11.13 程序员自定义的布局管理器 460
小结·术语表·自测练习·自测练习答案·练习 463
第12章 异常处理 471
12.1 引言 471
12.2 何时使用异常处理 473
12.3 其他的错误处理技术 473
12.4 Java异常处理的基础 474
12.5 一个异常处理的简单实例:除数为零 475
12.6 Try程序块 477
12.7 引发异常 478
12.8 捕捉异常 479
12.9 重引发异常 480
12.10 Throws子句 481
12.11 构造函数、终止函数和异常处理 485
12.12 异常和继承 485
12.13 finally程序块 486
12.14 使用printStackTrace和getMessage 489
小结·术语表·自测练习·自测练习答案·练习 491
13.1 引言 497
第13章 多线程 497
13.2 Thread类:线程方法总览 499
13.3 线程状态:一个线程的生命周期 500
13.4 线程优先级与线程调度 501
13.5 线程同步 505
13.6 未使用线程同步的生产者/消费者关系 506
13.7 使用线程同步的生产者/消费者关系 508
13.8 生产者/消费者关系:循环缓冲区 511
13.10 Runnable接口 515
13.9 精灵线程 515
13.11 线程组 519
小结·术语表·自测练习·自测练习答案·练习 520
第14章 多媒体:图像、动画和声音 529
14.1 引言 529
14.2 加载、显示和按比例调整图像 530
14.3 动画介绍:图像的循环 532
14.4 图形双缓存 534
14.5 用MediaTracker来监视图像的加载 537
14.6 用一个单独线程来运行动画 540
14.7 加载和播放声响片段 543
14.8 通过HTML的param标记来定制applet 544
14.9 图像映射 548
小结·术语表·自测练习·自测练习答案·练习 549
第15章 文件和流 559
15.1 引言 559
15.2 数据组织 559
15.3 文件和流 561
15.4 创建一个顺序访问文件 564
15.5 从一个顺序访问文件中读数据 569
15.6 更新顺序访问文件 576
15.7 随机访问文件 576
15.8 创建一个随机访问文件 577
15.9 向一个随机访问文件随机地写数据 580
15.10 从一个随机访问文件顺序地读数据 583
15.11 例子:一个交易处理程序 586
15.12 File类 594
15.13 对象的输入/输出 598
小结·术语表·自测练习·自测练习的答案·练习 598
第16章 网络 609
16.1 引言 609
16.2 利用URL 610
16.3 采用一个URL的流连接来从一个服务器上读取文件 612
16.4 建立一个简单的服务器(采用流套接字) 614
16.5 建立一个简单的客户(采用流套接字) 615
16.6 通过流套接字进行的客户/服务器交互 616
16.7 采用数据报方式进行无连接的客户/服务器交互 620
16.8 采用一个多线程服务器实现的客户服务器间的井字游戏 625
16.9 网络的安全性 634
16.10 即将问世的网络和安全的API 634
小结·术语表·自测练习·自测练习答案·练习 634
第17章 数据结构 641
17.1 引言 641
17.2 自我引用的类 641
17.3 动态内存申请 642
17.4 链表 643
17.5 堆栈 651
17.6 队列 653
17.7 树 655
小结·术语表·自测练习·自测练习答案·练习·特殊章节:建立你自己的编译器 660
第18章 Java工具包和位处理 679
18.1 引言 679
18.2 Vector类和Enumeration接口 679
18.3 Stack类 684
18.4 Dictionary类 686
18.5 Hashtable类 687
18.6 Date类 691
18.7 Observable类和Observer接口 692
18.8 Properties类 695
18.9 Random类 698
18.10 位处理和位操作符 699
18.11 Bitset类 708
小结·术语表·自测练习·自测练习答案·练习 711
附录A Java演示 721
附录B Java资源 726
附录C 操作符优先级表 730
附录D ASCⅡ字符集 732
附录E 计数系统 733
附录F 面向对象的电梯模拟器 744
附录G 从头学Visual J++ 754
参考文献 797