第1章 Java及Java开发环境概述 1
1.1 Java的诞生及其影响 1
1.2 Java的特征 1
1.2.1 简单 2
1.2.2 面向对象 2
1.2.3 分布式 2
1.2.4 健壮 2
1.2.5 体系结构中立 3
1.2.6 可移植 3
1.2.7 解释执行 3
1.2.8 高性能 3
1.2.9 多线程 4
1.2.10 动态 4
1.3 Java5.0新特性 4
1.4 安装Java开发工具 5
1.4.1 JDK的取得 5
1.4.2 安装并测试 5
1.5 JDK开发工具包 9
1.5.1 Javac 9
1.5.2 Java 9
1.5.3 Javadoc 10
1.5.4 jar 13
1.5.5 Javah 14
1.5.6 Javap 15
1.5.7 appletviewer 16
1.5.8 jdb 16
1.5.9 native2ascii 17
1.5.10 extcheck 17
1.6 Java集成开发环境简介 18
1.6.1 Eclipse发展背景 18
1.6.2 Eclipse工作台简介 18
1.7 本章小结 23
第2章 Java语言基础 24
2.1 Java关键字和标识符 24
2.1.1 标识符 24
2.1.2 关键字 24
2.2 Java数据类型、常量和变量 25
2.2.1 Java数据类型 25
2.2.2 常量 25
2.2.3 变量 26
2.3 简单数据类型 26
2.3.1 整数类型 27
2.3.2 浮点类型 28
2.3.3 字符类型 29
2.3.4 布尔类型 30
2.3.5 枚举类型 30
2.3.6 综合举例 31
2.3.7 自动类型转换与强制类型转换 31
2.4 Java运算符及表达式 32
2.4.1 Java运算符简介 32
2.4.2 算术运算符 33
2.4.3 关系运算符 34
2.4.4 布尔逻辑运算符 35
2.4.5 按位运算符 35
2.4.6 赋值运算符 36
2.4.7 条件运算符 37
2.4.8 表达式及运算符优先级 38
2.5 数组 39
2.6 字符串 41
2.6.1 字符串的初始化 41
2.6.2 String和StringBuffer类 41
2.6.3 StringBuilder类 42
2.6.4 字符串的访问 42
2.6.5 修改字符串 43
2.7 Java流程控制 43
2.7.1 条件语句 43
2.7.2 循环语句 44
2.7.3 转移语句 45
2.8 本章小结 46
第3章 面向对象思想 47
3.1 结构化程序设计的方法 47
3.2 面向对象的编程思想 47
3.2.1 什么是对象 47
3.2.2 什么是面向对象 48
3.2.3 什么是类 48
3.2.4 学会抽象整个世界——实体、对象和类 48
3.2.5 面向对象方法——抽象的进步 50
3.3 面向对象的特点 50
3.3.1 继承 50
3.3.2 封装 51
3.3.3 多态性 52
3.4 面向对象方法的优点 52
3.5 面向对象的软件开发方法(OMT) 53
3.6 本章小结 54
第4章 Java面向对象设计 56
4.1 类和类的实例化 56
4.1.1 定义类的结构 56
4.1.2 类的实例化 59
4.2 Java内存使用机制 63
4.3 抽象类和接口 65
4.3.1 抽象类 65
4.3.2 接口 66
4.4 命名空间与包 67
4.4.1 包的基本概念 67
4.4.2 自定义一个包 68
4.4.3 源文件与类文件的管理 68
4.5 现有类的使用 69
4.5.1 访问权限 69
4.5.2 使用import导入已有类 71
4.5.3 静态导入 71
4.5.4 类的继承和多态 72
4.6 Java API文档 74
4.6.1 API文档结构介绍 74
4.6.2 API文档使用范例 75
4.7 本章小结 76
第5章 类的高级特性 78
5.1 静态变量和方法 78
5.1.1 静态变量 78
5.1.2 静态方法 79
5.2 常量、最终方法和最终类 80
5.2.1 常量 80
5.2.2 最终方法 80
5.2.3 最终类 80
5.3 抽象类和抽象方法的使用 80
5.4 接口的使用 81
5.4.1 接口的概念 81
5.4.2 定义接口 82
5.4.3 执行接口 83
5.4.4 使用接口 84
5.5 内部类的使用 84
5.5.1 使用内部类的共同方法 84
5.5.2 内部类 85
5.5.3 内部类属性 86
5.6 本章小结 86
第6章 数据结构 87
6.1 抽象数据类型 87
6.2 基本数据结构 87
6.2.1 向量 87
6.2.2 线性表 88
6.2.3 堆栈 97
6.2.4 队列 99
6.2.5 树 101
6.2.6 图 104
6.3 应用实例 107
6.3.1 递归 107
6.3.2 链表示例 109
6.3.3 链表实现堆栈 110
6.3.4 链表实现队列 111
6.3.5 双向链表的实现 112
6.4 本章小结 122
第7章 异常处理 123
7.1 异常机制简述 123
7.1.1 异常的概念 123
7.1.2 异常的分类 124
7.2 Java异常体系 125
7.2.1 捕获异常 125
7.2.2 声明异常 127
7.2.3 抛出异常 128
7.2.4 自定义异常 129
7.3 本章小结 130
第8章 Java输入/输出系统 131
8.1 Java输入/输出体系 131
8.2 字节流 133
8.2.1 InputStream类 133
8.2.2 OutputStream类 134
8.2.3 FileInputStream类 135
8.2.4 FileOutputStream类 137
8.2.5 ByteArrayInputStream类 138
8.2.6 ByteArrayOutputStream类 138
8.2.7 管道流PipedInputStream和PipedOutputStream类 140
8.2.8 过滤流FilterInputStream和FilterOutputStream类 141
8.3 字符流 141
8.3.1 Reader类 141
8.3.2 Writer类 142
8.3.3 FileReader类 143
8.3.4 FileWriter类 144
8.3.5 CharArrayReader类 145
8.3.6 CharArrayWriter类 145
8.3.7 PushbackReader类 146
8.4 文件的读写操作 148
8.5 对象序列化及其恢复 151
8.5.1 Serializable接口 151
8.5.2 ObjectOutputStream类 151
8.5.3 ObjectInputStream类 152
8.6 本章小结 154
第9章 创建Java Applet 155
9.1 Applet类 155
9.2 Applet概述 155
9.3 Applet的使用技巧 156
9.3.1 波浪形文字 156
9.3.2 大小变化的文字 158
9.3.3 星空动画 166
9.3.4 时钟 170
9.4 本章小结 172
第10章 Java多线程 173
10.1 多线程的概念 173
10.1.1 多线程 173
10.1.2 Java中的多线程 174
10.1.3 线程组 174
10.2 线程的创建 174
10.2.1 通过实现Runnable接口创建线程 175
10.2.2 通过继承Thread类创建线程 175
10.2.3 两种线程创建方法的比较 176
10.3 线程的调度与控制 176
10.3.1 线程的调度与优先级 176
10.3.2 线程的控制 177
10.4 线程的状态与生命周期 178
10.5 线程的同步 179
10.6 线程的通信 182
10.7 线程池 184
10.8 本章小结 187
第11章 图形用户界面 189
11.1 AWT及其根组件 189
11.1.1 java.awt包 189
11.1.2 根组件(Component) 189
11.2 容器(Container)和组件 190
11.3 布局管理器(Layout Manager) 191
11.3.1 FlowLayout布局管理器 192
11.3.2 BorderLayout布局管理器 193
11.3.3 GridLayout布局管理器 195
11.3.4 CardLayout布局管理器 197
11.3.5 GridBagLayout布局管理器 199
11.3.6 null布局管理器 201
11.4 本章小结 202
第12章 AWT基本组件及事件处理机制 203
12.1 AWT基本组件 203
12.1.1 Component类 203
12.1.2 AWT事件模型 206
12.2 GUI事件的处理 207
12.2.1 AWT事件继承层次 207
12.2.2 AWTEvent子类事件 208
12.2.3 监听器接口 209
12.3 几个简单组件 213
12.3.1 按钮(Button类) 213
12.3.2 标签(Label类) 213
12.3.3 文本组件(TextField和TextArea类) 213
12.4 使用类适配器(Adapter)进行事件处理 215
12.5 使用匿名类进行事件处理 218
12.6 本章小结 219
第13章 Swing用户界面组件 220
13.1 Swing组件库简介 220
13.1.1 JFC和Swing 220
13.1.2 Swing包概览 221
13.1.3 Swing和AWT的区别 221
13.1.4 示例程序SwingApplication 222
13.2 Swing组件及其容器 226
13.2.1 JComponent类 226
13.2.2 AbstractButton及其子类 230
13.3 JComboBox和JList组件 241
13.4 JSlider类——滑杆 248
13.5 JInternalFrame类 250
13.6 本章小结 252
第14章 网络通信程序设计 253
14.1 java.net包 253
14.2 socket编程 253
14.2.1 socket基础知识 253
14.2.2 socket机制分析 254
14.2.3 客户端编程 256
14.2.4 服务器端编程 258
14.2.5 服务器/客户端通信实例 260
14.2.6 Datagram Sockets编程 263
14.3 本章小结 268
第15章 Java数据库访问机制——JDBC 269
15.1 JDBC介绍 269
15.1.1 JDBC的概述 269
15.1.2 JDBC——底层API 269
15.1.3 JDBC的设计过程 270
15.1.4 JDBC和ODBC的比较 270
15.2 关系数据库和SQL 271
15.2.1 关系数据库 271
15.2.2 关系数据库的应用模型 272
15.2.3 结构化查询语言 273
15.3 JDBC应用程序编程接口 276
15.3.1 JDBC的类 276
15.3.2 DriverManager 277
15.3.3 JDBC驱动程序的类型 277
15.4 JDBC编程基础 278
15.4.1 JDBC访问数据库 278
15.4.2 创建一个数据源 279
15.4.3 数据库URL 280
15.4.4 建立与数据源的连接 281
15.4.5 发送SQL语句 282
15.4.6 处理查询结果 283
15.5 基本JDBC应用程序 283
15.5.1 JDBC在应用程序中的应用 283
15.5.2 JDBC在Applet中的使用 284
15.6 JDBC API的主要界面 287
15.6.1 Statement 287
15.6.2 ResultSet 288
15.6.3 PreparedStatement 290
15.6.4 CallableStatement 292
15.7 事务管理 293
15.7.1 保存点 294
15.7.2 批量更新 294
15.8 高级连接管理 295
15.9 本章小结 296
第16章 servlet 297
16.1 servlet综述 297
16.1.1 什么是servlet 297
16.1.2 servlet的生命周期 298
16.1.3 servlet与其他开发技术的比较 299
16.1.4 servlet的应用范围 301
16.1.5 配置servlet的开发的环境 302
16.2 servlet编程 303
16.2.1 HTTP协议介绍 304
16.2.2 简单程序servlet 305
16.2.3 会话跟踪 309
16.2.4 Servlet协作 312
16.3 servlet编程实践 313
16.3.1 过滤器介绍 313
16.3.2 编程框架 316
16.3.3 其他特征 317
16.4 本章小结 319
第17章 Struts与Hibernate入门 320
17.1 MVC框架 320
17.1.1 MVC模式 320
17.1.2 基于Web应用的MVC模式 321
17.2 Struts结构和处理流程 322
17.3 Struts组件 323
17.3.1 Web应用程序的配置 323
17.3.2 控制器 323
17.3.3 struts-config.xml文件 324
17.3.4 Action类 324
17.3.5 视图资源 324
17.3.6 ActionForm 325
17.3.7 模型组件 325
17.4 Struts应用实例 325
17.4.1 Struts在Web应用程序中的基本安装 325
17.4.2 Web应用的国际化和本地化 325
17.4.3 使用Struts中的Form(表单)——ActionForm 327
17.5 Hibernate简介 335
17.5.1 第一个Hibernate程序 335
17.5.2 关联映射 345
17.6 本章小结 350
第18章 J2EE基础 351
18.1 J2EE综述 351
18.1.1 J2EE的主要特征 351
18.1.2 J2EE的架构 352
18.1.3 J2EE应用场景描述 353
18.2 客户端层技术 354
18.2.1 客户端层的问题 354
18.2.2 客户端层的解决方案 356
18.3 Web层技术 357
18.3.1 Web层的目的 357
18.3.2 Web层的解决方案 358
18.4 EJB层技术 360
18.4.1 EJB组件结构 361
18.4.2 EJB层的目的 362
18.4.3 EJB层的解决方案 363
18.5 本章小结 365
第19章 J2ME概述 366
19.1 J2ME综述 366
19.2 CLDC介绍 367
19.2.1 CLDC类库介绍 368
19.2.2 MIDLET介绍 369
19.2.3 MIDlet界面 370
19.3 CDC概述 371
19.4 本章小结 372
第20章 Java跨平台特性 373
20.1 可移植性 373
20.1.1 源代码可移植性 373
20.1.2 CPU可移植性 373
20.1.3 操作系统可移植性 374
20.2 解决国际化问题 374
20.2.1 Java类包 375
20.2.2 参数化解决方法 376
20.2.3 处理提示和帮助 376
20.3 编写跨平台Java程序的注意事项 378
20.4 本章小结 380
第21章 Java泛型程序设计 381
21.1 简单泛型类的定义 381
21.2 泛型方法 382
21.3 类型变量的限定 383
21.4 泛型代码和虚拟机 384
21.4.1 翻译泛型表达式 386
21.4.2 翻译泛型方法 386
21.4.3 遗留代码调用 387
21.5 约束与限定 388
21.5.1 基本类型 388
21.5.2 运行时类型查询 388
21.5.3 异常 388
21.5.4 数组 389
21.5.5 泛型类型的实例化 389
21.5.6 静态上下文 390
21.5.7 擦除后的冲突 390
21.6 泛型类型的继承规则 391
21.7 通配符类型 392
21.7.1 通配符的超类型限定 392
21.7.2 无限定通配符 394
21.7.3 通配符抓取 394
21.8 反射和泛型 398
21.8.1 使用Class<T>参数进行类型 398
21.8.2 虚拟机中的泛型类型信息 398
21.9 本章小结 401
第22章 Java常用类和包 402
22.1 java.io包 402
22.1.1 序列化 402
22.1.2 字节流 402
22.1.3 字符流 406
22.1.4 字节流与字符流的转化 410
22.1.5 文件处理 411
22.2 java.lang包 414
22.2.1 Comparable接口 414
22.2.2 Runnable接口 414
22.2.3 包装类 414
22.2.4 Object类 422
22.2.5 字符串处理 424
22.2.6 System类 429
22.2.7 Thread类 432
22.2.8 Throwable类 434
22.3 java.util包 434
22.3.1 Collection接口 434
22.3.2 Iterator接口 437
22.3.3 List接口 437
22.3.4 ListIterator接口 440
22.3.5 ArrayList类 441
22.3.6 LinkedList类 442
22.3.7 Stack类 445
22.3.8 Vector类 445
22.3.9 应用实例 449
22.4 本章小结 450
第23章 Java编码规范 451
23.1 概述 451
23.2 基本原则 451
23.2.1 取个好名字 451
23.2.2 三种Java注释 452
23.3 成员方法 452
23.3.1 方法命名 452
23.3.2 注释 453
23.3.3 编写清晰、易懂的代码 454
23.3.4 小技巧 454
23.4 成员变量 455
23.4.1 普通变量的命名 455
23.4.2 窗口组件的命名 455
23.4.3 常量的命名 455
23.4.4 注释 455
23.5 类和接口 455
23.5.1 类和接口的命名 455
23.5.2 注释 455
23.6 Java源文件范例 456
23.7 本章小结 457
第24章 使用Eclipse进行Java程序开发 458
24.1 建立Java项目 458
24.2 建立Java类别 459
24.3 代码功能 460
24.3.1 Code Completion 460
24.3.2 Code Assist 460
24.4 执行Java程序 461
24.5 Java实时运算簿页面(Java Scrapbook Page) 463
24.6 自定义开发环境 465
24.6.1 程序代码格式 465
24.6.2 程序代码产生模板 465
24.6.3 Javadoc批注 467
24.7 产生getter与setter 469
24.8 建立JAR档案 470
24.8.1 建立新的JAR档案 470
24.8.2 设定进阶选项 471
24.8.3 定义JAR档案文件的manifest 472
24.8.4 重新产生JAR档案文件 473
24.9 建立Javadoc文件 474
24.9.1 选取产生Javadoc用的类型 474
24.9.2 为标准doclet配置Javadoc自变量 474
24.9.3 配置Javadoc自变量 475
24.10 工作集(Working Sets) 475
24.10.1 新增工作集 475
24.10.2 隐藏[导览器]视图中的档案 477
24.10.3 显示[导览器]视图中的档案 478
24.11 本章小结 478
附录A J2SDK及Java集成开发环境 479
A.1 J2SDK工具 479
A.1.1 Java程序启动器——Java 479
A.1.2 Java编译器——Javac 480
A.1.3 小应用程序浏览器——AppletViewer 480
A.1.4 Java反编译器——Javap 482
A.1.5 Java文档生成工具——Javadoc 482
A.1.6 Java打包工具——jar 482
A.2 Java集成开发环境 486
附录B Java站点资源 487
附录C Java关键字 488
附录D JDK 5.0重要更新及JDK 6.0 490
D.1 增强的for循环语句 490
D.2 泛型数组列表 490
D.3 自动打包 491
D.4 变量参数列表 491
D.5 协变的返回类型 491
D.6 静态导入 492
D.7 控制台输入 492
D.8 格式化输出 492
D.9 内容窗格授权 493
D.10 Unicode编码点 493
D.11 构建字符串 493
D.12 JDK 6.0概览 494