第1章 计算机、程序和Java概述 2
1.1 引言 2
1.2 什么是计算机 2
第1篇 程序设计基础 2
1.2.1 中央处理器 3
1.2.2 内存 3
1.2.3 存储设备 3
1.2.4 输入输出设备 4
1.2.5 通信设备 4
1.3 程序 5
1.4 操作系统 6
1.4.1 控制和监视系统的活动 6
1.4.2 分配系统资源 6
1.5.1 二进制数与十进制数的转换 7
1.4.3 安排操作的顺序 7
1.5 数系(可选) 7
1.5.2 十六进制数与十进制数的转换 8
1.5.3 二进制数与十六进制数的转换 9
1.6 Java、万维网及其他 9
1.7 Java的特点(可选) 11
1.7.1 Java是简单的 12
1.7.2 Java是面向对象的 12
1.7.3 Java是分布式的 12
1.7.4 Java是解释型的 12
1.7.5 Java是健壮的 12
1.7.10 Java是多线程的 13
1.7.9 Java的效率 13
1.7.7 Java是结构中立的 13
1.7.6 Java是安全的 13
1.7.8 Java是可移植的 13
1.7.11 Java是动态的 14
1.8 Java语言规范、API、JDK和IDE 14
1.9 一个简单的Java程序 14
1.10 创建、编译和运行Java程序 15
1.11 Java程序剖析 17
1.11.1 注释 17
1.11.2 保留字 17
1.11.3 修饰符 17
1.11.7 方法 18
1.12 用消息对话框显示文本信息 18
1.11.8 main方法 18
1.11.6 类 18
1.11.5 块 18
1.11.4 语句 18
主要术语 20
主要的类和方法 20
本章小结 20
复习题 21
编程练习 22
第2章 基本数据类型和基本操作 23
2.1 引言 23
2.2 编写简单的程序 23
2.3 标识符 25
2.5 赋值语句和赋值表达式 26
2.4 变量 26
2.6 常量 27
2.7 数值数据类型及其运算 28
2.7.1 算术运算符 28
2.7.2 数值直接量 29
2.7.3 算术表达式 30
2.7.4 简捷赋值运算符 30
2.8 数值类型转换 32
2.9 字符数据类型及其运算 32
2.9.1 统一码和ASCII码 33
2.9.2 特殊字符的转义序列表示 33
2.9.3 字符型数据与数值型数据之间的转换 34
2.10 布尔数据类型及其运算 35
2.11 运算符的优先级和结合方向 37
2.12 运算对象的计算顺序 38
2.13 字符串类型String 39
2.14 从输入对话框获取输入 40
2.15 实例学习 42
2.16 从控制台获取输入(可选) 46
2.17 格式化输出(JDK1.5功能) 48
2.18 编程风格和文档 49
2.18.1 适当的注释和注释类型 49
2.18.2 命名习惯 49
2.18.3 适当的缩进和空白 49
2.18.4 块的对齐方式 50
2.19 程序错误 50
2.19.1 语法错误 50
2.20 调试 51
2.19.2 运行错误 51
2.19.3 逻辑错误 51
主要术语 52
主要的类和方法 52
本章小结 53
复习题 54
编程练习 57
第3章 控制语句 60
3.1 引言 60
3.2 条件语句 60
3.2.1 简单if语句 60
3.2.2 if...else语句 62
3.2.3 if语句的嵌套 63
3.2.4 switch语句 67
3.3 循环语句 68
3.2.5 条件表达式 68
3.3.1 while循环 69
3.3.2 do_while循环 71
3.3.3 for循环 71
3.3.4 循环嵌套 74
3.4 采用哪种循环 75
3.5 使用关键字break和continue 76
3.6 实例学习 78
主要术语 85
本章小结 85
复习题 86
编程练习 90
4.2 创建方法 95
第4章 方法 95
4.1 引言 95
4.3 调用方法 96
4.4 参数传递 99
4.5 重载方法 100
4.6 局部变量的作用域 104
4.7 方法抽象 104
4.8 数学类Math 105
4.8.1 三角函数方法 105
4.8.2 指数函数方法 105
4.8.3 取整方法 106
4.8.4 min、max和abs方法 106
4.9 实例学习:生成随机字符 107
4.8.5 random方法 107
4.10 逐步求精 109
4.10.1 自顶向下的设计 109
4.10.2 自顶向下和自底向上的实现 110
4.10.3 实现细节 112
4.11 递归(可选) 115
4.11.1 计算阶乘 115
4.11.2 计算斐波那契数 117
4.11.3 汉诺塔问题 119
4.11.4 递归与迭代 121
4.12 包(可选) 122
4.12.1 包的命名习惯 122
4.12.2 包的目录 122
4.12.3 在包中添加类 123
4.12.4 使用包中的类 124
主要的类和方法 125
主要术语 125
本章小结 126
复习题 126
编程练习 130
第5章 数组 135
5.1 引言 135
5.2 数组基本知识 135
5.2.1 声明数组变量 135
5.2.2 创建数组 136
5.2.3 数组的大小和默认值 136
5.2.5 增强的for循环(JDK 1.5功能) 137
5.2.6 数组初始化 137
5.2.4 数组下标变量 137
5.3 数组的复制 141
5.4 给方法传递数组参数 142
5.5 从方法中返回数组 144
5.6 数组的排序 147
5.7 数组的查找 149
5.7.1 线性查找法 149
5.7.2 二分查找法 149
5.7.3 二分法查找的递归实现(可选) 151
5.8 多维数组 151
5.8.1 声明多维数组变量和创建多维数组 151
5.8.2 求多维数组的长度 152
5.8.3 锯齿数组 153
本章小结 157
主要术语 157
主要的类和方法 157
复习题 158
编程练习 159
第2篇 面向对象程序设计 166
第6章 对象和类 166
6.1 引言 166
6.2 对象和类 166
6.3 使用构造方法创建对象 167
6.4 通过引用变量来访问对象 168
6.4.1 引用变量和引用类型 168
6.4.2 访问对象的数据和方法 169
6.4.3 空值null 171
6.4.4 基本数据类型变量和引用类型变量的区别 172
6.5 使用Java类库中的类 173
6.6 可见性修饰符、访问器和修改器 174
6.7 数据域的封装 175
6.8 永久对象和类 177
6.9 给方法传递对象参数 178
6.10 静态变量、常量和静态方法 179
6.11 变量的作用域 183
6.12 关键字this 183
6.13 对象数组 184
6.14 类的抽象和封装 186
6.15 实例学习:贷款类Loan 187
6.16 实例学习:整数栈类StackOfIntegers(可选) 190
6.17 内部类 192
主要的类和方法 193
主要术语 193
复习题 194
本章小结 194
编程练习 199
第7章 字符串 204
7.1 引言 204
7.2 字符串类String 204
7.2.1 构造一个字符串 204
7.2.2 永久字符串与规范字符串 205
7.2.3 字符串长度以及提取单个字符 206
7.2.4 字符串的连接 207
7.2.5 提取子串 207
7.2.6 字符串的比较 208
7.2.8 获取字符串中的一个字符或子串 209
7.2.7 字符串的转换 209
7.2.9 字符串与数组之间的转换 210
7.2.10 将字符值和数值转换成字符串 210
7.3 字符类Character 212
7.4 字符串缓冲区类StringBuffer 214
7.4.1 构造字符串缓冲区 214
7.4.2 修改缓冲区中的字符串 215
7.4.3 toString、capacity、length、setLength和charAt方法 215
7.5 字符串令牌类StringTokenizer 217
7.6 字符串扫描类Scanner(JDK1.5功能) 219
7.7 使用Scanner类实现MyInput 219
7.8.1 向main方法传递字符串 221
7.8.2 处理命令行参数 221
7.8 命令行参数 221
主要的类和方法 223
本章小结 223
复习题 224
编程练习 226
第8章 继承和多态 229
8.1 引言 229
8.2 父类和子类 229
8.3 使用关键字super 230
8.3.1 调用父类的构造方法 230
8.3.2 构造方法链 231
8.4 方法覆盖 232
8.3.3 调用父类的方法 232
8.5 对象类Object 233
8.5.1 equals方法 233
8.5.2 hashCode方法 234
8.5.3 toString方法 234
8.6 多态性、动态绑定和一般程序设计 234
8.7 对象类型转换和instanceof运算符 236
8.8 隐藏数据域和静态方法(可选) 238
8.9 protected数据和方法 239
8.10 final类、方法和变量 241
8.11 finalize、clone和getClass方法(可选) 241
8.11.1 finalize方法 241
8.11.2 clone方法 242
8.11.3 getClass方法 242
8.12 初始化模块(可选) 243
主要术语 245
主要的类和方法 245
本章小结 245
复习题 246
编程练习 251
第9章 抽象类和接口 253
9.1 引言 253
9.2 抽象类 253
9.3 日历类Calendar和公历类Grego-rianCalendar 259
9.4 接口 260
9.4.1 实现接口 261
9.4.2 接口与抽象类 262
9.4.3 创建自定义接口 263
9.4.4 可克隆接口Cloneable(可选) 264
9.5 将基本数据类型值处理为对象 266
9.5.1 数值包装类的构造方法 267
9.5.2 数值包装类的常量 268
9.5.3 转换方法 268
9.5.4 静态方法valueOf 268
9.5.5 将字符串转换为数值的方法 269
9.6 基本类型和包装类之间的自动转换(JDK1.5功能) 271
主要术语 271
主要的类和方法 272
本章小结 272
复习题 273
编程练习 275
10.1 引言 277
10.2 软件开发过程 277
第10章 面向对象建模 277
10.3 分析类之间的关系 278
10.3.1 关联 278
10.3.2 聚集和包容 279
10.3.3 继承 280
10.4 实例学习:一个设计类的例子 281
10.5 实例学习:有理数类Rational 285
10.6 类的设计原则 289
10.6.1 设计一个类 289
10.6.2 使用可见性修饰符public、protected和private 290
10.6.3 使用静态修饰符static 290
10.6.4 使用继承或包容 290
10.7.1 顺序图 291
10.7 用顺序图和状态图模拟动态行为(可选) 291
10.6.5 使用接口或抽象类 291
10.7.2 状态图 292
10.8 使用Java API在构架基础上编程 293
主要术语 293
本章小结 293
复习题 294
编程练习 295
第3篇 图形用户界面程序设计 298
第11章 图形用户界面程序设计入门 298
11.1 引言 298
11.2 GUI组件 298
11.3 JavaGUIAPI 299
11.3.1 Swing GUI组件类 300
11.4.1 创建框架 301
11.4 框架JFrame 301
11.3.2 容器类 301
11.3.3 GUI辅助类 301
11.4.2 在框架中添加组件 302
11.4.3 框架居中(可选) 303
11.5 布局管理器 304
11.5.1 布局管理器FlowLayout 304
11.5.2 布局管理器GridLayout 306
11.5.3 布局管理器BorderLayout 308
11.5.4 布局管理器的属性(可选) 309
11.5.5 validate和doLayout方法(可选) 309
11.6 颜色类Color 310
11.7 字体类Font 310
11.8 使用面板作子容器 311
11.9 在面板上绘制图形 312
11.9.1 绘制直线 314
11.9.2 绘制矩形 314
11.9.3 绘制椭圆 316
11.9.4 绘制弧形 317
11.9.5 多边形类Polygon与绘制多边形和折线段 318
11.10 利用FontMetrics类居中显示 321
11.11 实例学习:信息面板类Message Panel 322
11.12 实例学习:静止时钟类StillClock(可选) 326
主要的类和方法 330
本章小结 330
复习题 331
编程练习 333
12.2 事件和事件源 339
第12章 事件驱动程序 339
12.1 引言 339
12.3 事件的监听、注册和处理 340
12.4 鼠标事件 348
12.5 键盘事件 352
12.6 定时器类Timer(可选) 355
主要术语 357
主要的类和方法 357
本章小结 358
复习题 358
编程练习 359
13.1 引言 361
13.2 Swing GUI组件的公共特性 361
第13章 创建图形用户界面 361
13.3 按钮 363
13.3.1 图标 363
13.3.2 对齐方式 366
13.3.3 文本位置 366
13.4 复选框 370
13.5 单选按钮 373
13.6 标签 375
13.7 文本域 375
13.8 文本区 378
13.9 组合框 381
13.10 列表框 384
13.11 滚动条 387
13.12 滑动块 390
13.13 创建多个窗口 392
主要的类和方法 395
本章小结 397
复习题 397
编程练习 398
第14章 applet、图像和音频 403
14.1 引言 403
14.2 Applet类 403
14.2.1 init方法 404
14.2.2 start方法 405
14.2.3 stop方法 405
14.2.4 destroy方法 405
14.3 JApplet类 405
14.4 HTML文件和<applet>标记 406
14.4.2 在Web浏览器中浏览applet 407
14.4.1 使用工具浏览applet 407
14.5 向applet传递字符串 410
14.6 applet作为application运行 412
14.7 实例学习:三子棋游戏(可选) 414
14.8 实例学习:跳动的小球(可选) 419
14.9 统一资源定位类URL(可选) 421
14.10 显示图像(可选) 422
14.11 实例学习:图像浏览器组件Image-Viewer 423
14.12 实例学习:图形动画(可选) 427
14.13 播放音频 429
14.14 Java工程的打包和发行(可选) 431
14.14.1 清单文件Manifest 432
14.14.2 运行存档项目 432
14.15 可拆换的外貌(可选) 433
主要的类和方法 434
本章小结 435
复习题 435
编程练习 437
第4篇 异常处理和输入输出 444
第15章 异常和断言 444
15.1 引言 444
15.2 异常和异常类型 444
15.2.1 异常类 445
15.3.1 声明异常 447
15.3.2 抛出异常 447
15.3 理解异常处理 447
15.2.2 必检异常和免检异常 447
15.3.3 捕获异常 448
15.4 重新抛出异常 453
15.5 finally子句 453
15.6 何时使用异常 454
15.7 创建自己的异常类(可选) 454
15.8 断言(可选) 455
15.8.1 声明断言 455
15.8.2 运行带断言的程序 456
15.8.3 使用异常处理或断言 456
主要术语 457
主要的类和方法 457
本章小结 457
复习题 458
编程练习 461
第16章 简单输入输出 463
16.1 引言 463
16.2 文件类File 463
16.3 在Java中如何处理输入输出 466
16.4 文本输入输出 467
16.4.1 FileReader类和FileWriter类 468
16.4.2 InputStreamReader类和OutputStreamWriter类(可选) 470
16.4.3 BufferedReader类和BufferedWriter类 471
16.4.4 PrintWriter类和PrintStream类 472
16.5 实例学习:文本浏览器 473
16.6 二进制输入输出 475
16.6.1 FileInputStream类和FileOutputStream类 477
16.6.3 DataInputStream类和DataOutputStream类 478
16.6.2 FilterInputStream类和FilterOutputStream类 478
16.6.4 BufferedInputStream类和BufferedOutputStream类 480
16.7 实例学习:文件复制 481
16.8 进一步讨论文本文件和二进制文件 482
16.9 对象输入输出(可选) 483
16.9.1 可序列化接口Serializable 485
16.9.2 序列化数组 486
16.10 随机读写文件(可选) 487
16.11 实例学习:地址簿(可选) 489
主要术语 494
主要的类和方法 494
本章小结 495
复习题 495
编程练习 498