1 概述 1
1.1 什么是Java语言 1
1.1.1 Java语言的特点 1
1.1.2 Java的三层架构 3
1.1.3 Java语言的目标 3
1.1.4 Java虚拟机 3
1.1.5 垃圾收集 4
1.1.6 代码安全 5
1.2 一个基本的Java应用程序 6
1.3 程序的编译和运行 8
1.3.1 编译 8
1.3.2 运行 9
1.4 常见错误 9
1.4.1 编译时错误 9
1.4.2 运行时错误 10
1.5 使用Java核心API文档 11
习题 13
2 标识符、关键字和数据类型 14
2.1 Java的基本语法单位 14
2.1.1 空白、注释及语句 14
2.1.2 关键字 15
2.1.3 标识符 16
2.2 Java编码体例 16
2.3 Java的基本数据类型 17
2.3.1 基本数据类型 17
2.3.2 类型转换 20
2.3.3 变量、说明和赋值 20
2.4 复合数据类型 21
2.4.1 概述 21
2.4.2 复合数据类型 21
2.5 类和对象的初步介绍 22
2.5.1 Java的面向对象技术 22
2.5.2 Java的类定义 23
2.5.3 与OOP有关的关键字 24
2.5.4 类定义示例 26
2.5.5 创建一个对象 29
2.5.6 引用变量的赋值 30
2.5.7 默认初始化和null引用值 31
2.5.8 术语概述 31
习题 32
3 表达式和流控制 33
3.1 表达式 33
3.1.1 操作数 33
3.1.2 运算符 36
3.1.3 表达式的提升和转换 38
3.2 流控制 39
3.2.1 表达式语句 40
3.2.2 块 40
3.2.3 分支语句 40
3.2.4 循环语句 44
3.2.5 特殊的流控制语句 46
习题 48
4 数组和字符串 50
4.1 数组 50
4.1.1 数组说明 50
4.1.2 创建数组 50
4.1.3 数组边界 52
4.1.4 数组初始化 52
4.1.5 多维数组 53
4.1.6 数组拷贝 55
4.2 字符串类型 56
4.2.1 字符串概述 56
4.2.2 字符串说明及初始化 56
4.2.3 字符串处理 57
4.2.4 几个特殊处理 58
习题 60
5 对象和类的进一步介绍 62
5.1 抽象数据类型 62
5.1.1 抽象数据类型概述 62
5.1.2 定义方法 63
5.1.3 按值传送 66
5.1.4 this引用 68
5.1.5 数据隐藏 68
5.1.6 封装 70
5.2 重载方法名 70
5.3 对象的构造和初始化 71
5.3.1 显式成员初始化 71
5.3.2 构造方法 71
5.3.3 默认构造方法 72
5.3.4 finalize方法 72
5.4 子类 73
5.4.1 “is a”关系 73
5.4.2 extends关键字 73
5.4.3 单重继承 74
5.4.4 多态性 74
5.4.5 方法的参量和异类集合 75
5.4.6 instanceof运算符 75
5.4.7 转换对象 76
5.5 覆盖方法 77
5.6 Java包 80
5.6.1 Java包的概念 80
5.6.2 import语句 81
5.6.3 目录层次关系及CLASSPATH环境变量 82
习题 82
6 Java语言中的异常 84
6.1 异常 84
6.2 异常示例 84
6.3 异常处理 85
6.3.1 try,catch和finally语句 85
6.3.2 再讨论前面的示例 86
6.3.3 公共异常 87
6.4 异常分类 88
6.5 抛出 88
6.6 创建自己的异常 89
习题 90
7 Java的图形用户界面设计 92
7.1 创建图形用户界面 93
7.1.1 容器和组件 93
7.1.2 组件的定位 93
7.1.3 组件的大小 93
7.2 框架 93
7.2.1 创建一个简单的框架 93
7.2.2 运行程序 94
7.3 面板 94
7.4 布局 96
7.5 一个简单的例子 96
7.6 布局管理器 98
7.6.1 F1owLayout布局管理器 98
7.6.2 BorderLayout布局管理器 99
7.6.3 GridLayout布局管理器 101
7.6.4 CardLayout布局管理器 103
7.6.5 其他布局管理器 105
7.7 容器 105
7.7.1 框架 105
7.7.2 面板 105
7.7.3 创建面板和构造复杂布局 106
习题 107
8 AWT事件模型 108
8.1 JDK1.0和JDK1.1事件模型 108
8.1.1 JDK1.0的层次模型 108
8.1.2 JDK1.1的委托模型 112
8.2 Java GUI工作情况 113
8.2.1 事件的种类 113
8.2.2 一个较复杂的例子 114
8.2.3 多监听程序 117
8.3 事件适配器 117
习题 118
9 AWT组件库 120
9.1 按钮 120
9.2 复选框 122
9.3 复选框组——单选按钮 124
9.4 选择框 126
9.5 画布 128
9.6 标签 130
9.7 文本域 131
9.8 文本区 132
9.9 文本组件 134
9.10 列表 134
9.11 框架 136
9.12 面板 137
9.13 对话框 137
9.14 文件对话框 139
9.15 菜单组件 141
9.15.1 菜单栏 142
9.15.2 菜单 142
9.15.3 菜单项 143
9.15.4 带复选项的菜单项 144
9.15.5 弹出式菜单 147
9.16 控制组件外观 149
9.16.1 颜色 149
9.16.2 字体 149
9.17 打印 151
习题 151
10 Java Applet 154
10.1 编写Applet 155
10.2 Applet的方法和Applet的生命周期 156
10.3 Applet的显示与刷新 157
10.4 appletviewer 158
10.5 HTML与<applet>标记 159
10.6 Applet参数的读取 160
10.7 Applet与URL 161
10.8 在Applet中显示图像 162
10.9 在Applet中播放声音 163
10.10 Applet的事件处理 165
10.11 Applet与普通应用程序的结合 166
习题 168
11 Java语言的深入理解 169
11.1 方法覆盖 169
11.1.1 方法覆盖的概念 169
11.1.2 应用覆盖的规则 170
11.2 构造方法覆盖 171
11.3 父类构造方法调用 172
11.4 类成员 173
11.4.1 类变量 173
11.4.2 类方法 175
11.5 关键字final 176
11.5.1 终极类 176
11.5.2 终极方法 177
11.5.3 终极变量 177
11.6 抽象类 179
11.7 接口 180
11.7.1 接口的定义 181
11.7.2 接口的实现 181
11.8 过时信息 182
11.9 内部类 185
11.9.1 内部类的概念 185
11.9.2 匿名类 186
11.9.3 内部类的工作方式 187
11.10 Vector类 188
11.10.1 概述 188
11.10.2 Vector类的构造方法 188
11.10.3 Vector类中的变量 189
11.10.4 Vector类中的方法 189
11.10.5 Vector类的使用举例 189
习题 191
12 Java数据流 192
12.1 数据流的基本概念 192
12.1.1 输入数据流 192
12.1.2 输出数据流 193
12.2 基本数据流类 194
12.2.1 文件数据流 194
12.2.2 缓冲区数据流 194
12.2.3 数据数据流 195
12.2.4 管道数据流 196
12.2.5 对象流 197
12.3 其他相关类 198
12.3.1 URL输入数据流 198
12.3.2 读者和写者 199
12.3.3 缓冲区读者和缓冲区写者 199
12.4 文件的处理 200
12.4.1 File类 200
12.4.2 随机访问文件 202
12.5 可持续性 203
12.5.1 持续化的概念 203
12.5.2 对象结构表 203
习题 204
13 线程 205
13.1 线程和多线程 205
13.1.1 线程的概念 205
13.1.2 线程的结构 206
13.2 创建线程 206
13.2.1 创建线程的方法一——继承Thread类 206
13.2.2 创建线程的方法二——实现Runnable接口 206
13.2.3 关于两种创建线程方法的讨论 208
13.3 线程的启动 208
13.4 线程的调度 208
13.5 线程的基本控制 210
13.5.1 结束线程 210
13.5.2 检查线程 211
13.5.3 挂起线程 211
13.6 同步问题 212
13.6.1 问题的提出 212
13.6.2 对象的锁定标志 214
13.6.3 同步方法 215
13.7 死锁 216
13.8 线程交互——wait()和notify() 218
13.8.1 问题的提出 218
13.8.2 解决方法 218
13.9 综合应用实例 220
习题 224
14 Java的网络功能 226
14.1 概述 226
14.2 URL——统一资源定位器 227
14.2.1 URL的概念 227
14.2.2 URL的构造方法 227
14.2.3 与URL相关的异常 228
14.2.4 获取URL对象属性 228
14.2.5 读入URL数据 229
14.3 socket接口 231
14.3.1 socket的基本概念 231
14.3.2 socket通信的基本步骤 232
14.3.3 socket通信的程序设计 232
14.4 Java编程综合实例 234
习题 243
附录A GridBagLayout布局管理器 244
A.1 概述 244
A.2 GridBagLayout的功能 244
A.3 GridBagConstraints的使用 245
A.4 GridBagConstraints的实例变量 245
A.5 GridBagConstraints应用实例 246
附录B 本机方法的使用 251
B.1 定义本机方法 251
B.2 调用本机方法 252
B.3 javah工具 252
B.4 本机方法的C函数代码 252
B.5 集成 254
B.6 向本机方法传递信息 254
B.7 访问对象数据成员 255
B.8 访问字符串 256
B.9 本机方法应用小结 258
参考文献 259