前言 1
第1部分 启动引擎:Java概述 5
第1章 Java语言概述 6
1.1 Java简史 6
1.2 Java环境 8
1.2.1 Java语言 8
1.2.2 Java类库 8
1.2.3 Java运行环境 8
1.2.6 Java小应用程序 9
1.2.4 Java虚拟机 9
1.2.5 Java工具 9
1.2.7 Java应用程序 10
1.2.8 其他Java程序 10
1.3 定义Java 10
1.3.1 简单 11
1.3.2 面向对象 12
1.3.5 健壮性 14
1.3.3 分布式 14
1.3.4 解释性 14
1.3.6 安全性 15
1.3.7 与体系结构无关 17
1.3.8 可移植 18
1.3.9 高性能 18
1.3.10 多线程 19
1.3.11 动态性 19
1.4 Java简介 20
1.5 Java与C/C++的比较 20
1.5.1 数据类型 21
1.5.2 类和方法 23
1.5.3 运算符 24
1.5.4 命令行参数 25
1.5.5 字符串 26
1.5.6 注释 27
1.5.7 其他差异 28
1.6 小结 29
第2章 面向对象的编程和术语 30
2.1 在本章中将学习什么 31
2.2 面向对象的术语 31
2.2.1 抽象 33
2.2.2 把状态和行为结合在一起 34
2.2.3 数据和方法 35
2.2.4 封装(信息隐藏) 37
2.2.5 接口 38
2.2.6 对象之间的通信 39
2.2.7 模块性 40
2.2.8 分类 42
2.3 面向对象分析和设计 49
2.4 小结 50
第3章Java设计基础 51
3.1 程序对象和用户接口 52
3.2 给用户控制权 53
3.2.2 键盘控制 54
3.2.1 鼠标控制 54
3.2.3 小应用程序:停止 55
3.2.4 灵活的小应用程序 55
3.3 带宽 55
3.3.1 外理带宽瓶颈 56
3.3.2 使用图像和颜色 57
3.4 用户系统 60
3.4.1 使用内置颜色 60
3.4.2 处理瓶颈问题 63
3.4.3 选择字体 63
3.5 文件访问和网络 63
3.5.1 检索文件 64
3.5.2 在本地测试,在全球发布 64
3.6 其他因素 64
3.6.1 图像:全球语言 64
3.7 管理源代码 65
6.3.4 双重目的的程序 65
3.6.3 小应用程序间通信 65
3.6.2 布局管理程序 65
3.7.1 源文件只有一个类 66
3.7.2 文档 66
3.7.3 选择变量名 66
3.7.4 改变变量 67
3.7.5 避免使用本地码 67
3.7.6 观看他人编写的代码 68
3.7.7 用包来管理 68
3.8 小结 68
第4章 HelloWorld应用程序和小应用程序 70
4.1 应用程序和小应用程序 70
4.2 HelloWorld应用程序 71
4.2.1 应用程序目录结构 71
4.2.2 输入和保存源代码 72
4.2.3 类声明 73
4.2.5 访问修饰符 74
4.2.4 方法声明 74
4.2.6 编译源代码 76
4.2.7 执行应用程序 78
4.3 HelloWorld小应用程序 79
4.3.1 小应用程序目录结构 79
4.3.2 输入和保存源文件 80
4.3.3 编译小应用程序 83
4.3.5 创建一个HTML文件 84
4.3.4 执行小应用程序(部分1) 84
4.3.6 使用WIDTH和HEIGHT属性 85
4.3.7 HTML内容的大小写区分情况 85
4.3.8 执行小应用程序(部分2) 85
4.3.9 在Web上 86
4.3.10 向更深和更高迈进 86
4.4 小结 87
第5章 编写代码 88
5.1 增强或继承 88
5.1.1 扩展HelloWorldApplet类 89
5.1.2 创建HTML文件 92
5.2 编写代码 94
5.2.1 引入类 94
5.2.2 文档注释 99
5.2.3 类声明 102
5.2.4 变量 104
5.2.5 方法 106
5.3 创建新类 110
5.4 小结 123
第2部分 加快速度:Java基础 125
第6章Java语法:标记、类型和值 126
6.1 编译器忽略的元素 127
6.1.1 注释 127
6.1.2 空白区域和编码样式 129
6.2 标记 130
6.2.1 关键字 130
6.2.3 文字 131
6.2.2 标识符 131
6.2.4 分隔符 134
6.2.5 运算符 134
6.3 类型和值 135
6.3.1 基本类型和值 135
6.3.2 引用类型和值 138
6.4 小结 142
第7章 变量、方法、表达式和控制流 143
7.1 变量 143
7.1.1 变量的使用 143
7.1.2 声明变量 145
7.1.3 初始化以及将值保存在变量中 147
7.1.4 变量作用域 149
7.2 方法 150
7.2.1 声明方法 150
7.3 表达式 155
7.4.1 运算符优先级 156
7.4 运算符 156
7.4.2 强制次序 158
7.4.3 运算符类型 158
7.5 控制流语句 160
7.5.1 if语句 160
7.5.2 switch语句 162
7.5.3 while和do-while循环 163
7.5.4 for循环 164
7.5.5 跳转语句 165
7.6 小结 167
第8章 创建、使用数组和字符串 168
8.1 数组 168
8.1.1 实例数组 169
8.1.2 自动初始化 170
8.1.3 直接初始化 170
8.1.4 设置和检索数组元素 170
8.1.5 数组的数组 173
8.1.6 异常 174
8.2 字符串(java,lang.String) 174
8.2.1 创建字符串 174
8.2.2 使用字符串 177
8.2.3 字符常量 178
8.3 StringBuffer 182
8.3.1 创建StringBuffer 182
8.3.2 StringBuffer的长度和容量 183
8.3.3 添加和改变StringBuffer中的元素 183
8.4 包装 185
8.4.1 java.lang.Boolean 186
8.4.2 java.lang.Character 186
8.4.3 java.lang.Number 187
8.5 命令行参数和小应用程序标记属性 188
8.5.1 Java命令行参数 189
19.4.4 弹出菜单 190
8.5.1 将信息传递给应用程序 193
8.6 来自java.util包的Collection类 196
8.6.1 接口 196
8.6.2 集合的抽象类 198
8.6.3 集合的具体类 198
8.7 小结 200
第9章 类、接口和包 202
9.1 类 202
9.1.1 类声明 203
9.1.2 类体 208
9.2 内嵌类 218
9.2.2 成员类 218
9.2.1 嵌套的顶层类和接口 218
9.2.3 局部类 219
9.2.4 匿名类 219
9.3 接口 221
9.4 包 223
9.4.1 包的使用 223
9.4.2 导入包中的显式类引用 224
9.4.3 命名冲突 225
9.5 小结 226
9.4.4 创建包 226
10.1 复用 228
第10章 继承、封装和多态 228
10.2 继承 230
10.2.1 父类和子类 231
10.2.2 在子类中扩展或隐藏功能的风险 232
10.2.3 继承的脆弱性 234
10.3 多态 236
10.4.1 菱形问题 240
10.4 封装 240
10.4.2 使用封装 241
10.5 接口 243
10.6 小结 245
第11章 异常和错误处理 246
11.1 异常 246
11.1.1 异常样例 247
11.1.2 用异常进行错误处理 248
11.1.3 抛出异常 250
11.1.4 捕获异常 252
11.1.5 finally块 255
11.1.6 捕获或声明 256
11.2 减少代码中的错误 256
11.2.1 编译器警告 256
11.2.2 编程注意事项 258
11.3 小结 259
第3部分 关键技术:核心类库 261
第12章 集合、实用程序和数据结构 262
12.1 集合的作用 262
12.1.4 树 263
12.1.5 不仅仅是数据 263
12.1.3 集合 263
12.1.2 映射 263
12.1.1 清单 263
12.2 再论Java.util包 264
12.2.1 集合 264
12.2.2 迭代 267
12.2.3 保存清单 267
12.2.4 映射 268
12.3 使用集合 269
12.3.1 使用清单和迭代器 269
12.3.2 使用集合 269
12.3.3 使用映射 270
12.4.1 排序 272
12.4 处理集合 272
12.4.2 修改控制 273
12.4.3 打乱一个清单 274
12.4.4 颠倒清单内容 274
12.4.5 制作拷贝 274
12.4.6 查找 275
12.4.7 各种各样的方法 275
12.5.2 从磁盘中加载属性 276
12.5.1 为什么使用属性清单 276
12.5 保存属性清单 276
12.5.3 将属性保存到磁盘上 277
12.5.4 使用小应用程序中的属性 278
12.6 小结 279
13.2 标准的系统数据流(java.lang.System) 280
13.1 数据流介绍 280
第13章 输入/输出:Java数据流 280
13.2.1 标准输出(System.out) 281
13.2.2 标准输入(System.in) 281
13.2.3 标准错误(System.err) 282
13.3 java.io数据流 282
13.3.1 数据流类 282
13.3.2 InputStream 283
13.3.3 OutputStream 287
13.4 特殊目的的数据流 289
13.4.1 文件输入 289
13.4.2 文件输出 290
13.4.3 文件和目录 294
13.4.4 字符串 297
13.4.5 字节数组 297
13.4.6 CharArrayReader和CharArrayWriter 299
13.4.7 序列 299
13.4.8 管道 300
13.5 过滤的数据流 301
13.5.1 缓冲化I/O 301
13.5.2 行编号 302
13.5.3 返回 303
13.5.4 输入的I/O 304
13.5.5 PrintStream 306
13.5.6 PrintWriter 307
13.5.7 对象串行化 308
13.6 更多的I/O 308
13.7 小结 309
第14章 线程 310
14.1 关于线程 310
14.2.1 线程的类型 312
14.2 线程快速入门 312
14.2.2 创建新线程 312
14.3 在小应用程序中使用线程 313
14.4 线程属性 317
14.4.1 线程体 317
14.4.2 线程状态 317
14.4.3 线程优先级 322
14.4.4 daemon线程 323
14.4.5 线程组 323
14.4.6 使用Thread()构造函数 328
14.4.7 创建线程化的对象 329
14.4.8 使用线程 330
14.4.9 Runnable或Thread 331
14.4.10 终止线程 331
14.5 多线程程序 332
14.5.1 同步 332
14.5.2 死锁 334
14.6 结合在一起 334
14.7 线程和性能 337
14.8 小结 337
第15章 联网 338
15.1 用地址和端口堆积数据 338
15.1.1 地址中有什么内容 338
15.1.2 IP地址 339
15.1.3 协议 339
15.1.4 端口号 339
15.1.5 从网络到Internet网络 340
15.2 TCP/IP协议堆栈 341
15.2.1 套接字 341
15.2.2 TCP或UDP 341
15.3 套接字 342
15.3.1 查找地址 342
15.2.4 网络 342
15.2.3 IP 342
15.3.2 设置一台简单的套接字服务器 343
15.3.3 一个简单的套接字客户机 346
15.4 URL操作 347
15.4.1 基本的URL处理 349
15.4.2 获取Web主页 351
15.4.3 URL字符串编码 351
15.4.4 URLConnection操作 352
15.4.5 输入头部 354
15.5 RMI操作 355
15.5.1 选择包 355
15.5.2 创建常规接口 355
15.5.3 实现 356
15.5.4 存根类和大纲类 357
15.5.5 启动注册表 357
15.5.6 启动服务器 357
15.5.7 使用小应用程序进行调用 358
15.5.8 HTML 358
15.6 激活 359
15.7 小结 360
第16章 JDBC:连接数据库的Java API 362
16.1 JDBC简介 362
16.1.1 通用数据库连接 362
16.1.2 JDBC的基本特色 363
16.1.3 JDBC组件 364
16.1.4 为客户机/服务器结构服务 365
16.1.5 利用SQL定义数据和操纵数据 366
16.1.6 JDBC驱动程序 368
16.1.7 API概述 370
16.1.8 典型应用 371
16.2 连接远程数据库 372
16.2.1 选择合适的驱动程序 372
16.2.2 查找数据库 373
16.2.3 建立连接 374
16.3.1 数据库查询和更新 376
16.3 进行数据库查询和更新 376
16.3.2 检索结果 378
16.4 JDBC API 387
16.4.1 Array接口 387
16.4.3 java.sql.CallableStatement接口 388
16.4.2 Blob接口 388
16.4.4 java.sql.Clob接口 389
16.4.5 java.sql.Connection接口 390
16.4.6 DatabaseMetaData接口 391
16.4.7 java.sql.Driver接口 400
16.4.8 java.sql.PreparedStatement接口 400
16.4.9 java.sql.Ref接口 401
16.4.10 java.sql.ResultSet接口 402
16.4.11 java.sql.ResultSetMetaData接口 407
16.4.12 java.sql.SQLData接口 408
16.4.13 java.sql.SQLInput接口 408
16.4.15 java.sql.Statement接口 409
16.4.14 java.sql.SQLOutput接口 409
16.4.16 java.sql.Struct类 410
16.4.17 java.sql.Date类 411
16.4.18 java.sql.DriverManager类 411
16.4.19 java.sql.DriverPropertyInfo类 412
16.4.20 java.sql.Time类 412
16.4.21 java.sql.Timestamp类 412
16.4.22 java.sql.Types类 413
16.4.23 java.sql.BatchUpdateException类 414
16.4.24 java.sql.DataTruncation类 414
16.4.25 java.sql.SQLException类 415
16.4.26 java.sql.SQLWarning类 416
16.5 高级技术 416
16.5.1 数据库预编译语句 416
16.5.2 存储过程 420
16.5.3 数据库事务 423
16.5.4 三层设计 425
16.5.5 JDBC可选包 426
16.6 小结 427
第4部分 视觉感受:用户交互 429
17.1 AWT与JFC和Swing的比较 430
第17章 抽象窗口工具包综述 430
17.2 抽象窗口工具包介绍 432
17.2.1 基本构成 433
17.2.2 java.awt 434
17.3 处理事件 439
17.3.1 分级模型 440
17.3.2 委托模型 444
17.4 坐标系 448
17.4.1 x、y坐标 448
17.4.2 整数值 450
17.4.3 边界框 451
17.4.4 Dimension类 451
17.5 组合在一起 452
17.5.1 容器 452
17.6 小结 453
17.5.2 布局管理器 453
第18章 颜色、字体和图形基础 455
18.1 Java 2D的引入 455
18.1.1 Java 2D能做什么 455
18.1.2 与平台无关 456
18.2 处理颜色 456
18.2.1 颜色表示法 456
18.2.2 前景/背景颜色 456
18.3 创建图形 457
18.3.1 获取图形设备描述表 457
18.3.2 绘制基本图形 458
18.4 字体处理 463
18.4.1 创建字体 463
18.4.2 查找已经安装的字体 464
18.4.3 使用字体矩阵 464
18.5 处理图像 466
18.5.1 标准图像 467
18.5.2 要有效的图像 469
18.6 打印 472
18.6.1 打印类 472
18.6.2 启动打印进程 472
18.6.3 控制打印 473
18.7 小结 474
19.1.1 通往世界的窗口 475
第19章 容器及基本概念 475
19.1 打开窗口 475
19.1.2 对话框 478
19.2 容器构件 480
19.2.1 构件 480
19.2.2 容器 482
19.3.1 标签 483
19.2.4 面板 483
19.3 简单构件 483
19.2.3 面布 483
19.3.2 按钮 484
19.3.3 复选框和单选框 484
19.3.4 选项菜单 485
19.3.5 清单 486
19.4 菜单 487
19.4.1 菜单项 487
19.4.2 菜单栏 488
19.4.3 下拉菜单 489
19.5 小结 491
第20章 布局管理器和其他组件 492
20.1 什么是布局管理器 492
20.1.1 管理器的类型 492
20.2 布局管理器细节 493
20.1.3 自定义布局管理器 493
20.1.2 默认管理器 493
20.2.1 FlowLayout管理器 494
20.2.2 BorderLayout管理器 495
20.2.3 GridLayout管理器 496
20.2.4 GridBagLayout管理器 496
20.2.5 CardLayout管理器 498
20.3 文本构件 500
20.3.1 文本构件 500
20.3.2 文本框 501
20.3.3 文本域 502
20.4 小结 503
第21章 Swing基础:构件和容器 504
21.1 介绍Swing 504
21.1.1 从AWT到Swing 504
21.1.2 Swing构件体系 506
21.2.1 javax.swing.JFrame类 507
21.2 基本Swing构件 507
21.1.3 JComponent基类 507
21.2.2 Swing容器 510
21.2.3 使用javax.swing.JLabel显示文本 512
21.2.4 Swing按钮 514
21.3 小结 518
第22章 基本Swing构件及其产生的事件 519
22.1 Swing菜单 519
22.1.1 菜单栏和菜单 520
22.1.2 菜单助记键和加速键 524
22.1.3 弹出菜单和触发器 526
22.1.4 JToolBar 528
22.2 Swing事件 530
22.2.1 按钮和菜单事件示例 530
22.2.2 其余Swing特有事件处理功能 536
22.3 小结 544
23.1.1 JToggleButton 545
23.1 按钮 545
第23章 Swing库中新的窗口小部件 545
23.1.2 JCheckBox 546
23.1.3 JRadioButton和ButtonGroup 548
23.1.4 JRadioButtonMenuItem和JCheckBoxMenuItem 552
23.2 其他用于选择的构件 553
23.2.1 JOptionPane 553
23.2.2 JList 557
23.2.3 JComboBox 558
23.2.4 JFileChooser 560
23.2.5 JColorChooscr 561
23.2.6 JSlider 563
23.3 容器 564
23.3.1 JSplitPane 564
23.3.2 JTabbedPane 566
23.3.3 JDesktopPane和JInternalFrame 567
23.3.4 Text 568
23.3.5 JTextField和JPasswordField 569
23.3.6 JTextArea 571
23.3.7 JEditorPane和JTextPane 572
23.4 显示 577
23.4.1 JProgressBar 577
23.4.2 JTable 579
23.4.3 JTree 581
23.5 小结 582
第24章 Swing辅助构件和功能 584
24.1 边框 584
24.1.1 BorderFactory和javax.swing.border软件包 584
24.1.2 TitleBorder 587
24.1.3 CompoundBorder 589
24.2 Swing布局管理器 590
24.2.1 BoxLayout 590
24.2.2 OverlayLayout 592
24.3 可插入的外观和感观 592
24.3.1 设置外观和感观 593
24.3.2 自定义外观和感观 595
24.3.3 易用性 596
24.4 模型-视图-控制器 597
24.5 小结 598
第5部分 开发小应用程序和应用程序 599
第25章 开发小应用程序和应用程序 600
25.1.1 控制对象 601
25.1.2 权限 601
25.1 理解Java安全性 601
25.1.3 读取策略文件 602
25.1.4 指定自定义策略 603
25.1.5 请求权限 603
25.2 Java插件简介 604
25.2.1 安装Java插件 604
25.2.2 使用Java插件 606
25.3 使用Java档案 607
25.4.1 应用程序环境 608
25.3.1 什么是Java档案 608
25.4 使用JAR文件 608
25.4.2 Java小应用程序环境 609
25.5 管理JAR文件 609
25.5.1 创建新的JAR文件 610
25.5.2 解压缩信息 610
25.6 java.util.jar简介 611
25.7 控制JAR的行为 611
25.7.1 版本 612
25.7.2 数字签名 612
25.7.3 可自执行的archive文件 612
25.7.4 指定其他archive文件 613
25.8 小结 613
附录A 安装和配置Java软件开发工具 614
附录B 使用JavaDOC工具 643
附录C 源代码 650
附录D 核心扩展 653