第1篇 概念语法 1
第1章 最简单的Java程序 1
1.1 什么是Java 1
1.2 最简单的Java程序 1
1.2.1 环境设置 1
1.2.2 编写源程序 2
1.2.3 编译 3
1.2.4 运行 3
1.2.5 程序分析 3
1.3 Java的一个特性:一次编写,到处运行 4
第2章 通过程序完成各种运算 5
2.1 最简单的程序 5
2.2 更多的变量类型、操作符 6
2.2.1 整型变量 6
2.2.2 字符型变量 8
2.2.3 浮点型变量 8
2.2.4 布尔型变量 9
2.2.5 操作符 9
2.3 分支和循环 12
2.3.1 if语句 12
2.3.2 switch语句 13
2.3.3 for语句 14
2.3.4 while语句 15
2.3.5 do语句 16
2.3.6 break和continue 17
第3章 面向对象初步 19
3.1 类 19
3.1.1 类的定义 19
3.1.2 类的使用 19
3.1.3 类的安排 20
3.1.4 变量类型——基本类型 21
3.1.5 变量类型——参考类型 22
3.1.6 在类MyDate中直接创建MyDate对象 24
3.1.7 垃圾回收机制 24
3.2 定义如何操作数据——方法 25
3.2.1 为什么要定义方法 25
3.2.2 如何定义方法 26
3.2.3 方法的使用 26
3.2.4 多个方法同名——方法的重载 27
3.3 保护类中的数据——封装 30
3.3.1 何时要使用封装 30
3.3.2 如何使用封装 31
3.4 创建对象时的初始化——构造器 32
3.4.1 构造器的定义 32
3.4.2 构造器的使用和初始化 32
3.4.3 使用多个构造器——构造器的重载 33
3.4.4 多个构造器的相互调用——this() 34
3.4.5 默认的构造器 35
3.5 变量的位置和初始化 36
3.6 方法参数的传值 37
3.7 this参考 39
3.7.1 this参考解决局部变量和成员变量重名 39
3.7.2 通过this参考传入对象 41
第4章 数组对象 43
4.1 数组的基本用法 43
4.1.1 声明数组变量 43
4.1.2 创建数组对象 43
4.1.3 数组的赋值和访问 44
4.1.4 简写方式 45
4.2 二维数组 46
4.2.1 二维数组的变量声明 46
4.2.2 二维数组的创建 46
4.2.3 二维数组的赋值和访问 47
4.2.4 二维数组的简写方式 48
4.3 数组的显示 48
第5章 继承和多态 50
5.1 继承 50
5.1.1 何时使用继承 50
5.1.2 如何使用继承 51
5.2 方法的覆盖 51
5.2.1 覆盖的用法 51
5.2.2 执行被覆盖的方法 53
5.3 变量多态 54
5.3.1 什么是变量多态 54
5.3.2 用于异类搜集 55
5.3.3 用于方法参数 55
5.3.4 类型判断 56
5.3.5 类型转换 56
5.3.6 类型转换的规则 57
5.3.7 变量多态和方法的执行 58
第6章 类的组织 61
6.1 通过包来组织类 61
6.1.1 将类定义在包中 61
6.1.2 包的编译 62
6.1.3 包的发放 62
6.1.4 使用包中的类 63
6.1.5 包和classpath的设置 64
6.1.6 使用sourcepath和classpath参数 64
6.2 使用javadoc工具制作文档 65
6.3 API文档 67
6.4 编程习惯 69
第7章 面向对象高级特性 70
7.1 访问控制及覆盖的规则 70
7.1.1 访问控制 70
7.1.2 覆盖的规则 72
7.2 对象的初始化过程 73
7.2.1 使用super()语句调用父类构造器 73
7.2.2 完整的初始化过程 75
7.3 static修饰符 79
7.3.1 静态变量 79
7.3.2 静态方法 80
7.3.3 静态初始化 82
7.3.4 一个例子 82
7.4 final修饰符 84
7.4.1 final类 84
7.4.2 final方法 84
7.4.3 final变量 85
7.5 abstract修饰符 86
7.5.1 基本用法 86
7.5.2 使用场合举例 86
7.6 定义interface 87
7.6.1 基本用法 88
7.6.2 使用举例 88
7.7 内类 89
7.7.1 主要用途 89
7.7.2 创建内类对象 90
7.7.3 相同变量名的区分 90
7.7.4 方法中定义内类 91
7.7.5 抽象内类 92
7.7.6 静态内类 93
第8章 异常 94
8.1 为什么需要异常 94
8.2 如何创建和使用异常 95
8.3 使用预定义的异常 97
8.4 处理的规则 97
8.4.1 多个catch的匹配 98
8.4.2 定义总是执行的代码 99
8.4.3 方法相互调用及异常处理规则 101
8.4.4 强制处理 103
8.4.5 覆盖与异常 107
第9章 输入输出操作及文本界面应用程序 109
9.1 命令行参数 109
9.2 常见操作 109
9.2.1 字符串操作 110
9.2.2 数学计算 110
9.2.3 基本数据类型操作 110
9.3 集合类 110
9.3.1 集合 110
9.3.2 列表 111
9.3.3 Iterator接口 112
9.3.4 映射(Map) 113
9.3.5 排序 113
9.4 系统属性 114
9.5 File类 115
9.6 比较操作 117
9.6.1 简单类型 117
9.6.2 参考类型 118
9.6.3 特殊的类 118
9.7 输入输出流 119
9.7.1 键盘输入和屏幕输出 119
9.7.2 处理流 120
9.7.3 基本文件输入输出 121
9.7.4 字节流和字符流 123
9.7.5 文件随机读写 124
9.7.6 自己编写处理流 126
9.7.7 对象流 127
9.7.8 通过URL对象访问网页 128
第10章 图形界面应用程序 130
10.1 最简单的程序 130
10.2 常用组件 131
10.2.1 按钮 131
10.2.2 复选框 131
10.2.3 单选项 132
10.2.4 下拉列表框 133
10.2.5 列表框 134
10.2.6 对话框 135
10.2.7 文件对话框 135
10.2.8 标签 136
10.2.9 滚动面板 137
10.2.10 单行文本框 138
10.2.11 多行文本输入框 138
10.2.12 菜单 139
10.2.13 快捷菜单 141
10.3 布局 141
10.3.1 流布局(FlowLayout) 142
10.3.2 边界布局(BorderLayout) 143
10.3.3 网格布局(GridLayout) 144
10.3.4 卡片布局(CardLayout) 145
10.3.5 网格包布局(GridBagLayout) 146
10.3.6 综合使用 149
10.4 绘图操作 150
10.4.1 基本操作 150
10.4.2 paint()执行的流程 151
10.5 事件处理 152
10.5.1 处理的流程 152
10.5.2 提供界面的类同时作为事件处理器 153
10.5.3 键盘事件的处理 154
10.5.4 鼠标事件的处理 155
10.5.5 窗口事件的处理 156
10.5.6 选项事件的处理 158
10.5.7 动作事件的处理 158
10.5.8 多个事件处理器 160
10.5.9 Adapter类 161
10.5.10 使用内类和匿名类 162
10.6 一个综合的例子 164
10.7 色彩、字体与打印 166
10.8 Swing包中部分常用的类 168
10.8.1 带图片的Jlabel类 169
10.8.2 带图片、快捷键和鼠标停留提示的按钮 169
10.9 执行外界程序 170
10.9.1 直接运行外界的程序 170
10.9.2 控制运行的次序 171
10.9.3 处理输入输出 171
10.9.4 地址扫描程序 172
10.10 通过鼠标双击直接运行Java程序 173
10.10.1 制作jar文件 173
10.10.2 使用批处理制作 174
10.10.3 运行 174
第11章 多线程 175
11.1 何时使用多线程 175
11.2 创建和启动线程 175
11.3 线程之间的数据交流 177
11.3.1 通过内类 177
11.3.2 通过构造器传递 178
11.4 在共同访问的数据中定义方法 181
11.5 线程的同步 182
11.6 通过管道流交互 185
11.7 线程的其他调度过程 187
11.7.1 优先级 187
11.7.2 休眠(sleep) 189
11.7.3 等待其他线程结束(join) 191
11.7.4 名称判断 193
11.7.5 死锁 195
11.8 通过wait...notify调度 196
11.8.1 基本流程 196
11.8.2 警察/小偷程序的wait...notify调度 197
11.8.3 生产者/消费者程序 199
第2篇 网络编程 203
第12章 Socket——客户机、服务器程序的编写 203
12.1 概述 203
12.2 最简单的程序 204
12.2.1 服务器程序 204
12.2.2 客户机程序 205
12.2.3 端口扫描程序 206
12.3 设计自己的协议——编写时钟服务器 207
12.4 编写简单的Web服务器 209
12.4.1 最简单的Web服务器 209
12.4.2 使用线程 211
12.4.3 传输实际文件 213
12.5 编写简单的代理服务器 216
12.6 编写简单的邮件程序 219
12.6.1 编写最简单的发送E-mail的程序 219
12.6.2 用POP3收邮件 221
12.6.3 最简单的邮件服务器 222
12.7 编写简单的FTP服务器和客户程序 224
12.7.1 编写最简单的FTP服务器程序 224
12.7.2 编写最简单的FTP客户程序 226
12.8 编写远程登录代码 229
12.8.1 交互过程 229
12.8.2 简单的建立连接的程序 230
12.8.3 使用工具包完整地实现telnet协议 231
12.9 编写网上广播 233
12.9.1 多播服务器程序 233
12.9.2 客户程序 235
12.10 编写Web验证 236
12.11 基于“推”技术的聊天室 238
第13章 数据库编程 242
13.1 使用文本文件配置数据库 242
13.1.1 创建目录和数据库文件 242
13.1.2 添加ODBC数据源 242
13.2 使用Access数据库 246
13.2.1 创建数据库 246
13.2.2 添加ODBC数据源 247
13.3 查看数据库产品和驱动程序信息 247
13.4 执行SQL查询语句 249
13.4.1 条件查询 249
13.4.2 模糊查询 250
13.5 执行SQL语句修改数据库 250
13.5.1 插入数据 250
13.5.2 更新数据 251
13.5.3 删除数据 252
第14章 Servlet——浏览器/服务器程序的编写 253
14.1 Java Servlet编程 253
14.1.1 启动JSWDK 253
14.1.2 最简单的Java Servlet程序 254
14.1.3 反馈HTML文档 255
14.1.4 处理表单 256
14.1.5 处理中文 257
14.1.6 分开处理get或post 258
14.1.7 初始化 259
14.1.8 Servlet执行流程 259
14.1.9 JSWDK的进一步配置 260
14.2 计数器 261
14.2.1 基于Frame的计数器及其主要原理 261
14.2.2 基于Frame的文本计数器 261
14.2.3 基于Frame的图片计数器 263
14.2.4 基于JavaScript和Java Servlet的计数器 264
14.2.5 基于IMG的图片计数器 267
14.3 基于Web的数据库查询——JDBC 270
14.3.1 通过Web添加数据 270
14.3.2 基于Web的查询 271
14.3.3 显示数据库所有记录 272
14.4 应用程序与Servlet、CGI、ASP、PHP通信 273
14.4.1 Get方式 274
14.4.2 一个通用的类 275
14.4.3 应用程序和搜索引擎通信 276
14.4.4 Post方式 278
14.5 Cookie与个性化网页 280
14.5.1 写入Cookie 280
14.5.2 读取Cookie 281
14.5.3 基于Cookie的个性化首页 283
14.5.4 基于Cookie的个性化菜单 285
14.6 会话跟踪与网上购物篮 287
14.6.1 URL改写技术和表单项隐藏技术 287
14.6.2 Session的读写 288
14.6.3 用Session实现购物篮 290
14.7 基于Servlet Session的聊天室 290
第15章 SNMP——编写网络管理程序 293
15.1 软件包及演示程序的使用 293
15.2 最简单的SNMP程序 294
第16章 Java分布式编程——RMI 296
16.1 最简单的程序 296
16.1.1 编制Java类使其方法能够被远程调用 296
16.1.2 编制服务器程序注册远程对象 297
16.1.3 编译和放置服务器程序 297
16.1.4 运行服务器程序 299
16.1.5 编写客户机程序 300
16.1.6 编译和存放客户机程序 301
16.2 动态下载代码 302
16.2.1 基本原理 302
16.2.2 编制可被远程调用的sclass 302
16.2.3 编制服务器程序 303
16.2.4 编译和放置服务器程序 304
16.2.5 运行服务器程序 305
16.2.6 编写客户程序 305
16.2.7 编译和存放客户机程序 306
16.2.8 进一步通用化 307
16.3 线程的动态上传 308
16.3.1 编写动态上传的线程代码 308
16.3.2 编制可被远程调用的sclass 309
16.3.3 服务器程序 309
16.3.4 客户程序 310
16.4 线程的远程控制 312
16.4.1 基本思想和接口的定义 312
16.4.2 编制和运行服务器程序 313
16.4.3 编制客户端动态代码NewTask 315
16.4.4 编制和运行客户端启动线程的程序 316
16.4.5 关闭远程线程 317
16.4.6 读取远程线程状态 317
第17章 使用Java Swing轻松编制浏览器 319
17.1 显示网页 319
17.2 实现超链接 320
17.3 访问本机网页 321
第18章 制作动态网页——Java Applet 323
18.1 最简单的Java Applet程序 323
18.2 基本用法 324
18.2.1 Applet的主要方法 324
18.2.2 参数的使用 325
18.2.3 HTML文件调用Java Applet的语法 327
18.3 用户界面及交互 328
18.3.1 绘图操作 328
18.3.2 添加组件 328
18.3.3 显示图片及动画 329
18.3.4 播放声音 331
18.3.5 事件处理 331
18.3.6 Apple/Application通用程序 332
18.4 Applet的网络编程 334
18.4.1 从网络获取图片和声音 334
18.4.2 显示网上HTML文档 334
18.4.3 Applet和Socket、URL、Servlet、RMI数据库的结合 335
第19章 综合应用 336
19.1 网上口令验证系统——Servlet、Cookie和数据库 336
19.1.1 编制一个工具类 336
19.1.2 使用Cookie实现登录 337
19.1.3 使用Cookie随时验证 338
19.1.4 注销 338
19.1.5 修改口令 339
19.1.6 示例程序 340
19.2 搜索引擎——Servlet、与CGI等通信和数据库 342
19.3 计费系统——Servlet、Socket、SNMP和数据库 344
19.4 网络监控系统 344
19.4.1 检测程序 345
19.4.2 被动的远程监控 346
19.4.3 基于Java Applet的主动远程监控 347
19.4.4 基于Java Application的主动远程监控 349