第一篇 Java基础 2
第1章 开篇综述 2
1.1 Java语言历史 3
1.2 Java语言特点 3
1.3 Java平台 5
1.3.1 Java SE 5
1.3.2 Java EE 6
1.3.3 Java ME 6
1.4 Java虚拟机 6
本章小结 7
第2章 开发环境搭建 8
2.1 JDK工具包 8
2.1.1 JDK下载和安装 8
2.1.2设置环境变量 10
2.2 Eclipse开发工具 12
2.2.1 Eclipse下载和安装 12
2.2.2安装中文语言包 14
2.2.3 Eclipse界面 17
2.2.4 Windows系统中常用快捷键 17
2.3其他开发工具 18
2.3.1 IntelliJ IDEA 18
2.3.2 NetBeans IDE 20
2.3.3文本编辑工具 20
本章小结 23
第3章 第一个Java程序 24
3.1使用Eclipse实现 24
3.1.1创建项目 24
3.1.2创建类 25
3.1.3运行程序 26
3.2文本编辑工具+JDK实现 28
3.2.1编写源代码文件 28
3.2.2编译程序 29
3.2.3运行程序 30
3.3代码解释 31
本章小结 33
第4章 Java语法基础 34
4.1标识符、关键字和保留字 34
4.1.1标识符 34
4.1.2关键字 35
4.1.3保留字 35
4.2 Java分隔符 35
4.3变量 36
4.4常量 37
本章小结 38
第5章 Java编码规范 39
5.1命名规范 39
5.2注释规范 40
5.2.1文件注释 40
5.2.2文档注释 41
5.2.3代码注释 43
5.2.4地标注释 45
5.3代码排版 46
5.3.1空行 46
5.3.2空格 47
5.3.3缩进 48
5.3.4断行 49
5.4其他规范 50
本章小结 51
第6章 数据类型 52
6.1基本数据类型 52
6.2整型类型 52
6.3浮点类型 54
6.4数值表示方式 54
6.4.1进制数值表示 54
6.4.2指数表示 55
6.5字符类型 55
6.6布尔类型 57
6.7数值类型相互转换 58
6.7.1自动类型转换 58
6.7.2强制类型转换 59
6.8引用数据类型 60
本章小结 62
第7章 运算符 63
7.1算术运算符 63
7.1.1一元运算符 63
7.1.2二元运算符 64
7.1.3算术赋值运算符 65
7.2关系运算符 66
7.3逻辑运算符 67
7.4位运算符 68
7.5其他运算符 71
7.6运算符优先级 71
本章小结 72
第8章 控制语句 73
8.1分支语句 73
8.1.1 if语句 73
8.1.2 switch语句 75
8.2循环语句 76
8.2.1 while语句 76
8.2.2 do-while语句 77
8.2.3 for语句 78
8.2.4增强for语句 79
8.3跳转语句 80
8.3.1 break语句 80
8.3.2 continue语句 82
本章小结 83
第9章 数组 84
9.1一维数组 84
9.1.1数组声明 84
9.1.2数组初始化 85
9.1.3案例:数组合并 87
9.2多维数组 88
9.2.1二维数组声明 88
9.2.2二维数组的初始化 89
9.2.3不规则数组 90
本章小结 92
第10章 字符串 93
10.1 Java中的字符串 93
10.2使用API文档 94
10.3不可变字符串 96
10.3.1 String 96
10.3.2字符串池 98
10.3.3字符串拼接 99
10.3.4字符串查找 100
10.3.5字符串比较 102
10.3.6字符串截取 103
10.4可变字符串 104
10.4.1 StringBuffer和StringBuilder 105
10.4.2字符串追加 106
10.4.3字符串插入、删除和替换 107
本章小结 108
第二篇 面向对象编程 110
第11章 面向对象基础 110
11.1面向对象简介 110
11.2面向对象的三个基本特性 110
11.3类 111
11.3.1类声明 111
11.3.2成员变量 112
11.3.3成员方法 113
11.4包 114
11.4.1包作用 114
11.4.2包定义 115
11.4.3包引入 116
11.4.4常用包 117
11.5方法重载 118
11.6封装性与访问控制 119
11.6.1私有级别 120
11.6.2默认级别 121
11.6.3保护级别 122
11.6.4公有级别 124
11.7静态变量和静态方法 125
11.8静态代码块 126
本章小结 128
第12章 对象 129
12.1创建对象 129
12.2空对象 130
12.3构造方法 130
12.3.1默认构造方法 131
12.3.2构造方法重载 132
12.3.3构造方法封装 133
12.4 this关键字 134
12.5销毁对象 135
本章小结 136
第13章 继承与多态 137
13.1 Java中的继承 137
13.2调用父类构造方法 139
13.3成员变量隐藏和方法覆盖 141
13.3.1成员变量隐藏 141
13.3.2方法覆盖 142
13.4多态 144
13.4.1多态概念 144
13.4.2引用类型检查 146
13.4.3引用类型转换 148
13.5再谈final关键字 150
13.5.1 final修饰变量 150
13.5.2 final修饰类 151
13.5.3 final修饰方法 151
本章小结 152
第14章 抽象类与接口 153
14.1抽象类 153
14.1.1抽象类的概念 153
14.1.2抽象类声明和实现 154
14.2接口 155
14.2.1接口概念 156
14.2.2接口声明和实现 156
14.2.3接口与多继承 158
14.2.4接口继承 160
14.2.5 Java 8新特性默认方法和静态方法 161
14.3抽象类与接口的区别 163
本章小结 164
第15章 枚举类 165
15.1枚举简介 165
15.2枚举类声明 166
15.2.1最简单形式的枚举类 167
15.2.2枚举类中成员变量和成员方法 168
15.2.3枚举类构造方法 169
15.3枚举常用方法 171
本章小结 172
第16章 Java常用类 173
16.1 Java根类——Object 173
16.1.1 toString()方法 173
16.1.2对象比较方法 174
16.2包装类 176
16.2.1数值包装类 176
16.2.2 Character类 178
16.2.3 Boolean类 179
16.2.4自动装箱/拆箱 180
16.3 Math类 181
16.4大数值 184
16.4.1 BigInteger 184
16.4.2 BigDecimal 185
16.5日期时间相关类 186
16.5.1 Date类 187
16.5.2日期格式化和解析 188
16.5.3 Calendar类 190
16.6 Java 8新日期时间相关类 192
16.6.1时间和日期 192
16.6.2日期格式化和解析 194
本章小结 196
第17章 内部类 197
17.1内部类简介 197
17.1.1内部类的作用 197
17.1.2内部类的分类 198
17.2成员内部类 198
17.2.1实例成员内部类 198
17.2.2静态成员内部类 201
17.3局部内部类 202
17.4匿名内部类 203
本章小结 205
第18章 Java 8函数式编程基础——Lambda表达式 206
18.1 Lambda表达式简介 206
18.1.1从一个示例开始 207
18.1.2 Lambda表达式实现 208
18.1.3函数式接口 209
18.2 Lambda表达式简化形式 210
18.2.1省略参数类型 210
18.2.2省略参数小括号 210
18.2.3省略return和 211
大括号 211
18.3作为参数使用Lambda表达式 212
18.4访问变量 213
18.4.1访问成员变量 213
18.4.2捕获局部变量 214
18.5方法引用 215
本章小结 217
第三篇 Java进阶 220
第19章 异常处理 220
19.1从一个问题开始 220
19.2异常类继承层次 221
19.2.1 Throwable类 221
19.2.2 Error和Exception 223
19.2.3受检查异常和运行时异常 223
19.3捕获异常 224
19.3.1 try-catch语句 224
19.3.2多catch代码块 226
19.3.3 try-catch语句嵌套 228
19.3.4多重捕获 230
19.4释放资源 230
19.4.1 finally代码块 231
19.4.2自动资源管理 233
19.5 throws与声明方法抛出异常 235
19.6自定义异常类 237
19.7 throw与显式抛出异常 237
本章小结 239
第20章 对象容器——集合 240
20.1集合简介 240
20.2 List集合 241
20.2.1常用方法 242
20.2.2遍历集合 244
20.3 Set集合 246
20.3.1常用方法 246
20.3.2遍历集合 248
20.4 Map集合 249
20.4.1常用方法 250
20.4.2遍历集合 251
本章小结 253
第21章 泛型 254
21.1一个问题的思考 254
21.2使用泛型 256
21.3自定义泛型类 258
21.4自定义泛型接口 260
21.5泛型方法 262
本章小结 263
第22章 文件管理与I/O流 264
22.1文件管理 264
22.1.1 File类 264
22.1.2案例:文件过滤 266
22.2 I/O流简介 268
22.2.1 Java流设计理念 268
22.2.2流类继承层次 268
22.3字节流 271
22.3.1 InputStream抽象类 271
22.3.2 OutputStream抽象类 272
22.3.3案例:文件复制 272
22.3.4使用字节缓冲流 275
22.4字符流 278
22.4.1 Reader抽象类 278
22.4.2 Writer抽象类 278
22.4.3案例:文件复制 279
22.4.4使用字符缓冲流 281
22.4.5字节流转换字符流 282
本章小结 284
第23章 多线程编程 285
23.1基础知识 285
23.1.1进程 285
23.1.2线程 285
23.1.3主线程 286
23.2创建子线程 287
23.2.1实现Runnable接口 287
23.2.2继承Thread线程类 290
23.2.3使用匿名内部类和Lambda表达式实现线程体 291
23.3线程状态 293
23.4线程管理 294
23.4.1线程优先级 294
23.4.2等待线程结束 295
23.4.3线程让步 297
23.4.4线程停止 298
23.5线程安全 299
23.5.1临界资源问题 299
23.5.2多线程同步 302
23.6线程间通信 304
本章小结 307
第24章 网络编程 308
24.1网络基础 308
24.1.1网络结构 308
24.1.2 TCP/IP协议 309
24.1.3 IP地址 309
24.1.4端口 310
24.2 TCP Socket低层次网络编程 310
24.2.1 TCP Socket通信简介 310
24.2.2 TCP Socket通信过程 311
24.2.3 Socket类 311
24.2.4 ServerSocket类 312
24.2.5案例:文件上传工具 313
24.2.6案例:聊天工具 316
24.3 UDP Socket低层次网络编程 319
24.3.1 DatagramSocket类 319
24.3.2 DatagramPacket类 320
24.3.3案例:文件上传工具 320
24.3.4案例:聊天工具 322
24.4数据交换格式 325
24.4.1 JSON文档结构 326
24.4.2使用第三方JSON库 327
24.4.3 JSON数据编码和解码 329
24.4.4案例:聊天工具 331
24.5访问互联网资源 333
24.5.1 URL概念 333
24.5.2 HTTP/HTTPS协议 334
24.5.3使用URL类 335
24.5.4使用HttpURLConnection发送GET请求 336
24.5.5使用HttpURLConnection发送POST请求 338
24.5.6案例:Downloader 340
本章小结 341
第25章 Swing图形用户界面 342
编程 342
25.1 Java图形用户界面技术 342
25.2 Swing技术基础 344
25.2.1 Swing类层次结构 344
25.2.2 Swing程序结构 345
25.3事件处理模型 349
25.3.1采用内部类处理事件 350
25.3.2采用Lambda表达式处理事件 352
25.3.3使用适配器 353
25.4布局管理 355
25.4.1 FlowLayout布局 355
25.4.2 BorderLayout布局 357
25.4.3 GridLayout布局 359
25.4.4不使用布局管理器 361
25.4.5使用可视化设计工具 363
25.5 Swing组件 365
25.5.1标签和按钮 365
25.5.2文本输入组件 368
25.5.3复选框和单选按钮 370
25.5.4下拉列表 372
25.5.5列表 374
25.5.6分隔面板 375
25.5.7表格 377
25.6案例:图书库存 380
本章小结 386
第26章 反射 387
26.1 Java反射机制API 387
26.1.1 java.lang.Class类 387
26.1.2 java.lang.reflect包 389
26.2创建对象 390
26.2.1调用构造方法 390
26.2.2案例:依赖注入实现 391
26.3调用方法 393
26.4调用成员变量 396
本章小结 398
第27章 注解 399
27.1基本注解 399
27.1.1@Override 400
27.1.2@Deprecated 401
27.1.3@SuppressWannings 402
27.1.4@SafeVarargs 402
27.1.5@FunctionalInterface 403
27.2元注解 403
27.3自定义注解 405
27.3.1声明注解 405
27.3.2案例:使用元注解 406
27.3.3案例:读取运行时注解信息 409
本章小结 411
第28章 数据库编程 412
28.1数据持久技术简介 412
28.2 MySQL数据库管理系统 413
28.2.1数据库安装与配置 413
28.2.2连接MySQL服务器 417
28.2.3常见的管理命令 419
28.3 JDBC技术 423
28.3.1 JDBC API 424
28.3.2加载驱动程序 424
28.3.3建立数据连接 426
28.3.4三个重要接口 430
28.4案例:数据CRUD操作 434
28.4.1数据库编程一般过程 434
28.4.2数据查询操作 435
28.4.3数据修改操作 438
本章小结 440
第四篇 Java项目实战 442
第29章 项目实战1:开发PetStore宠物商店项目 442
29.1系统分析与设计 442
29.1.1项目简介 442
29.1.2需求分析 443
29.1.3原型设计 443
29.1.4数据库设计 445
29.1.5架构设计 447
29.1.6系统设计 448
29.2任务1:创建数据库 449
29.2.1迭代1.1:安装和配置MySQL数据库 449
29.2.2迭代1.2:编写数据库DDL脚本 449
29.2.3迭代1.3:插入初始数据到数据库 450
29.3任务2:初始化项目 451
29.3.1任务2.1:配置项目构建路径 451
29.3.2任务2.2:添加资源图片 451
29.3.3任务2.3:添加包 451
29.4任务3:编写数据持久层代码 452
29.4.1任务3.1:编写实体类 452
29.4.2迭代3.2:编写DAO类 454
29.4.3迭代3.3:数据库帮助类DBHelper 463
29.5任务4:编写表示层代码 465
29.5.1迭代4.1:编写启动类 465
29.5.2迭代4.2:编写自定义窗口类——MyFrame 465
29.5.3迭代4.3:用户登录窗口 466
29.5.4迭代4.4:商品列表窗口 468
29.5.5迭代4.5:商品购物车窗口 475
29.6任务5:应用程序打包发布 481
29.6.1迭代5.1:处理TODO、FIXME和XXX任务 481
29.6.2迭代5.2:处理警告 481
29.6.3迭代5.3:打包 482
第30章 项目实战2:开发Java版QQ2006聊天工具 484
30.1系统分析与设计 484
30.1.1项目简介 484
30.1.2需求分析 485
30.1.3原型设计 486
30.1.4数据库设计 487
30.1.5网络拓扑图 489
30.1.6系统设计 490
30.2任务1:创建服务器端数据库 491
30.2.1迭代1.1:安装和配置MySQL数据库 491
30.2.2迭代1.2:编写数据库DDL脚本 491
30.2.3迭代1.3:插入初始数据到数据库 492
30.3任务2:初始化项目 492
30.3.1任务2.1:配置项目构建路径 492
30.3.2任务2.2:添加资源图片 493
30.3.3任务2.3:添加JSON-java库 493
30.3.4任务2.4:添加包 493
30.4任务3:编写服务器端外围代码 493
30.4.1任务3.1:编写UserDAO类 493
30.4.2迭代3.2:数据库帮助类DBHelper 497
30.4.3任务3.3:编写ClientInfo类 498
30.5任务4:客户端UI实现 499
30.5.1迭代4.1:登录窗口实现 499
30.5.2迭代4.2:好友列表窗口实现 503
30.5.3迭代4.3:聊天窗口实现 506
30.6任务5:用户登录过程实现 509
30.6.1迭代5.1:客户端启动 510
30.6.2迭代5.2:客户端登录编程 511
30.6.3迭代5.3:服务器端启动 514
30.6.4迭代5.4:服务器端验证编程 515
30.7任务6:用户登录刷新好友列表 517
30.7.1迭代6.1:服务器端编程 517
30.7.2迭代6.2:客户端编程 518
30.8任务7:聊天过程实现 520
30.8.1迭代7.1:客户端用户1向用户3发送消息 521
30.8.2迭代7.2:服务器端接收用户1消息与转发给用户3消息 522
30.8.3迭代7.3:客户端用户3接收用户1消息 524
30.9任务8:用户下线刷新好友列表过程 526
30.9.1迭代8.1:客户端编程 526
30.9.2迭代8.2:服务器端编程 527