第一篇 Java技术入门 1
第1章 Java语言概述 1
1.1 Java的语言特点 1
1.1.1 Java语言与C/C++的区别 1
1.1.2 Java面向对象的特性和多态性 2
1.1.3 Java的平台无关性 4
1.1.4 Java分布式应用和多线程的特点 4
1.1.5 Java程序的可靠性、安全性 5
1.1.6 Java小程序和应用程序 5
1.2 Java的不同版本 6
1.3 如何才能学好Java 6
1.4 什么是面向对象的程序设计 7
1.4.1 什么是面向对象 7
1.4.2 模型分析:造房子 7
1.4.3 设计面向对象程序的思路 8
1.4.4 设计面向对象程序的技巧 8
1.4.5 面向对象与面向过程设计的不同 8
1.5 常见面试题分析 10
1.5.1 初学者如何选择Java参考书 10
1.5.2 Java应用在哪些方面 10
1.6 本章习题 11
第2章 最简单的Java程序 12
2.1 Java程序的开发流程 12
2.2 开发工具的选择 12
2.2.1 开发工具的种类 13
2.2.2 开发工具的安装 14
2.2.3 开发工具的使用介绍 15
2.3 Java编程环境 17
2.3.1 J2SE的下载和安装 17
2.3.2 如何设置ClassPath变量 18
2.3.3 如何设置Path变量 18
2.3.4 如何测试环境变量 19
2.4 编写最简单的程序 19
2.4.1 编写程序代码 19
2.4.2 分析程序代码 20
2.5 常见面试题分析 20
2.5.1 Javac xx x.java顺利通过,但Java xxx显示“NoClassDefFoundError?” 20
2.5.2 导致错误“Exception in thread main java.lang.NoSuchMethodError:main”的原因 20
2.6 本章习题 20
第3章 Java语言基础 22
3.1 Java命名规则 22
3.2 数据类型 22
3.2.1 基本数据类型 23
3.2.2 引用数据类型 25
3.3 数据类型转换 26
3.3.1 隐式数据类型转换 26
3.3.2 显式数据类型转换 26
3.4 变量与常量 27
3.4.1 变量 27
3.4.2 常量 27
3.5 Java运算符 28
3.5.1 数学运算符 28
3.5.2 关系运算符 29
3.5.3 逻辑运算符 30
3.5.4 位运算符 31
3.5.5 位移运算符 31
3.5.6 “?:”运算符 32
3.5.7 运算符的优先顺序 32
3.6 常见面试题分析 32
3.6.1 简述变量及其作用范围 32
3.6.2 Java的变量分哪两种大的数据类型 33
3.6.3 Java中equal()和“==”的区别是什么 33
3.6.4 Java中的三元运算符是什么 33
3.7 本章习题 33
第4章 程序流程控制 34
4.1 流程控制概述 34
4.2 条件语句 34
4.3 分支语句 35
4.3.1 简单的if-else语句 35
4.3.2 if-else多分支语句 36
4.3.3 if嵌套语句 36
4.3.4 switch语句 37
4.3.5 分支语句中的return 38
4.4 循环语句 38
4.4.1 while循环语句 39
4.4.2 do-while循环语句 39
4.4.3 for循环语句 40
4.5 跳转语句 41
4.5.1 break跳转语句 41
4.5.2 continue跳转语句 41
4.6 常见面试题分析 42
4.6.1 Java提供了哪几种循环结构,它们各自的特点是什么 42
4.6.2 break和continue关键词的掌握 42
4.6.3 for语句的循环条件 43
4.7 本章习题 44
第5章 数组 45
5.1 一维数组 45
5.1.1 定义一维数组 45
5.1.2 初始化一维数组 45
5.1.3 使用一维数组 46
5.2 二维数组 47
5.2.1 定义二维数组 47
5.2.2 初始化二维数组 48
5.2.3 使用二维数组 48
5.3 多维数组 50
5.3.1 定义多维数组 50
5.3.2 初始化多维数组 50
5.3.3 使用多维数组 51
5.4 数组操作 52
5.4.1 数组的复制 52
5.4.2 数组的填充 52
5.4.3 数组的比较 53
5.4.4 数组的排序 54
5.4.5 数组的查找 55
5.5 常见面试题分析 57
5.5.1 如何理解数组在Java中作为一个类 57
5.5.2 new Object[5]语句是否创建了5个对象 57
5.5.3 二维数组的长度是否固定 57
5.6 本章习题 57
第6章 字符串操作 58
6.1 字符串 58
6.1.1 字符串分类 58
6.1.2 声明字符串 58
6.1.3 创建字符串 59
6.2 字符串操作 60
6.2.1 字符串连接 60
6.2.2 比较字符串 60
6.2.3 获取字符串长度 60
6.2.4 复制字符串 60
6.2.5 获得子串 61
6.2.6 获取指定位置的字符 61
6.2.7 更改大小写 62
6.2.8 分割字符串 62
6.2.9 更改字符串中的部分字符 62
6.3 格式化字符串 63
6.3.1 一般类型格式化 63
6.3.2 日期和时间类型格式 63
6.4 常见面试题分析 64
6.4.1 字符串字面量是否自动生成一个String对象 64
6.4.2 StringBuffer和StringBuilder存在的作用是什么 64
6.4.3 如何使用指定的字符集生成String对象 64
6.5 本章习题 64
第7章 容器类简介 65
7.1 容器简介 65
7.1.1 容器框架 65
7.1.2 Java容器框架的优势与劣势 67
7.2 容器接口的分类 68
7.2.1 Collection接口定义与应用 68
7.2.2 Map接口定义与应用 70
7.3 集合容器Set 72
7.3.1 Set接口定义与应用 72
7.3.2 Set实现 75
7.4 列表容器List 78
7.4.1 List接口定义与应用 79
7.4.2 List实现 81
7.4.3 使用List实现堆栈和队列 81
7.5 Map容器 84
7.5.1 Map实现 84
7.5.2 正确认识hashCode()方法 87
7.6 迭代器 89
7.6.1 迭代器接口 89
7.6.2 迭代器的使用 90
7.7 常见面试题分析 92
7.7.1 什么是集合 92
7.7.2 迭代器是什么 92
7.7.3 HashMap和HashTable的区别 92
7.8 本章习题 93
第二篇 面向对象技术 95
第8章 面向对象技术导论 95
8.1 对象简介 95
8.1.1 程序设计中的抽象化认识 95
8.1.2 如何获得和操控对象 96
8.1.3 对象的存储空间 96
8.1.4 对象的生存空间 98
8.2 一种新的数据类型:类(Class) 98
8.2.1 类(Class)概述 98
8.2.2 类的属性详解 99
8.2.3 类的方法详解 100
8.2.4 一种特殊的方法——类的构造函数 102
8.2.5 关键字static 103
8.2.6 关键字this 104
8.3 访问权限 106
8.3.1 包 106
8.3.2 设置Java访问权限 107
8.4 继承 110
8.4.1 什么是继承 110
8.4.2 如何实现继承 110
8.4.3 super关键字 112
8.5 多态 113
8.5.1 什么是多态 113
8.5.2 方法的重载 115
8.5.3 抽象类和抽象函数 117
8.6 接口 119
8.6.1 接口定义 119
8.6.2 接口和抽象类 120
8.6.3 接口的使用 120
8.7 常见面试题分析 122
8.7.1 父类构造函数是先于子类构造函数运行吗 122
8.7.2 哪一个构造函数能添加到标记处而不会发生编译错误 123
8.7.3 请说出面向对象的特征有哪些 124
8.8 本章习题 124
第9章 对象的初始化和清理 125
9.1 构造函数 125
9.1.1 默认构造函数 126
9.1.2 自定义构造函数 126
9.2 函数的重载 127
9.3 数据成员初始化 128
9.4 static成员初始化 130
9.5 对象的清理 134
9.6 常见面试题分析 134
9.6.1 如何理解Java的垃圾回收机制 134
9.6.2 Java中类构造函数的执行顺序 134
9.7 本章习题 135
第三篇 Java编程 137
第10章 多线程编程 137
10.1 线程概述 137
10.2 创建线程 138
10.2.1 继承Thread类创建线程 138
10.2.2 实现Runnable接口创建线程 139
10.3 线程的状态 140
10.4 线程的优先级 142
10.5 线程的同步 143
10.5.1 Java程序的资源共享 143
10.5.2 synchronized关键字 145
10.5.3 同步控制方法 146
10.5.4 同步控制块 148
10.6 线程的控制 149
10.6.1 启动线程 149
10.6.2 挂起和恢复线程 150
10.6.3 线程的休眠 150
10.6.4 等待和通知 151
10.6.5 结束线程 153
10.7 线程间通信 154
10.7.1 PipedWriter类详解 154
10.7.2 PipedReader类详解 155
10.7.3 管道通信实例 155
10.8 多线程的死锁问题 157
10.9 多线程的缺点 157
10.10 常见面试题分析 158
10.10.1 请说明进程和线程的区别 158
10.10.2 一个具有生命的线程有哪些状态 158
10.10.3 如何理解线程同步 158
10.10.4 哪些事件会导致线程死亡 159
10.11 本章习题 159
第11章 JDBC链接数据库 161
11.1 JDBC简介 161
11.1.1 什么是JDBC 161
11.1.2 JDBC的目标 161
11.1.3 JDBC如何实现数据库的平台无关性 162
11.2 JDBC中的常用类和接口 162
11.2.1 驱动程序管理类(DriverManager) 162
11.2.2 声明类(Statement) 162
11.2.3 数据库链接类(Connection) 163
11.2.4 结果集合类(ResultSet) 163
11.3 如何实现数据库的链接 164
11.3.1 加载合适的数据库驱动程序 164
11.3.2 数据库配置问题 164
11.3.3 建立数据库链接并获得Statement对象 165
11.3.4 执行数据库查询语句 166
11.3.5 获得查询结果 166
11.3.6 关闭数据库链接 166
11.3.7 完整的示例程序 166
11.4 数据库基本操作 168
11.4.1 创建数据库表 168
11.4.2 查询数据 169
11.4.3 添加数据 169
11.4.4 更改数据 169
11.4.5 删除数据 170
11.5 常见面试题分析 170
11.5.1 JDBC的工作原理是什么 170
11.5.2 如何使用连接池技术 170
11.5.3 如何使用SQL更改数据 170
11.6 本章习题 171
第12章 Java异常处理 172
12.1 理解异常 172
12.2 异常示例 172
12.3 Java异常处理 174
12.3.1 try区块 174
12.3.2 catch区块 175
12.3.3 Java异常规范 178
12.4 Throwable类及其子类 178
12.4.1 Throwable类的定义和方法 178
12.4.2 异常类的继承关系 180
12.4.3 异常重抛的例子 181
12.5 运行期异常 184
12.6 自定义异常 185
12.7 finally子句 189
12.7.1 执行finally子句 189
12.7.2 finally子句的必要性 191
12.8 异常的几个问题 192
12.8.1 异常丢失 193
12.8.2 构造函数中的异常处理 194
12.8.3 异常匹配 195
12.9 异常的优点 196
12.9.1 分离异常处理代码 197
12.9.2 按方法调用顺序向上传播错误 198
12.9.3 分组并区分错误类型 200
12.10 常见面试题分析 201
12.10.1 哪个类是所有异常的基础类 201
12.10.2 Java如何处理异常 201
12.10.3 如何使用throws 201
12.11 本章习题 202
第13章 Java的I/O处理 205
13.1 流(Stream)的概念 205
13.2 字符流 205
13.2.1 输入流类InputStream 205
13.2.2 输出流类OutputStream 206
13.3 字节流 207
13.3.1 Writer类 207
133.2 Reader类 209
13.4 File类 209
13.4.1 创建文件夹(目录) 210
13.4.2 创建文件 210
13.4.3 复制文件 212
13.4.4 删除文件 213
13.4.5 删除文件夹 214
13.5 I/O流的典型运用 215
13.5.1 文件流 215
13.5.2 读取内存数据 216
13.5.3 链接文件 218
13.5.4 管道流 219
13.5.5 随机访问文件 219
13.5.6 从标准输入读取 220
13.5.7 I/O重定向 221
13.5.8 过滤流 222
13.5.9 序列化对象 223
13.6 常见面试题分析 224
13.6.1 写一个复制文件的程序 224
13.6.2 什么是序列化 225
13.6.3 如何序列化和反序列化一个Java对象 225
13.7 本章习题 225
第14章 Java Swing编程 227
14.1 Swing容器 227
14.1.1 JFrame容器 227
14.1.2 JPanel容器 228
14.2 Swing的事件模型 230
14.2.1 制作一个按钮 230
14.2.2 实现按钮的事件监听 231
14.2.3 Swing的事件模型 232
14.3 Swing组件 233
14.3.1 按钮 234
14.3.2 图示(Icons) 234
14.3.3 文本 236
14.3.4 工具提示 237
14.3.5 单选按钮 237
14.3.6 复选框 239
14.3.7 组合框 240
14.3.8 列表框 241
14.3.9 消息框 243
14.3.10 菜单 249
14.3.11 页签式面板 251
14.3.12 弹出式菜单 253
14.3.13 工具条 254
14.3.14 进度条 256
14.3.15 对话框 257
14.3.16 文件对话框 258
14.3.17 边框 260
14.3.18 表模型 262
14.3.19 树模型 265
14.4 控制面板布局管理器 271
14.4.1 流布局管理器 271
14.4.2 边界布局管理器 273
14.4.3 网格布局管理器 274
14.4.4 盒子布局管理器 276
14.5 常见面试题分析 277
14.5.1 Swing事件模型的通用规则是什么 277
14.5.2 如何使用FlowLayout布局 278
14.6 本章习题 278
第四篇 Java分布式计算技术 279
第15章 Java网络编程 279
15.1 TCP/IP协议 279
15.1.1 IP协议和IP地址 279
15.1.2 TCP协议和端口 282
15.1.3 客户/服务器通信模型 282
15.2 UDP协议 283
15.3 基于Java的客户/服务器程序 283
15.3.1 Socket及其原语 284
15.3.2 创建服务器 285
15.3.3 创建客户端 286
15.4 Socket类详解 288
15.4.1 创建Socket 289
15.4.2 Socket类的getXX()方法 291
15.4.3 Socket类的setXX()方法 293
15.4.4 关闭Socket 297
15.5 SocketServer类 297
15.5.1 创建SocketServer 297
15.5.2 SocketServer类的两个重要方法 299
15.5.3 读取SockerServer信息 300
15.6 数据报通信 301
15.6.1 数据报通信简介 301
15.6.2 DatagramPacket类简介 302
15.6.3 DatagramSocket类简介 304
15.6.4 实现数据报通信 306
15.7 常见面试题分析 309
15.7.1 简述对TCP/IP协议的理解 309
15.7.2 Java的TCP编程模型是什么 309
15.7.3 UDP协议的通信特点是什么 309
15.8 本章习题 310
第16章 RMI技术 311
16.1 如何实现RMI程序 311
16.1.1 定义远端接口 312
16.1.2 定义远端对象 312
16.1.3 实现服务器对象的Stub和Skeleton 313
16.1.4 创建服务器程序 313
16.1.5 创建客户端程序 314
16.1.6 运行RMI程序 315
16.2 RMI的动态加载类 317
16.3 RMI的特点 317
16.4 常见面试题分析 318
16.4.1 简述RMI应用程序的组成 318
16.4.2 简述分布式对象应用程序的任务 318
16.5 本章习题 318
第17章 JSP技术 320
17.1 JSP技术概述 320
17.1.1 JSP的基本概念 320
17.1.2 JSP的运行原理 321
17.2 构建JSP运行、开发环境 321
17.2.1 JRE的安装 322
17.2.2 Tomcat的安装 323
17.2.3 开发工具的选择 325
17.2.4 建立和保存JSP文件 326
17.3 JSP编程基础 327
17.3.1 HTML标记 327
17.3.2 HTML表单 330
17.4 JSP基本语法 334
17.4.1 声明 334
17.4.2 表达式 335
17.4.3 脚本 335
17.4.4 注释 336
17.4.5 指令 336
17.4.6 动作 336
17.5 JSP指令 337
17.5.1 page指令 337
17.5.2 include指令 338
17.6 JSP动作 339
17.6.1 <jsp:include>动作 340
17.6.2 <jsp:useBean>动作 340
17.6.3 <jsp:setProperty>动作 341
17.6.4 <jsp:getProperty>动作 342
17.6.5 <jsp:forward>动作 343
17.6.6 <jsp:plugin>动作 343
17.7 JSP内部对象 345
17.7.1 request对象 345
17.7.2 response对象 347
17.7.3 pageContext对象 348
17.7.4 session对象 349
17.7.5 application对象 352
17.7.6 out对象 353
17.7.7 config对象 353
17.7.8 page对象 353
17.7.9 exception对象 354
17.7.10 内部对象的作用范围 354
17.8 常见面试题分析 355
17.8.1 JSP的运行机制是什么 355
17.8.2 JSP的内置对象及其用途是什么 355
17.8.3 page和request作用范围的区别是什么 355
17.9 本章习题 355
第18章 Java Bean技术 358
18.1 Java Bean技术概述 358
18.2 Java Bean编写规范 359
18.2.1 Bean组件的工作机制 359
18.2.2 Java Bean的编写要求 359
18.2.3 Java Bean的命名规范 359
18.2.4 Java Bean的包 359
18.2.5 Java Bean的结构 360
18.3 Java Bean属性 361
18.3.1 单值(Simple)属性 361
18.3.2 索引(Indexed)属性 361
18.3.3 关联(Bound)属性 362
18.3.4 约束(Constrained)属性 363
18.4 Java Bean方法 365
18.4.1 构造方法 365
18.4.2 访问方法 366
18.4.3 一般方法 366
18.5 Java Bean事件 366
18.5.1 事件模型 367
18.5.2 事件状态对象 368
18.5.3 事件监听者接口与事件监听者 368
18.5.4 事件监听者注册与注销 369
18.5.5 适配类 370
18.6 Java Bean在JSP中的应用 370
18.6.1 调用Java Bean 370
18.6.2 链接数据库Bean 371
18.6.3 通过Java Bean查询数据库 373
18.6.4 向数据库添加记录 374
18.6.5 修改数据库记录 376
18.6.6 删除数据库记录 378
18.7 常见面试题分析 379
18.7.1 JSP如何使用JavaBean 379
18.7.2 简述什么是JavaBean 380
18.8 本章习题 380
第19章 Servlet技术 383
19.1 Servlet概述 383
19.1.1 Servlet的特点 383
19.1.2 Servlet的应用范围 384
19.1.3 Servlet与JSP的关系 384
19.2 Servlet的基本架构 384
19.2.1 Servlet工作原理 384
19.2.2 Servlet接口 385
19.2.3 典型Servlet程序 385
19.3 Sevlet API 386
19.3.1 Servlet方法 386
19.3.2 常用的Servlet API 387
19.3.3 Servlet生命周期 389
19.4 Servlet开发 389
19.4.1 Servlet的基本代码 390
19.4.2 Servlet与表单交互 391
19.4.3 Servlet控制会话 392
19.5 常见面试题分析 395
19.5.1 Servlet的生命周期是怎样的 395
19.5.2 如何在Servlet里获取请求参数的值 395
19.5.3 什么是Servlet 395
19.6 本章习题 396
第20章 Java与XML技术 398
20.1 标记语言的发展史 398
20.2 HTML语言及其局限 398
20.2.1 HTML语言 398
20.2.2 HTML语言的局限性 399
20.3 XML语言 400
20.3.1 XML的优势 400
20.3.2 XML文档的基础知识 402
20.3.3 XML文档结构 406
20.4 创建XML文档 407
20.4.1 创建元素 407
20.4.2 创建空元素 408
20.4.3 元素属性 409
20.4.4 注释 409
20.4.5 实体 410
20.5 XML与Java 411
20.5.1 XML与Java结合理由 411
20.5.2 Java如何解析XML文档 411
20.6 DOM解析XML文档 412
20.6.1 DOM(文档对象模型) 412
20.6.2 DOM的结构及接口 413
20.6.3 DOM实现与核心API 413
20.6.4 基于DOM的树操作 413
20.7 常见面试题分析 416
20.7.1 简述HTML语言的局限性 416
20.7.2 简述XML的优势 417
20.8 本章习题 417
第五篇 Java编程实例 419
第21章 系统分析和设计 419
21.1 系统功能分析 419
21.2 数据库设计 420
21.3 系统总体设计 422
21.3.1 服务器端软件结构 422
21.3.2 客户端软件结构 425
第22章 服务器端功能模块的实现 430
22.1 启动服务器 430
22.2 服务器主界面 431
22.3 服务连接线程 436
22.4 为客户端提供功能服务模块 438
22.5 数据库连接模块 445
22.6 管理登录用户模块 447
22.7 显示用户信息模块 449
22.8 存储用户信息的JavaBean 451
22.9 实现头像显示功能的公用类 453
22.10 显示时间的公用类 455
22.11 设置窗口位置的公用类 455
第23章 客户端功能模块的实现 457
23.1 登录模块 457
23.2 客户端主界面 463
23.3 聊天模块 477
23.4 查找好友模块 483
23.5 显示好友信息模块 485
23.6 接收陌生人信息模块 488
23.7 更改用户信息模块 490
23.8 用户注册模块 497
23.9 显示版权信息 504