第1周 Java的基本概念 3
第1天 21世纪的Java 3
1.1 探究Java 2 4
1.1.1 Java的过去、现在和未来 4
1.1.2 交互式Web编程 4
1.1.3 Java是从Oak发展而来的 6
1.1.4 语言版本 7
1.1.5 Java前景展望 7
1.2.2 Java是易于学习的 8
1.2.1 Java是面向对象的 8
1.2 为什么要选择Java 8
1.2.3 Java是平台无关的 9
1.3 深入Java编程 10
1.3.1 选择一种Java开发工具 10
1.3.2 安装SDK 11
1.4 你的第一个Java程序 15
1.5 小结 20
1.6 问与答 20
1.8 练习 21
1.7.2 答案 21
1.7 小测验 21
1.7.1 问题 21
第2天 面向对象编程 23
2.1 用对象来考虑问题 23
2.2 对象和类 24
2.3 属性和行为 26
2.3.1 对象的类属性 26
2.3.2 对象的类行为 27
2.3.3 创建类 28
2.3.4 运行该程序 29
2.4 组织类和类行为 32
2.4.1 继承 32
2.4.2 创建类层次结构 34
2.4.3 在实际运行中继承 35
2.4.4 单继承和多重继承 36
2.4.5 接口 37
2.4.6 包 37
2.5 小结 37
7.7 将参数传递给小应用程序 38
2.6 问与答 38
2.7 小测验 39
2.7.1 问题 39
2.7.2 答案 39
2.8 练习 39
第3天 Java编程基础 40
3.1 语句和表达式 40
3.2 变量和数据类型 41
3.2.1 创建变量 42
3.2.2 命名变量 43
3.2.3 变量类型 43
3.2.4 给变量赋值 45
3.2.5 常量 45
3.3 注释 46
3.4 字面量 46
3.4.1 数字字面量 47
3.4.3 字符字面量 48
3.4.2 布尔字面量 48
3.5 表达式和运算符 49
3.4.4 字符串字面量 49
3.5.1 算术运算符 50
3.5.2 有关赋值的更多内容 52
3.5.3 增量和减量运算符 53
3.5.4 比较运算符 54
3.5.5 逻辑运算符 54
3.5.6 运算符优先级 55
3.6 字符串运算 56
3.7 小结 57
3.8 问与答 58
3.9 小测验 59
3.9.1 问题 59
3.9.2 答案 59
3.10 练习 59
4.1.1 使用new 61
第4天 处理对象 61
4.1 创建新对象 61
4.1.2 new都做了些什么 63
4.1.3 有关内存管理的一个注释 63
4.2 访问和设置类变量和实例变量 64
4.2.1 获取值 64
4.2.2 改变值 64
4.2.3 类变量 65
4.3 调用方法 66
4.3.1 嵌套方法调用 68
4.3.2 类方法 68
4.4 对象的引用 69
4.5 转换和强制转换对象和原始数据类型 70
4.5.1 强制转换原始类型 71
4.5.2 强制转换对象 72
4.5.3 把原始类型转换成对象或者把对象转换成原始类型 73
4.6 比较对象值和类 74
4.6.1 比较对象 74
4.6.2 判断对象的类 75
4.8 问与答 76
4.7 小结 76
4.9.1 问题 77
4.9 小测验 77
4.9.2 答案 78
4.10 练习 78
第5天 列表、逻辑和循环 79
5.1 数组 79
5.1.1 声明数组变量 79
5.1.2 创建数组对象 80
5.1.3 访问数组元素 81
5.1.4 改变数组元素 82
5.1.5 多维数组 83
5.2 块语句 84
5.3 if条件语句 85
5.4 switch条件语句 86
5.5 for循环 90
5.6 while和do循环 93
5.6.1 while循环 93
5.6.2 do...while循环 94
5.7 跳出循环 95
5.7.1 标号的循环 96
5.7.2 条件运算符 96
5.8 小结 97
5.9 问与答 97
5.11 练习 98
5.10.1 问题 98
5.10.2 答案 98
5.10 小测验 98
第6天 创建类和方法 100
6.1 定义类 100
6.2 创建实例和类变量 100
6.2.1 定义实例变量 101
6.2.2 类变量 101
6.3 创建方法 101
6.3.1 定义方法 102
6.3.2 关键字this 103
6.3.3 变量作用域和方法定义 104
6.3.4 将参数传递给方法 105
6.3.5 类方法 106
6.4 创建Java应用程序 107
6.5 Java应用程序与命令行参数 109
6.5.1 将参数传递给Java应用程序 109
6.5.2 处理Java程序中的参数 109
6.6 创建具有相同的名字、不同的参数的方法 110
6.7 构造函数方法 114
6.7.1 基本的构造函数方法 115
6.7.2 调用另一个构造函数方法 115
6.7.3 重载构造函数方法 116
6.8 重写方法 117
6.8.1 创建方法来重写现有的方法 118
6.8.3 重写构造函数 119
6.8.2 调用最初的方法 119
6.9 结束方法 121
6.10 小结 121
6.11 问与答 122
6.12 小测验 122
6.12.1 问题 122
6.12.2 答案 123
6.13 练习 123
7.1 小应用程序和应用程序有何不同 124
第7天 编写Java小应用程序 124
7.2 小应用程序的安全限制 125
7.3 创建小应用程序 126
7.3.1 主要的小应用程序行为 127
7.3.2 一个小应用程序的例子 130
7.4 在一个Web页上包含一个小应用程序 132
7.4.1
7.5 关于
7.4.3 把小应用程序放到Web页上 134
7.4.2 测试结果 134
7.5.1 ALIGN 135
7.5.2 HSPACE和VSPACE 136
7.5.3 CODE和CODEBASE 136
7.5.4
7.6 Java的存档文件 137
7.8 开发Java 2小应用程序 142
7.8.1 在Web页中使用插件 143
7.8.2 运行插件 144
7.9 小结 145
7.10 问与答 146
7.11 小测验 146
7.11.1 问题 147
7.11.2 答案 147
7.12 练习 147
第8天 使用Swing 149
8.1 创建一个应用程序 149
第2周 Swing和其他可视化Java编程 149
8.1.1 创建一个界面 150
8.1.2 开发一个框架 152
8.1.3 关闭窗口 154
8.1.4 创建组件 156
8.1.5 将组件添加到容器中 156
8.1.6 将组件添加到小应用程序中 158
8.2.1 图标 159
8.2 使用组件 159
8.2.2 标签 161
8.2.3 文本字段 161
8.2.4 文本域 162
8.2.5 滚动窗格 164
8.2.6 滚动条 164
8.2.7 复选框和单选按钮 165
8.2.8 下拉列表和组合框 167
8.5 小测验 169
8.4 问与答 169
8.3 小结 169
8.5.1 问题 170
8.5.2 答案 170
8.6 练习 170
第9天 创建一个Swing界面 171
9.1 Swing的特性 171
9.1.1 设置外观 171
9.1.2 标准对话框 172
9.1.3 一个例子:应用程序Info 176
9.1.4 滑块 179
9.1.5 滚动窗格 180
9.1.6 工具栏 181
9.1.7 进度条 183
9.2 小结 185
9.3 问与答 186
9.4 小测验 186
9.4.1 问题 186
9.4.2 答案 186
9.5 练习 187
第10天 在用户界面上安放组件 188
10.1 基本的界面布局 188
10.1.1 摆放一个界面 188
10.1.2 流动布局 189
10.1.3 网格布局 191
10.1.4 边框布局 192
10.2 混合布局管理器 194
10.3 卡片布局 195
10.4 网格包布局 196
10.4.1 设计网格 197
10.4.2 创建网格 198
10.4.3 决定比例的大小 200
10.4.4 添加并安放组件 202
10.4.5 调整 203
10.5 单元padding和insets 205
10.6 小结 206
10.7 问与答 206
10.8.1 问题 207
10.8 小测验 207
10.8.2 答案 208
10.9 练习 208
第11天 响应用户输入 209
11.1 事件监听器 209
11.1.1 设置组件 210
11.1.2 事件处理方法 210
11.2 使用方法 213
11.2.1 动作事件 213
11.2.2 调整事件 214
11.2.3 焦点事件 216
11.2.4 项目事件 216
11.2.5 键盘事件 218
11.2.6 鼠标事件 218
11.2.7 鼠标运动事件 219
11.2.8 窗口事件 219
11.2.9 一个例子:一个RGB到HSB的转换器 220
11.2.10 布局的设计 221
11.2.11 定义子面板 223
11.2.12 sRGB和HSB之间的转换 225
11.2.13 处理用户事件 227
11.3 小结 231
11.4 问与答 232
11.5 小测验 232
11.5.1 问题 232
11.5.2 答案 232
11.6 练习 233
第12天 颜色、字体和图形 234
12.1 Graphics类 234
12.2 创建一个画图表面 234
12.2.1 强制转换一个Graphics2D对象 235
12.2.2 创建一个应用程序 235
12.2.3 图形坐标系统 237
12.3 绘图和填充 237
12.3.1 直线 237
12.3.2 矩形 238
12.3.3 多边形 239
12.3.4 椭圆形 241
12.3.5 弧 241
12.3.6 复制和清除 245
12.4 文本和字体 245
12.4.1 创建Font对象 245
12.4.2 绘制字符和字符串 246
12.4.3 找出关于某个字体的信息 246
12.5 颜色 248
12.5.1 使用Color对象 249
12.5.2 测试和设置当前颜色 249
12.6 使用Java2D的高级图形操作 250
12.6.1 用户和设备坐标空间 250
12.6.2 指定着色属性 251
12.6.3 创建要绘制的对象 253
12.6.4 绘制对象 256
12.7 小结 258
12.9 小测验 259
12.9.1 问题 259
12.8 问与答 259
12.9.2 答案 260
12.10 练习 260
第13天 线程和动画 261
13.1 在Java中创建动画 261
13.1.1 画图和重画 262
13.1.2 使一个组件动起来 262
13.1.3 通过线程控制动画 266
13.1.4 编写一个线程化的程序 266
13.1.5 一个线程化的时钟应用程序 268
13.1.6 终止一个线程 270
13.2 获取和使用图像 273
13.2.1 获取图像 273
13.2.2 绘制图像 274
13.3 使用图像创建动画 275
13.3.1 PixelPete的散步 275
13.2.3 有关图像探测器的一点说明 275
13.3.2 记录图像的加载 284
13.4 小结 285
13.5 问与答 286
13.6 小测验 286
13.6.1 问题 286
13.6.2 答案 287
13.7 练习 287
14.1 获取并使用声音 288
第14天 Java的声音功能 288
14.2 JavaSound 291
14.2.1 MIDI文件 291
14.2.2 播放一个MIDI文件 291
14.2.3 管理声音文件 296
14.3 小结 301
14.4 问与答 302
14.5 小测验 302
14.5.1 问题 302
14.6 练习 303
14.5.2 答案 303
第3周 Java的高级特性 305
第15天 包、接口和其他类特性 305
15.1 限定符 305
15.2 静态变量和方法 310
15.3 Final类、方法和变量 312
15.3.1 变量 312
15.3.2 方法 313
15.3.3 类 313
15.4 抽象类和方法 314
15.5 包 314
15.6 使用包 315
15.6.1 完整的包和类名 315
15.6.2 import声明 316
15.6.3 命名冲突 316
15.7 创建你自己的包 317
15.7.1 选择一个包名 317
15.6.4 有关CLASSPATH和类的位置的一点说明 317
15.7.2 创建文件夹结构 318
15.7.3 将某个类加入到包中 318
15.7.4 包和类访问控制 318
15.8 接口 319
15.8.1 单一继承的问题 319
15.8.2 接口和类 320
15.8.3 实现和使用接口 320
15.8.4 实现多个接口 321
15.8.5 接口的其他使用情况 322
15.9 创建和扩展接口 323
15.9.1 新的接口 323
15.9.2 在接口内的方法 324
15.9.3 扩展接口 324
15.9.4 创建一个网上商店 325
15.10 内部类 330
15.11 小结 332
15.12 问与答 332
15.14 练习 333
15.13.2 答案 333
15.13.1 问题 333
15.13 小测验 333
第16天 错误处理和安全性 334
16.1 异常,这种过时而又含混的方式 334
16.2 Java异常 335
16.3 管理异常 337
16.3.1 异常一致性检测 337
16.3.2 保护代码和捕获异常 337
16.3.3 finally子句 339
16.4 声明可能会抛出异常的方法 341
16.4.1 throws子句 341
16.4.2 你应该抛出哪个异常 342
16.4.3 传递异常 343
16.4.4 throws和继承 343
16.5 创建并抛出你自己的异常 344
16.5.1 抛出异常 344
16.5.3 组合使用throws,try和throw 345
16.5.2 创建你自己的异常 345
16.6 何时使用或不使用异常 346
16.6.1 什么时候使用异常 346
16.6.2 什么时候不要使用异常 346
16.6.3 使用异常的不好的格式 347
16.7 使用数字签名来标识小应用程序 347
16.7.1 一个数字签名的例子 348
16.7.2 特定浏览器的签名 350
16.7.3 安全策略 350
16.9 问与答 351
16.8 小结 351
16.10 小测验 352
16.10.1 问题 352
16.10.2 答案 352
16.11 练习 353
第17天 通过Java流处理数据 354
17.1 对流的介绍 354
17.1.1 使用流 355
17.1.2 过滤流 355
17.2 字节流 356
17.3 过滤一个流 360
17.4 字符流 366
17.4.1 读取文本文件 367
17.4.2 写入文本文件 369
17.5 文件和文件名过滤器 370
17.6 小结 372
17.7 问与答 373
17.8 小测验 373
17.8.1 问题 373
17.8.2 答案 374
17.9 练习 374
第18天 对象串行化和映像 375
18.1 对象串行化 375
18.1.1 对象输出流 376
18.1.2 对象输入流 379
18.1.3 临时变量 381
18.2.1 检查和创建类 382
18.2 用映像来检查类和方法 382
18.2.2 处理类的每一个部分 383
18.2.3 检查某个类 385
18.3 远程方法调用 387
18.3.1 RMI体系结构 388
18.3.2 创建RMI应用程序 389
18.4 小结 393
18.6 小测验 394
18.6.1 问题 394
18.5 问与答 394
18.6.2 答案 395
18.7 练习 395
第19天 通过因特网进行通信 396
19.1 Java中的连网技术 396
19.1.1 在小应用程序内创建链接 396
19.1.2 打开网络连接 399
19.1.3 在网上打开一个流 400
19.1.4 套接字 403
19.1.5 Socket服务器 406
19.1.6 实现服务器程序 408
19.1.7 测试这个服务器 417
19.2 小结 418
19.3 问与答 418
19.4 小测验 419
19.4.1 问题 419
19.4.2 答案 420
19.5 练习 420
20.1 可复用的软件组件 421
第20天 使用JavaBeans 421
20.1.1 JavaBeans的目标 422
20.1.2 JavaBeans如何与Java联系起来 423
20.1.3 JavaBeans的API 423
20.2 开发工具 424
20.3 使用JavaBeans 426
20.3.1 Bean容器 426
20.3.2 放置bean 427
20.3.3 调整Bean的属性 428
20.3.4 创建Beans之间的交互操作 429
20.3.5 创建JavaBeans程序 431
20.3.6 使用其他的JavaBeans 432
20.4 小结 433
20.5 问与答 433
20.6 小测验 433
20.6.1 问题 434
20.6.2 答案 434
20.7 练习 434
21.1 Java数据库连通性 435
第21天 Java数据库互连和数据结构 435
21.1.1 数据库驱动程序 436
21.1.2 JDBC-ODBC桥 436
21.1.3 连接一个ODBC数据源 438
21.1.4 JDBC驱动程序 442
21.2 数据结构 444
21.3 Java数据结构 445
21.3.1 Iterator 446
21.3.2 位组 447
21.3.3 Vector 448
21.3.4 堆栈 451
21.3.5 映射 452
21.3.6 哈希表 453
21.4 小结 455
21.5 问与答 455
21.6 小测验 456
21.6.1 问题 456
21.6.2 答案 456
21.7 练习 456
奖励周 扩展你的Java知识 458
第22天 Software Development Kit(SDK) 458
22.1 SDK概览 458
22.2 解释器java 459
22.3 编译器javac 460
22.4 浏览器appletviewer 461
22.5 文档工具javadoc 465
22.6.1 调试应用程序 469
22.6 调试程序jdb 469
22.6.2 调试小应用程序 471
22.6.3 高级的调试命令 471
22.7 使用系统属性 472
22.8 小结 473
22.9 问与答 474
22.10 小测验 474
22.10.1 问题 474
22.11 练习 475
22.10.2 答案 475
第23天 Java编程环境 476
23.1 Java IDE 476
23.2 评估一个IDE 478
23.2.1 Borland JBuilder 478
23.2.2 WebGain VisualCafé 484
23.3 小结 488
23.4 问与答 488
23.5 小测验 488
23.6 练习 489
23.5.1 问题 489
23.5.2 答案 489
第24天 编写Java 1.0小应用程序 490
24.1 Java 1.0编程 490
24.1.1 创建一个小应用程序 491
24.1.2 在一个小应用程序中画图 493
24.1.3 创建一个图形化的用户界面 497
24.1.4 处理用户事件 502
24.2 小结 506
24.3 问与答 506
24.4 小测验 507
24.4.1 问题 507
24.4.2 答案 507
24.5 练习 508
第25天 类Accessibility 509
25.1 使程序更易访问 509
25.1.2 访问一个Swing组件 510
25.1.1 类Accessibility 510
25.2 使用Accessibility特性 515
25.2.1 键盘记号 515
25.2.2 ToolTips 516
25.2.3 将标签与组件联系起来 517
25.3 一个易于访问的应用程序:PageData 517
25.4 小结 521
25.5 问与答 521
25.6.2 答案 522
25.6 小测验 522
25.6.1 问题 522
25.7 练习 523
第26天 编写Java Servlets 524
26.1 使用网络servlets 524
26.2 开发servlets 526
26.3 小结 534
26.4 问与答 534
26.5.1 问题 535
26.5.2 答案 535
26.5 小测验 535
26.6 练习 536
第27天 使用JavaServer Pages 537
27.1 JavaServer Pages 537
27.1.1 编写一个JavaServer Page 538
27.1.2 创建一个Web应用程序 544
27.2 小结 551
27.3 问与答 551
27.4 小测验 551
27.4.1 问题 552
27.4.2 答案 552
27.5 练习 552
第28天 读取XML文件 553
28.1 使用XML 553
28.2 用Java处理XML 556
28.4 问与答 566
28.5 小测验 566
28.3 小结 566
28.5.1 问题 567
28.5.2 答案 567
28.6 练习 567
附录A 配置SDK 569
A.1 使用一个命令行界面 569
A.1.1 在MS-DOS中打开文件夹 570
A.1.2 在MS-DOS中创建文件夹 572
A.1.3 在MS-DOS中运行程序 572
A.2.1 在Windows 95、98和Me中设置Path变量 574
A.2 配置SDK 574
A.2.2 在Windows NT和2000 中设置Path变量 576
A.2.3 设置CLASSPATH变量 579
A.3 UNIX配置 583
附录B 结合SDK使用文本编辑器 585
B.1 选择一个文本编辑器 585
B.2 在Windows中创建一个文件关联 586
B.2.1 使用批处理文件 586
B.2.2 手动创建一个关联 587