第1篇 基础篇 3
第1章 初识Java 3
1.1 Java语言概述 4
1.1.1 Java语言的历史 4
1.1.2 Java语言的现状 4
1.1.3 Java语言的面向对象特性 4
1.2 JDK的下载和安装 6
1.2.1 JDK下载 6
1.2.2 JDK安装 7
1.2.3配置JDK 9
1.2.4测试开发环境 11
1.3第一个Java程序 11
1.4本章小结 14
第2章 熟悉Eclipse开发工具 15
2.1熟悉Eclipse 16
2.1.1 Eclipse简介 16
2.1.2 Eclipse的下载与安装 16
2.1.3 Eclipse汉化 17
2.1.4 Eclipse工作台 21
2.1.5透视图与视图 22
2.1.6菜单栏 23
2.1.7工具栏 27
2.1.8“包资源管理器”视图 28
2.1.9“控制台”视图 28
2.2使用Eclipse 28
2.2.1创建Java项目 29
2.2.2创建Java类文件 29
2.2.3使用编辑器编写程序代码 30
2.2.4运行Java程序 32
2.3程序调试 32
2.4本章小结 33
第3章 Java语言基础 35
3.1 Java程序的基本结构 36
3.2标识符和关键字 37
3.2.1标识符 37
3.2.2关键字 38
3.3基本数据类型 38
3.3.1整数类型 39
3.3.2浮点类型 40
3.3.3字符类型 42
3.3.4布尔类型 43
3.4变量与常量 43
3.4.1声明变量 44
3.4.2声明常量 45
3.4.3变量的有效范围 45
3.5运算符 47
3.5.1赋值运算符 47
3.5.2算术运算符 48
3.5.3自增和自减运算符 49
3.5.4比较运算符 49
3.5.5逻辑运算符 50
3.5.6位运算符 51
3.5.7三元运算符 53
3.5.8运算符优先级 54
3.5.9范例1:不用其他变量实现两变量互换 55
3.5.10范例2:判断数字的奇偶性 56
3.6类型转换 56
3.6.1自动类型转换 56
3.6.2强制类型转换 57
3.6.3范例3:类型转换实战 58
3.7代码注释和编码规范 59
3.7.1代码注释 59
3.7.2编码规范 60
3.8经典范例 61
3.8.1经典范例1:判断某一年是否是闰年 61
3.8.2经典范例2:求球形的体积 61
3.9本章小结 62
3.10实战练习 62
第4章 流程控制 63
4.1复合语句 64
4.2条件语句 65
4.2.1 if条件语句 65
4.2.2 switch多分支语句 69
4.2.3范例1:验证登录信息的合法性 71
4.2.4范例2:为新员工分配部门 71
4.3循环语句 73
4.3.1 while循环语句 73
4.3.2 do…while循环语句 74
4.3.3 for循环语句 75
4.3.4范例3:使用while循环遍历数组 77
4.3.5范例4:使用for循环输出九九乘法表 77
4.4跳转语句 78
4.4.1 break语句 78
4.4.2 continue语句 79
4.4.3 return语句 80
4.4.4范例5:终止循环体 80
4.4.5范例6:循环体的过滤器 81
4.5经典范例 82
4.5.1经典范例1:使用for循环输出空心的菱形 82
4.5.2经典范例2:使用for循环输出杨辉三角 84
4.6本章小结 84
4.7实战练习 85
第5章 数组 87
5.1数组概述 88
5.2一维数组 88
5.2.1创建一维数组 89
5.2.2初始化一维数组 90
5.2.3范例1:求一维数组各元素的和 90
5.2.4范例2:获取一维数组的最小值 91
5.3多维数组 92
5.3.1二维数组 92
5.3.2三维数组 94
5.3.3范例3:对矩阵进行转置运算 95
5.3.4范例4:求方阵的迹 96
5.4数组的基本操作 96
5.4.1遍历数组 97
5.4.2填充替换数组元素 98
5.4.3对数组进行排序 99
5.4.4复制数组 100
5.4.5范例5:对比一维、二维数组所占内存 102
5.4.6范例6:使用直接插入排序法排序 103
5.5经典范例 104
5.5.1经典范例1:使用冒泡排序法排序 104
5.5.2经典范例2:输出九宫格 105
5.6本章小结 105
5.7实战练习 106
第6章 字符串 107
6.1创建字符串 108
6.2字符串操作 108
6.2.1字符串连接 108
6.2.2获取字符串信息 110
6.2.3去除字符串中的空格 112
6.2.4字符串替换 114
6.2.5判断字符串 115
6.2.6字母大小写转换 117
6.2.7字符串分割 118
6.2.8范例1:根据指定分割符把字符串分行 119
6.2.9范例2:判断字符串是否是数字格式 120
6.3格式化字符串 121
6.3.1格式化方法 121
6.3.2日期格式化 122
6.3.3时间格式化 123
6.3.4日期时间组合格式化 124
6.3.5常规类型格式化 125
6.3.6范例3:将金额格式化成大写 126
6.3.7范例4:将数字格式化成货币格式 128
6.4正则表达式 128
6.4.1判断是否符合正则表达式的方法 128
6.4.2正则表达式的元字符 129
6.4.3正则表达式的限定符 130
6.4.4方括号中元字符的含义 131
6.4.5范例5:验证IP地址的合法性 132
6.4.6范例6:计算文章中汉字的个数 133
6.5字符串生成器 134
6.5.1 StringBuilder类 134
6.5.2 StringBuilder类的常用方法 135
6.5.3范例7:将汉字和字母转换成Unicode码 138
6.5.4范例8:去掉字符串中重复的字符 138
6.6经典范例 139
6.6.1经典范例1:实现字符串加密 139
6.6.2经典范例2:验证字符串是否回文 140
6.7本章小结 141
6.8实战练习 141
第7章 类和对象 143
7.1面向对象概述 144
7.1.1什么是对象 144
7.1.2什么是类 145
7.1.3面向对象的特点 146
7.2类 148
7.2.1类的构造方法 148
7.2.2类的主方法 149
7.2.3成员变量 150
7.2.4成员方法 151
7.2.5局部变量 152
7.2.6局部变量的有效范围 152
7.2.7静态变量、常量和方法 153
7.2.8权限修饰符 155
7.2.9 this关键字 156
7.2.10范例1:自定义图书类 157
7.2.11范例2:温度单位转换工具 158
7.3对象 158
7.3.1对象的创建 159
7.3.2访问对象的属性和行为 160
7.3.3对象的引用 162
7.3.4对象的比较 162
7.3.5对象的销毁 163
7.3.6范例3:统计图书销量 164
7.3.7范例4:重新计算对象的哈希码 165
7.4经典范例 166
7.4.1经典范例1:汉诺塔问题求解 166
7.4.2经典范例2:单例模式的应用 167
7.5本章小结 168
7.6实战练习 168
第2篇 技术篇 171
第8章 接口、继承与多态 171
8.1接口的使用 172
8.1.1接口的定义 172
8.1.2接口的实现 172
8.1.3范例1:图片的不同格式保存 173
8.1.4范例2:为汽车增加GPS定位功能 174
8.2类的继承 175
8.2.1继承的实现 175
8.2.2继承中的重写 176
8.2.3使用super关键字 177
8.2.4范例3:经理与员工的差异 179
8.2.5范例4:重写父类中的方法 180
8.3多态 181
8.3.1什么是多态 181
8.3.2范例5:计算几何图形的面积 183
8.3.3范例6:简单的汽车销售商场 184
8.4经典范例 185
8.4.1经典范例1:使用Comparable接口自定义排序 185
8.4.2经典范例2:动态设置类的私有域 187
8.5本章小结 188
8.6实战练习 188
第9章 类的高级特性 189
9.1抽象类 190
9.2内部类 192
9.2.1成员内部类 192
9.2.2局部内部类 195
9.2.3匿名内部类 195
9.2.4静态内部类 197
9.2.5内部类的继承 198
9.2.6范例1:局部内部类设置闹钟 198
9.2.7范例2:静态内部类求极值 199
9.3 Class类与Java反射 200
9.3.1访问构造方法 201
9.3.2访问成员变量 204
9.3.3访问方法 206
9.3.4范例3:运用反射查看类的成员 209
9.3.5范例4:动态调用类中方法 210
9.4经典范例 211
9.4.1经典范例1:利用反射重写toString()方法 211
9.4.2经典范例2:普通内部类的简单应用 212
9.5本章小结 213
9.6实战练习 213
第10章 Java集合类 215
10.1集合类概述 216
10.2集合类接口的常用方法 216
10.2.1 List接口的常用方法 216
10.2.2 Set接口的常用方法 218
10.2.3 Map接口的常用方法 219
10.2.4范例1:用List集合传递学生信息 220
10.2.5范例2:Map集合二级联动 222
10.3集合类接口的实现类 223
10.3.1 List接口的实现类 223
10.3.2 Set接口的实现类 224
10.3.3 Map接口的实现类 226
10.3.4范例3:for循环遍历ArrayList 227
10.3.5范例4:用动态数组保存学生姓名 228
10.4迭代器 229
10.4.1迭代器的创建和使用 229
10.4.2范例5:Iterator遍历ArrayList 230
10.4.3范例6:ListIterator遍历ArrayList 231
10.5经典范例 232
10.5.1经典范例1:制作电子词典 232
10.5.2经典范例2:制作手机电话本 234
10.6本章小结 235
10.7实战练习 235
第11章 异常处理 237
11.1异常概述 238
11.2异常的分类 238
11.2.1可控式异常 238
11.2.2运行时异常 240
11.2.3范例1:算术异常 241
11.2.4范例2:数组下标越界异常 242
11.3获取异常信息 243
11.4处理异常 244
11.4.1使用try…catch处理异常 244
11.4.2使用try…catch…finally处理异常 245
11.4.3使用try…finally处理异常 246
11.5抛出异常 248
11.5.1使用throws声明抛出异常 248
11.5.2使用throw语句抛出异常 250
11.5.3范例3:方法中抛出异常 251
11.5.4范例4:方法上抛出异常 251
11.6自定义异常 252
11.6.1创建自定义异常类 252
11.6.2使用自定义异常类 253
11.7异常的使用原则 254
11.8经典范例 254
11.8.1经典范例1:捕获单个异常 254
11.8.2经典范例2:数据库操作异常 255
11.9本章小结 256
11.10实战练习 256
第12章 输入/输出 257
12.1流概述 258
12.2输入/输出流 258
12.2.1输入流 258
12.2.2输出流 260
12.2.3范例1:显示指定类型的文件 261
12.2.4范例2:查找替换文本文件内容 262
12.3 File类 263
12.3.1文件的创建与删除 263
12.3.2获取文件信息 264
12.3.3范例3:文件批量重命名 265
12.3.4范例4:快速批量移动文件 266
12.4文件输入/输出流 267
12.4.1 FileInputStream与FileOutputStream类 267
12.4.2 FileReader类和FileWriter类 268
12.4.3范例5:窗体动态加载磁盘文件 270
12.4.4范例6:删除文件夹中所有文件 272
12.5带缓存的输入/输出流 272
12.5.1 ButteredInputStream类与ButteredOutputStream类 272
12.5.2 ButteredReader类与ButteredWriter类 273
12.5.3范例7:读取属性文件单个属性值 275
12.5.4范例8:合并多个TXT文件 276
12.6数据输入/输出流 277
12.7 ZIP压缩输入/输出流 278
12.7.1压缩文件 278
12.7.2解压缩ZIP文件 280
12.7.3范例9:压缩包解压到指定文件夹 281
12.7.4范例10:压缩所有子文件夹 283
12.8经典范例 284
12.8.1经典范例1:简单的投票软件 284
12.8.2经典范例2:电子通讯录 284
12.9本章小结 285
12.10实战练习 286
第13章 Swing程序设计 287
13.1 Swing概述 288
13.2 Swing常用窗体 288
13.2.1 JFrame框架窗体 288
13.2.2 JDialog窗体 290
13.2.3范例1:设置窗体大小 291
13.2.4范例2:禁止改变窗体的大小 292
13.3标签组件与图标 292
13.3.1标签的使用 292
13.3.2图标的使用 293
13.3.3范例3:为图片添加说明 295
13.4常用布局管理器 296
13.4.1绝对布局 297
13.4.2流布局管理器 297
13.4.3边界布局管理器 299
13.4.4网格布局管理器 300
13.5常用面板 301
13.5.1 JPanel面板 301
13.5.2 JScrollPane面板 302
13.6按钮组件 303
13.6.1提交按钮组件 303
13.6.2单选按钮组件 304
13.6.3复选框组件 305
13.7列表组件 306
13.7.1下拉列表框组件 306
13.7.2列表框组件 308
13.8文本组件 310
13.8.1文本框组件 310
13.8.2密码框组件 311
13.8.3文本域组件 311
13.8.4范例4:给文本域设置背景图片 312
13.8.5范例5:给文本区设置背景图片 313
13.9经典范例 313
13.9.1经典范例1:设置窗体标题栏图标 313
13.9.2经典范例2:随机更换窗体背景 314
13.10本章小结 315
13.11实战练习 315
第3篇 高级篇 319
第14章 高级事件处理 319
14.1键盘事件 320
14.2鼠标事件 322
14.3窗体事件 324
14.3.1捕获窗体焦点变化事件 324
14.3.2捕获窗体状态变化事件 325
14.3.3捕获其他窗体事件 326
14.4选项事件 328
14.5表格模型事件 329
14.6经典范例 332
14.6.1经典范例1:模拟相机拍摄 332
14.6.2经典范例2:打地鼠游戏 333
14.7本章小结 335
14.8实战练习 335
第15章 多线程 337
15.1线程简介 338
15.2实现线程的两种方式 338
15.2.1继承Thread类 339
15.2.2实现Runnable接口 340
15.2.3范例1:查看线程的运行状态 342
15.2.4范例2:查看JVM中的线程名 344
15.3线程的生命周期 345
15.4操作线程的方法 346
15.4.1线程的休眠 347
15.4.2线程的加入 348
15.4.3线程的中断 350
15.4.4线程的礼让 351
15.4.5范例3:查看和修改线程优先级 351
15.4.6范例4:休眠当前线程 353
15.5线程的优先级 354
15.6线程同步 356
15.6.1线程安全 356
15.6.2线程同步机制 357
15.7线程间的通信 359
15.8经典范例 361
15.8.1经典范例1:查看JVM中的线程名 361
15.8.2经典范例2:查看和修改线程名称 362
15.9本章小结 364
15.10实战练习 364
第16章 网络通信 365
16.1网络程序设计基础 366
16.1.1局域网与因特网 366
16.1.2网络协议 366
16.1.3端口和套接字 367
16.1.4范例1:获得内网的所有IP地址 368
16.1.5范例2:解析网页中的内容 369
16.2 TCP程序设计基础 370
16.2.1 InetAddress类 371
16.2.2 ServerSocket类 372
16.2.3 TCP网络程序 373
16.2.4范例3:设置等待连接的超时时间 376
16.2.5范例4:获得Socket信息 377
16.3 UDP程序设计基础 378
16.3.1 DatagramPacket类 379
16.3.2 DatagramSocket类 379
16.3.3 UDP网络程序 379
16.4经典范例 383
16.4.1经典范例1:聊天室服务器端 383
16.4.2经典范例2:聊天室客户端 385
16.5本章小结 387
16.6实战练习 387
第17章 JDBC操作数据库 389
17.1 JDBC概述 390
17.1.1数据库概述 390
17.1.2 JDBC技术 391
17.2 JDBC的常用类和接口 391
17.2.1 DriverManager类 391
17.2.2 Connection接口 392
17.2.3 Statement接口 393
17.2.4 PreparedStatement接口 393
17.2.5 ResultSet接口 393
17.3通过JDBC操作数据库 394
17.3.1加载数据库驱动 394
17.3.2建立连接 395
17.3.3向数据库添加数据 396
17.3.4获得查询结果集 397
17.3.5更改数据库中的数据 398
17.3.6删除数据库中的数据 399
17.3.7模糊查询 400
17.3.8范例1:将复选框内容存到数据库 401
17.3.9范例2:查询三年二班的学生信息 403
17.4经典范例 404
17.4.1经典范例1:管理学生信息 404
17.4.2经典范例2:权限管理 410
17.5本章小结 415
17.6实战练习 415
第18章 Swing高级组件 417
18.1利用JTable类直接创建表格 418
18.1.1创建表格 418
18.1.2定制表格 420
18.1.3操纵表格 423
18.1.4范例1:列表元素与提示信息 425
18.1.5范例2:监听列表单击事件 426
18.2表格模型与表格 427
18.2.1利用表格模型创建表格 427
18.2.2维护表格模型 429
18.2.3范例3:实现自动排序列表 431
18.2.4范例4:可以预览字体的列表 432
18.3提供行标题栏的表格 433
18.3.1提供行标题栏的表格 433
18.3.2范例5:提供行标题栏的表格 433
18.4 Swing树组件 437
18.4.1简单的树 437
18.4.2处理选中节点事件 438
18.4.3遍历树节点 440
18.4.4定制树 442
18.4.5维护树模型 444
18.4.6处理展开节点事件 446
18.4.7范例6:为树节点增加提示信息 448
18.4.8范例7:双击编辑树节点功能 449
18.5经典范例 450
18.5.1经典范例1:编写中国省市信息树 450
18.5.2经典范例2:监听节点的选择事件 451
18.6本章小结 452
18.7实战练习 452
第19章 高级布局管理器 453
19.1箱式布局管理器 454
19.2卡片布局管理器 456
19.3网格组布局管理器 458
19.4弹簧布局管理器 464
19.4.1使用弹簧布局管理器 464
19.4.2使用弹簧和支柱 467
19.4.3利用弹簧控制组件大小 468
19.5经典范例 469
19.5.1经典范例1:制作圆形布局管理器 469
19.5.2经典范例2:制作阶梯布局管理器 470
19.6本章小结 471
19.7实战练习 471
第20章 AWT绘图技术 473
20.1绘制图形 474
20.1.1 Graphics 474
20.1.2 Graphics2D 476
20.1.3范例1:绘制指定角度的填充扇形 478
20.1.4范例2:绘制多边形 478
20.2绘图颜色与笔画属性 479
20.2.1设置颜色 479
20.2.2笔画属性 481
20.2.3范例3:为图形填充渐变色 482
20.2.4范例4:设置笔画的粗细 482
20.3绘制文本 483
20.3.1设置字体 483
20.3.2显示文字 484
20.3.3范例5:设置文本的字体 485
20.3.4范例6:设置文本的图形和颜色 486
20.4图片处理 487
20.4.1绘制图片 487
20.4.2放大与缩小 488
20.4.3图片翻转 490
20.4.4图片旋转 492
20.4.5图片倾斜 493
20.4.6范例7:图形的交运算 495
20.4.7范例8:图形的异或运算 495
20.5经典范例 496
20.5.1经典范例1:绘制花瓣 496
20.5.2经典范例2:绘制艺术图案 497
20.6本章小结 498
20.7实战练习 499
第4篇 项目篇 503
第21章 酒店管理系统 503
21.1概述 504
21.2系统分析 504
21.3系统设计 504
21.3.1系统目标 504
21.3.2系统功能结构 505
21.3.3系统预览 505
21.3.4业务流程图 506
21.3.5文件夹结构设计 507
21.4数据库设计 508
21.4.1数据库分析 508
21.4.2数据库概念设计 508
21.4.3数据库逻辑结构设计 509
21.4.4视图设计 509
21.5公共模块设计 510
21.5.1编写数据库连接类 510
21.5.2封装常用的操作数据库的方法 511
21.5.3自定义表格组件 512
21.5.4编写利用正则表达式验证数据合法性的方法 513
21.6主窗体设计 514
21.7用户登录窗口设计 516
21.8开台签单工作区设计 521
21.8.1开台签单工作区功能概述 521
21.8.2开台签单工作区技术分析 522
21.8.3开台签单工作区实现过程 522
21.8.4单元测试 527
21.9自动结账工作区设计 528
21.9.1自动结账工作区功能概述 528
21.9.2自动结账工作区技术分析 528
21.9.3自动结账工作区实现过程 529
21.10结账报表工作区设计 530
21.10.1结账报表工作区功能概述 530
21.10.2结账报表工作区技术分析 531
21.10.3结账报表工作区实现过程 531
21.10.4单元测试 535
21.11后台管理工作区设计 536
21.11.1后台管理工作区功能概述 536
21.11.2后台管理工作区技术分析 537
21.11.3后台管理工作区实现过程 537
21.11.4单元测试 544
21.12开发技巧与难点分析 544
21.13使用Visio逆向生成数据库E-R图 546
21.14本章小结 548