第一篇 环境准备篇 2
第1章 初出茅庐:走进Java 2
1.1 Java是什么 2
1.2 Java历史背景 2
1.3 Java平台的3个版本 2
1.4 Java语言特点 2
1.5 Java类库概述 3
1.6 Java的工作方式 4
1.7 Java语言的前景 4
1.8 小结 5
1.9 习题 5
第2章 拨云见日:Java语言的环境配置 7
2.1 操作系统要求 7
2.2 下载与安装JDK 7 7
2.2.1 JDK 7的下载 7
2.2.2 JDK 7的安装 9
2.2.3 设置环境变量 10
2.2.4 测试环境变量是否配置成功 12
2.3 第一个Java程序——HelloWorld 12
2.3.1 编写HelloWorld 12
2.3.2 编译运行 13
2.3.3 分析结构 14
2.4 小结 14
2.5 习题 14
第3章 见龙在田:开发工具介绍 17
3.1 UltraEdit和EditPlus编辑器 17
3.2 集成开发工具介绍 17
3.2.1 JBuilder简介 17
3.2.2 NetBeans简介 17
3.2.3 Eclipse简介 17
3.2.4 下载Eclipse 18
3.3 使用Eclipse开发第一个程序——HelloWorld 19
3.4 小结 22
3.5 习题 23
第二篇 Java语法篇 25
第4章 稳扎马步:Java编程基础 25
4.1 注释 25
4.2 标识符和关键字 26
4.2.1 命名标识符的规则 26
4.2.2 关键字 26
4.3 变量和常量 27
4.3.1 变量 27
4.3.2 常量 27
4.4 数据基本类型 28
4.4.1 整型 28
4.4.2 浮点型 29
4.4.3 字符型 29
4.4.4 逻辑型 30
4.5 数据类型之间的转换 30
4.5.1 自动类型转换 31
4.5.2 强制类型转换 31
4.6 JAVA中的运算符 32
4.6.1 算术运算符 32
4.6.2 关系运算符 34
4.6.3 逻辑运算符 34
4.6.4 赋值运算符 35
4.6.5 位运算符 35
4.6.6 移位运算符 37
4.6.7 三元运算符 38
4.6.8 对象运算符 39
4.7 运算符的优先级 39
4.8 Java语言的编码规范 40
4.8.1 语法规范 40
4.8.2 代码编写规范 40
4.9 本章知识点综合应用 41
4.9.1 转换基本数据类型 41
4.9.2 Java的运算符 43
4.10 小结 50
4.11 习题 50
第5章 白鹤亮翅:程序控制语句 52
5.1 条件语句 52
5.1.1 if语句 52
5.1.2 switch语句 55
5.1.3 if与switch的区别 56
5.2 循环语句 57
5.2.1 for循环结构 57
5.2.2 while循环结构 58
5.2.3 do-while循环结构 59
5.2.4 while与do-while的区别 60
5.3 break和continue语句 61
5.3.1 break语句 61
5.3.2 continue语句 62
5.3.3 break与continue的区别 63
5.4 本章知识点综合应用 63
5.4.1 控制程序的流程 63
5.4.2 计算阶乘 66
5.5 小结 67
5.6 习题 67
第6章 知己知彼:面向对象程序设计 69
6.1 面向对象的基本概念 69
6.1.1 面向过程与和面向对象的程序设计 69
6.1.2 对象和封装 69
6.1.3 类和实例 70
6.2 类 71
6.2.1 类的定义 71
6.2.2 成员变量 72
6.2.3 成员方法 74
6.2.4 构造方法 76
6.2.5 main()方法 76
6.2.6 参数的传递 77
6.2.7 类对象的创建、使用和清除 78
6.3 包 80
6.3.1 包的作用 80
6.3.2 包的定义 80
6.3.3 运行包中的类 81
6.3.4 引入包中的类 81
6.4 类中变量和方法的访问权限 82
6.4.1 公有类型变量和方法 83
6.4.2 受保护类型变量和方法 83
6.4.3 私有类型变量和方法 84
6.5 类的继承 85
6.5.1 继承的概念 86
6.5.2 继承的实现——创建子类 86
6.5.3 继承数据成员和方法 87
6.5.4 覆盖 88
6.5.5 继承中要注意的问题 90
6.6 类的多态性 90
6.7 抽象类 92
6.7.1 抽象类的定义 92
6.7.2 抽象类实例 92
6.8 接口 93
6.8.1 接口的定义 93
6.8.2 接口的使用 94
6.8.3 接口的继承 95
6.9 内部类 96
6.9.1 匿名类(anonymous class) 96
6.9.2 静态类(static class) 97
6.9.3 成员类(member class) 97
6.9.4 局部类(local class) 98
6.10 类相关关键字 99
6.10.1 this关键字 99
6.10.2 static修饰符 99
6.10.3 final修饰符 101
6.10.4 super关键字 103
6.11 本章知识点综合应用 104
6.11.1 Java的参数传递 104
6.11.2 自定义形状类 105
6.11.3 方法和变量在继承时的覆盖与隐藏 110
6.12 小结 114
6.13 习题 114
第7章 稳扎稳打:数组 116
7.1 一维数组 116
7.1.1 一维数组的声明 116
7.1.2 一维数组的创建 116
7.1.3 一维数组的初始化 116
7.1.4 一维数组元素的使用 117
7.1.5 一维数组元素的默认值 118
7.2 二维数组 119
7.2.1 二维数组声明 119
7.2.2 二维数组的创建 119
7.2.3 二维数组的初始化 120
7.2.4 二维数组的遍历 120
7.3 数组的相关操作 121
7.3.1 数组长度 121
7.3.2 数组填充 121
7.3.3 数组复制 122
7.3.4 数组比较 123
7.4 数组排序 123
7.4.1 sort函数排序 123
7.4.2 冒泡排序 124
7.5 本章知识点综合应用 125
7.5.1 使用Arrays 125
7.5.2 求质数 127
7.5.3 动态调整数组长度 129
7.6 小结 130
7.7 习题 131
第8章 借花献佛:集合 133
8.1 Java集合框架 133
8.2 Collection接口 133
8.2.1 转换构造方法 133
8.2.2 Collection接口的定义 133
8.2.3 Collection接口的基本操作 134
8.2.4 遍历Collection接口 134
8.2.5 Collection接口的批量操作 135
8.2.6 Collection接口的数组操作 136
8.3 Set接口 136
8.3.1 Set接口的定义 136
8.3.2 Set接口的基本操作 137
8.3.3 Set接口的批量操作 138
8.3.4 Set接口的数组操作 139
8.4 List接口 139
8.4.1 List接口的定义 140
8.4.2 从Collection继承的操作 140
8.4.3 按位置访问和查找操作 141
8.4.4 List迭代方法 142
8.5 Map接口 143
8.5.1 Map接口的定义 143
8.5.2 Map接口的基本操作 144
8.5.3 Map接口的批量操作 145
8.6 实现 145
8.6.1 实现的类型 146
8.6.2 Set接口的实现 147
8.6.3 List接口的实现 148
8.6.4 Map接口的实现 148
8.7 本章知识点综合应用 149
8.7.1 ArrayList、Vector和LinkedList 149
8.7.2 对List排序 154
8.7.3 对Map排序 156
8.8 小结 158
8.9 习题 158
第9章 点石成金:字符串处理 160
9.1 字符类 160
9.1.1 Character字符包装器类 160
9.1.2 转义字符序列 161
9.1.3 常用构造函数 161
9.1.4 字符的比较 162
9.1.5 取字符对象的值 162
9.2 字符串String 163
9.2.1 字符串声明与赋值 163
9.2.2 常用构造函数 163
9.2.3 获取字符串长度 165
9.3 字符串常用操作 166
9.3.1 字符串连接 166
9.3.2 字符串比较 167
9.3.3 字符串截取 168
9.3.4 字符串查找 169
9.3.5 字符串大小写转换 170
9.3.6 字符串内容的替换 171
9.3.7 获取字符串某位置的字符 172
9.4 字符串其他操作 172
9.5 字符串数组 173
9.5.1 字符串数组的构造函数 174
9.5.2 字符串数组的属性及常用方法 174
9.6 字符串缓存类StringBuffer 175
9.6.1 常用构造函数 175
9.6.2 字符串缓存与字符串的转化 176
9.6.3 字符串缓存扩充 177
9.6.4 字符串缓存插入 177
9.7 字符串缓存的其他操作 178
9.8 字符串标记类 179
9.8.1 常用构造函数 179
9.8.2 常用方法 179
9.9 本章知识点综合应用 180
9.9.1 使用String 180
9.9.2 基本数据类型与字符串的转化 184
9.9.3 使用StringBuffer 186
9.10 小结 190
9.11 习题 190
第三篇 Java编程提高篇 192
第10章 云行雨施:Java Swing编程 192
10.1 Swing的特点 192
10.2 Swing容器 192
10.2.1 JFrame容器 192
10.2.2 JPanel容器 195
10.3 创建图形界面程序 196
10.4 Swing常用组件 197
10.4.1 按钮组件JButton 197
10.4.2 复选框组件JCheckBox 198
10.4.3 单选按钮组件JRadioButton 198
10.4.4 文本框组件JTextField 198
10.4.5 密码框组件JPasswordField 199
10.4.6 组合框组件JComboBox 199
10.4.7 滑块组件JSlider 199
10.4.8 微调组制组件JSpinner 199
10.4.9 菜单组件JMenu 200
10.5 不可编辑的信息显示组件 200
10.5.1 标签组件JLabel 200
10.5.2 进度条组件JProgressBar 201
10.5.3 工具提示组件JToolTip 201
10.6 Swing高级组件 202
10.6.1 颜色选择器JColorChooser 202
10.6.2 文件选择器JFileChooser 202
10.6.3 文本编辑组件JEditorPane和JTextPane 203
10.6.4 文本区组件JTextArea 204
10.6.5 表组件JTable 204
10.6.6 树组件JTree 205
10.6.7 面板组件JPanel 206
10.6.8 滚动面板JScrollPane 207
10.6.9 拆分面板JSplitPane 207
10.6.10 选项卡面板JTabbedPane 208
10.6.11 工具栏JToolBar 208
10.7 本章知识点综合应用 209
10.7.1 一个圆形的按钮 209
10.7.2 捕捉屏幕 211
10.7.3 缩放图片 214
10.8 小结 219
10.9 习题 219
第11章 十拿九稳:标准布局 222
11.1 标准布局管理器简介 222
11.1.1 BorderLayout边框布局 222
11.1.2 BoxLayout盒状布局 223
11.1.3 CardLayout卡片布局 224
11.1.4 FlowLayout流动布局 225
11.1.5 GridLayout网格布局 226
11.1.6 GridBagLayout网格包布局 227
11.2 使用布局管理器技巧 228
11.2.1 设置布局管理器 228
11.2.2 向容器中添加组件 229
11.2.3 提供组件大小和排列策略 229
11.2.4 设置组件之间的间隙 229
11.2.5 设置容器的语言方向 230
11.3 本章知识点应用 231
11.3.1 设计用户登录界面 231
11.3.2 日历 235
11.4 小结 241
11.5 习题 242
第12章 料事如神:Java异常处理 244
12.1 Java中的异常 244
12.2 异常处理 245
12.2.1 tyy语句 246
12.2.2 catch语句 247
12.2.3 异常类型 247
12.2.4 异常处理原则 248
12.3 Throwable类 249
12.3.1 Throwable类的定义和方法 249
12.3.2 异常类的继承关系 250
12.3.3 使用throws抛出异常 251
12.3.4 使用throw抛出异常 252
12.3.5 运行期异常 252
12.4 自定义异常 253
12.4.1 创建自定义异常类 253
12.4.2 处理自定义异常 254
12.5 finally子句 255
12.6 异常的几个问题 256
12.6.1 异常丢失 256
12.6.2 构造函数中的异常处理 257
12.6.3 异常匹配 258
12.7 异常的优点 260
12.8 本章知识点综合应用 262
12.8.1 throw、throws、try和catch 262
12.8.2 自定义异常类 264
12.8.3 使用finally 266
12.9 小结 269
12.10 习题 270
第13章 棒打双狗:Java的输入/输出处理 272
13.1 什么是流 272
13.2 字节流 272
13.2.1 输入流类InputStream 272
13.2.2 输出流类OutputStream 274
13.3 字符流 275
13.3.1 Writer类 275
13.3.2 Reader类 277
13.3.3 读取Unicode字符 278
13.3.4 读取字符文件 279
13.4 File类 281
13.4.1 创建文件夹 281
13.4.2 创建文件 282
13.4.3 复制文件 283
13.4.4 删除文件 284
13.4.5 删除文件夹 284
13.5 流的运用 286
13.5.1 文件流 286
13.5.2 管道流 287
13.5.3 I/O重定向 287
13.5.4 过滤流 288
13.5.5 序列化对象 289
13.6 本章知识点综合应用 290
13.6.1 获取文件的属性信息 290
13.6.2 创建文件和目录 292
13.6.3 删除文件和目录 296
13.7 小结 299
13.8 习题 299
第14章 以柔克刚:多线程编程 301
14.1 线程 301
14.1.1 线程的组成 301
14.1.2 多线程概念 301
14.1.3 Java中的多线程 302
14.2 创建线程 302
14.2.1 继承Thread类创建线程 302
14.2.2 实现Runnable接口创建线程 303
14.3 线程的状态 305
14.4 线程的优先级 306
14.5 线程的同步 307
14.5.1 同步方法 307
14.5.2 固定锁和同步 308
14.6 线程的控制 310
14.6.1 启动线程 310
14.6.2 挂起和恢复线程 310
14.6.3 线程的休眠方法 310
14.6.4 线程的加入方法 312
14.6.5 中断线程 314
14.6.6 结束线程 314
14.7 线程间通信 315
14.7.1 PipedWriter类详解 315
14.7.2 PipedReader类详解 316
14.7.3 管道通信实例 317
14.8 多线程的死锁问题 318
14.9 多线程的缺点 319
14.10 本章知识点综合应用 319
14.10.1 定义和启动线程 319
14.10.2 线程的协作 321
14.10.3 线程优先级 324
14.11 小结 325
14.12 习题 325
第15章 李代桃僵:网络编程 327
15.1 网络编程基础 327
15.1.1 什么是TCP协议 327
15.1.2 什么是IP协议 327
15.1.3 什么是TCP/IP 327
15.1.4 什么是UDP协议 328
15.1.5 什么是端口 328
15.1.6 什么是套接字 328
15.1.7 java.net包 328
15.2 InetAddress类 329
15.3 URL网络编程 330
15.3.1 URL 330
15.3.2 符语法 331
15.3.3 URLConnection类 332
15.4 TCP的网络编程 332
15.4.1 Socket 332
15.4.2 重要的SocketAPI 333
15.4.3 服务器端程序设计 334
15.4.4 客户端程序设计 336
15.5 UDP网络编程 336
15.5.1 UDP通信概念 337
15.5.2 UDP的特性 337
15.5.3 UDP的应用 338
15.5.4 UDP与TCP的区别 338
15.6 本章知识点综合应用 339
15.6.1 获取URL的信息 339
15.6.2 HTTP客户端 341
15.6.3 基本的Socket编程 343
15.7 小结 348
15.8 习题 349
第16章 一箭双雕:内存管理技术 351
16.1 程序中“垃圾”是什么 351
16.2 “垃圾”收集器 354
16.3 如何收集“垃圾” 356
16.3.1 finalize重写 357
16.3.2 finalize安全问题 358
16.4 非线程“垃圾” 361
16.5 线程“垃圾” 362
16.6 本章知识点综合应用 365
16.6.1 弱引用实例 365
16.6.2 软引用实例 367
16.6.3 最终守护者实例 369
16.7 小结 371
16.8 习题 371
第17章 成人之美:处理图像 373
17.1 加载与绘制 373
17.2 图标 376
17.2.1 Icon接口 376
17.2.2 ImageIcon类 379
17.3 处理图像编码 380
17.3.1 JPEG编码器 381
17.3.2 GifEncoder编码器 382
17.4 图像抓取 384
17.4.1 createScreenCapture方法 384
17.4.2 抓屏功能使用实例 384
17.5 图像滤镜的开发 388
17.6 RGB色彩通道过滤 390
17.7 卷积滤镜 391
17.8 本章知识点综合应用 393
17.9 小结 402
17.10 习题 402
第18章 里应外合:反射与注解的应用 404
18.1 反射概念 404
18.2 Class类的使用实例 404
18.3 数组与Class类 408
18.4 精确判断对象类型 409
18.4.1 Field类的知识与使用 410
18.4.2 Method类的知识与使用 412
18.4.3 Constructor类的知识与使用 414
18.5 反射与修饰符 416
18.6 取消访问限制 420
18.7 利用反射动态创建数组对象 422
18.8 本章知识点综合应用 423
18.8.1 instanceof操作符 423
18.8.2 获取类的信息 424
18.9 小结 431
18.10 习题 431
第19章 如虎添翼:使用JDBC连接数据库 433
19.1 数据库 433
19.1.1 数据库简介 433
19.1.2 SQL语句 433
19.2 JDBC简介 435
19.2.1 什么是JDBC 435
19.2.2 JDBC与Java结合 435
19.2.3 JDBC如何实现数据库的平台无关性 435
19.3 JDBC中的常用类和接口 436
19.3.1 驱动程序管理类(DriverManager) 436
19.3.2 声明类(Statement) 436
19.3.3 数据库连接类(Connection) 437
19.3.4 结果集合类(ResultSet) 437
19.4 如何实现数据库的连接 438
19.4.1 加载合适的数据库驱动程序 438
19.4.2 数据库配置问题 438
19.4.3 建立数据库连接并获得Statement对象 440
19.4.4 执行数据库查询语句 440
19.4.5 获得查询结果 441
19.4.6 关闭数据库连接 441
19.4.7 完整的示例程序 441
19.5 元数据 442
19.5.1 数据库的DatabaseMetaData元数据 443
19.5.2 结果集的ResultSetMetaData元数据 443
19.6 批处理 444
19.6.1 批处理规范 444
19.6.2 批处理举例 444
19.7 本章知识点综合应用 445
19.7.1 访问数据库 445
19.7.2 对数据库进行查询 446
19.7.3 增加、修改、删除数据库中的数据 447
19.8 小结 448
19.9 习题 448
第20章 同甘共苦:使用Swing组件创建数据库应用程序 450
20.1 JComboBox组件创建数据库应用程序 450
20.1.1 创建JComboBox 450
20.1.2 DefaultComboBoxModel创建JComboBox 452
20.2 JList组件创建数据库应用程序 453
20.2.1 DefaultListModel创建JList 453
20.2.2 ListModel创建JList 454
20.3 JTable组件创建数据库应用程序 456
20.3.1 JTable相关的类 456
20.3.2 DefaultTableModel创建JTable 457
20.4 本章知识点综合应用 458
20.4.1 使用ResultSet更新数据库 458
20.4.2 使用RowSet 462
20.5 小结 472
20.6 习题 473
第21章 明修栈道:JSP技术 475
21.1 JSP简介 475
21.1.1 MVC模式 475
21.1.2 JSP技术的优点 476
21.2 基本语法 476
21.2.1 注释 476
21.2.2 JSP指令 477
21.3 JSP脚本元素 480
21.3.1 JSP声明 480
21.3.2 JSP表达式 481
21.4 JSP动作 481
21.4.1 include动作元素 482
21.4.2 forword动作元素 482
21.4.3 plugin动作元素 483
21.4.4 param动作元素 483
21.4.5 useBean、setProperty和getProperty动作元素 484
21.5 JSP内置对象 486
21.5.1 request对象 486
21.5.2 response对象 488
21.5.3 session对象 488
21.5.4 application对象 489
21.5.5 out对象 491
21.5.6 config对象 491
21.5.7 exception对象 492
21.5.8 pageContext对象 492
21.6 本章知识点综合应用 493
21.6.1 获取客户端的真实IP地址 493
21.6.2 设置和读取Cookie 495
21.6.3 JSP无刷新聊天室 499
21.7 小结 505
21.8 习题 505
第22章 暗度陈仓:Servlet技术 507
22.1 Servlet简介 507
22.1.1 什么是Servlet 507
22.1.2 Servlet的生命周期 507
22.1.3 Servlet的基本结构 508
22.2 HTTPServlet应用编程接口 508
22.2.1 init()方法 509
22.2.2 service()方法 509
22.2.3 doGet()方法 509
22.2.4 doPost()方法 509
22.2.5 destroy()方法 509
22.2.6 GetServletConffig()方法 510
22.2.7 GetServletInfo()方法 510
22.3 创建HttpServlet 510
22.4 调用HttpServlet 512
22.4.1 由URL调用Servlet 512
22.4.2 在<FORM>标记中指定Servlet 512
22.4.3 在<SERVLET>标记中指定Servlet 513
22.4.4 在ASP文件中调用Servlet 513
22.5 Servlet之间的跳转 514
22.5.1 转向Forward 514
22.5.2 重定向Redirect 515
22.6 本章知识点综合应用 515
22.6.1 用Servlet生成图形验证码 515
22.6.2 用Servlet实现分页查看数据库 520
22.7 小结 534
22.8 习题 534
第四篇 开发实战篇 536
第23章 小试牛刀:界面游戏拼图 536
23.1 游戏简介 536
23.2 素材准备 537
23.3 游戏设计 537
23.3.1 加载和拆分图片 537
23.3.2 实现图片的随机排列 538
23.3.3 实现图片的移动 538
23.3.4 参考图像的缩放 539
23.4 开发步骤 539
23.4.1 自定义按钮类设计:ImageButton类 540
23.4.2 游戏界面布局:构造窗体类PuzzleGame 540
23.4.3 加载和拆分图像 541
23.4.4 创建拼接图面板 542
23.4.5 创建显示参考图像的面板 543
23.4.6 创建菜单栏 545
23.4.7 实现按钮事件监听器类 547
23.4.8 设置窗体在屏幕中出现的位置 547
23.4.9 编写main()方法 548
23.4.10 运行测试 548
23.5 打包部署 548
23.6 小结 549
第24章 鹤啸九天:学生信息管理系统 551
24.1 需求分析 551
24.2 系统设计 551
24.3 登录模块 551
24.3.1 设计构想 551
24.3.2 实现登录模块 552
24.4 学生信息模块相关流程 554
24.4.1 设计构想 554
24.4.2 实现学生信息主界面 554
24.4.3 增加学生信息 557
24.4.4 删除学生信息 560
24.4.5 修改学生信息 563
24.4.6 基本学生信息查询 567
24.4.7 成绩查询 571
24.4.8 退出系统 575
24.5 教师信息模块相关流程 576
24.5.1 主界面 576
24.5.2 增加老师信息 579
24.5.3 删除老师信息 583
24.5.4 修改老师信息 586
24.5.5 录入成绩 590
24.5.6 删除成绩 593
24.5.7 修改成绩 596
24.5.8 基本信息查询 600
24.5.9 退出系统 604
24.6 小结 606