第1章 绪论 1
1.1 Java语言的发展历史 1
1.2 Java语言的特点 2
1.3 Java平台 4
1.3.1 Java SE 4
1.3.2 Java EE 4
1.3.3 Java ME 4
1.4 Java虚拟机 4
1.5 同步练习 5
第2章 开发环境搭建 6
2.1 JDK工具包 6
2.1.1 JDK下载和安装 6
2.1.2 设置环境变量 6
2.2 Eclipse开发工具 11
2.2.1 Eclipse下载和安装 11
2.2.2 安装中文语言包 15
2.2.3 Eclipse界面 17
2.2.4 Windows系统中常用快捷键 18
2.3 其他开发工具 19
2.3.1 IntelliJ IDEA 19
2.3.2 NetBeans IDE 19
2.3.3 文本编辑工具 21
2.4 同步练习 25
第3章 第一个Java程序 26
3.1 使用Eclipse实现 26
3.1.1 创建项目 26
3.1.2 创建类 28
3.1.3 运行程序 29
3.2 文本编辑工具+JDK实现 31
3.2.1 编写源代码文件 31
3.2.2 编译程序 32
3.2.3 运行程序 33
3.3 代码解释 34
3.4 同步练习 36
第4章 Java语法基础 37
4.1 标识符、关键字和保留字 37
4.1.1 标识符 37
4.1.2 关键字 37
4.1.3 保留字 38
4.2 Java分隔符 38
4.3 变量 39
4.4 常量 40
4.5 同步练习 41
第5章 数据类型 42
5.1 基本数据类型 42
5.2 整型类型 42
5.3 浮点类型 43
5.4 数值表示方式 44
5.4.1 进制数值表示 44
5.4.2 指数表示 45
5.5 字符类型 45
5.6 布尔类型 47
5.7 数值类型相互转换 47
5.7.1 自动类型转换 47
5.7.2 强制类型转换 48
5.8 引用数据类型 50
5.9 同步练习 51
第6章 运算符 52
6.1 算术运算符 52
6.1.1 一元运算符 52
6.1.2 二元运算符 53
6.1.3 算术赋值运算符 54
6.2 关系运算符 55
6.3 逻辑运算符 56
6.4 位运算符 57
6.5 其他运算符 59
6.6 运算符优先级 60
6.7 同步练习 61
第7章 控制语句 62
7.1 分支语句 62
7.1.1 if语句 62
7.1.2 switch语句 64
7.2 循环语句 65
7.2.1 while语句 65
7.2.2 do-while语句 66
7.2.3 for语句 67
7.2.4 增强for循环语句 68
7.3 跳转语句 69
7.3.1 break语句 69
7.3.2 continue语句 71
7.4 同步练习 73
第8章 数组 75
8.1 一维数组 75
8.1.1 数组声明 75
8.1.2 数组初始化 76
8.1.3 案例:数组合并 78
8.2 多维数组 78
8.2.1 二维数组声明 79
8.2.2 二维数组的初始化 79
8.2.3 不规则数组 81
8.3 同步练习 82
第9章 字符串 84
9.1 Java中的字符串 84
9.2 使用API文档 84
9.3 不可变字符串 87
9.3.1 String 87
9.3.2 字符串池 88
9.3.3 字符串拼接 89
9.3.4 字符串查找 91
9.3.5 字符串比较 92
9.3.6 字符串截取 94
9.4 可变字符串 95
9.4.1 StringBuffer和StringBuilder 95
9.4.2 字符串追加 96
9.4.3 字符串插入、删除和替换 97
9.5 同步练习 99
第10章 面向对象基础 101
10.1 面向对象简介 101
10.2 面向对象的三个基本特性 101
10.3 类 102
10.3.1 类声明 102
10.3.2 成员变量 103
10.3.3 成员方法 103
10.4 包 104
10.4.1 包作用 105
10.4.2 包定义 105
10.4.3 包引入 106
10.4.4 常用包 107
10.5 方法重载 107
10.6 封装性与访问控制 109
10.6.1 私有级别 109
10.6.2 默认级别 110
10.6.3 保护级别 112
10.6.4 公有级别 114
10.7 静态变量和静态方法 114
10.8 静态代码块 116
10.9 同步练习 117
第11章 对象 119
11.1 创建对象 119
11.2 空对象 119
11.3 构造方法 120
11.3.1 默认构造方法 121
11.3.2 构造方法重载 122
11.3.3 构造方法封装 123
11.4 this关键字 124
11.5 销毁对象 126
11.6 同步练习 126
第12章 继承与多态 127
12.1 Java中的继承 127
12.2 调用父类构造方法 129
12.3 成员变量隐藏和方法覆盖 131
12.3.1 成员变量隐藏 131
12.3.2 方法覆盖 132
12.4 多态 134
12.4.1 多态概念 134
12.4.2 引用类型检查 136
12.4.3 引用类型转换 138
12.5 再谈final关键字 140
12.5.1 final修饰变量 140
12.5.2 final修饰类 141
12.5.3 final修饰方法 142
12.6 同步练习 143
第13章 抽象类与接口 145
13.1 抽象类 145
13.1.1 抽象类的概念 145
13.1.2 抽象类声明和实现 146
13.2 接口 147
13.2.1 接口概念 147
13.2.2 接口声明和实现 148
13.2.3 接口与多继承 149
13.2.4 接口继承 151
13.2.5 Java 8新特性默认方法和静态方法 152
13.3 抽象类与接口的区别 154
13.4 同步练习 155
第14章 J ava常用类 156
14.1 Java根类——Object 156
14.1.1 toString()方法 156
14.1.2 对象比较方法 157
14.2 包装类 159
14.2.1 数值包装类 159
14.2.2 Character类 161
14.2.3 Boolean类 162
14.2.4 自动装箱/拆箱 163
14.3 Math类 165
14.4 大数值 167
14.4.1 BigInteger 167
14.4.2 BigDecimal 169
14.5 日期时间相关类 170
14.5.1 Date类 170
14.5.2 日期格式化和解析 172
14.5.3 Calendar类 174
14.6 Java 8新日期时间相关类 175
14.6.1 时间和日期 175
14.6.2 日期格式化和解析 177
14.7 同步练习 179
第15章 内部类 181
15.1 内部类简介 181
15.1.1 内部类的作用 181
15.1.2 内部类的分类 181
15.2 成员内部类 181
15.2.1 实例成员内部类 182
15.2.2 静态成员内部类 184
15.3 局部内部类 185
15.4 匿名内部类 186
15.5 同步练习 188
第16章 Lambda表达式 190
16.1 Lambda表达式简介 190
16.1.1 从一个示例开始 190
16.1.2 Lambda表达式实现 192
18.1.3 函数式接口 193
16.2 Lambda表达式的简化形式 193
16.2.1 省略参数类型 193
16.2.2 省略参数小括号 194
16.2.3 省略return和大括号 195
16.3 作为参数使用Lambda表达式 196
16.4 访问变量 197
16.4.1 访问成员变量 197
16.4.2 捕获局部变量 198
16.5 方法引用 199
16.6 同步练习 200
第17章 异常处理 202
17.1 从一个问题开始 202
17.2 异常类继承层次 203
17.2.1 Throwable类 203
17.2.2 Error和Exception 205
17.2.3 受检查异常和运行时异常 205
17.3 捕获异常 206
17.3.1 try-catch语句 206
17.3.2 多catch代码块 208
17.3.3 try-catch语句嵌套 210
17.3.4 多重捕获 211
17.4 释放资源 211
17.4.1 finally代码块 212
17.4.2 自动资源管理 214
17.5 throws与声明方法抛出异常 216
17.6 自定义异常类 217
17.7 throw与显式抛出异常 218
17.8 同步练习 220
第18章 集合 222
18.1 集合简介 222
18.2 List集合 223
18.2.1 常用方法 223
18.2.2 遍历集合 226
18.3 Set集合 227
18.3.1 常用方法 227
18.3.2 遍历集合 229
18.4 Map集合 230
18.4.1 常用方法 231
18.4.2 遍历集合 232
18.5 同步练习 234
第19章 泛型 235
19.1 一个问题的思考 235
19.2 使用泛型 238
19.3 自定义泛型类 240
19.4 自定义泛型接口 242
19.5 泛型方法 244
19.6 同步练习 245
第20章 文件管理与I/O流 246
20.1 文件管理 246
20.1.1 File类 246
20.1.2 案例:文件过滤 247
20.2 I/O流简介 249
20.2.1 Java流设计理念 249
20.2.2 流类继承层次 249
20.3 字节流 252
20.3.1 InputStream抽象类 252
20.3.2 OutputStream抽象类 252
20.3.3 案例:文件复制 253
20.3.4 使用字节缓冲流 255
20.4 字符流 258
20.4.1 Reader抽象类 258
20.4.2 Writer抽象类 259
20.4.3 案例:文件复制 259
20.4.4 使用字符缓冲流 261
20.4.5 字节流转换字符流 262
20.5 同步练习 264
第21章 多线程编程 265
21.1 基础知识 265
21.1.1 进程 265
21.1.2 线程 265
21.1.3 主线程 265
21.2 创建子线程 267
21.2.1 实现Runnable接口 267
21.2.2 继承Thread线程类 269
21.2.3 使用匿名内部类和Lambda表达式实现线程体 271
21.3 线程状态 273
21.4 线程管理 274
21.4.1 线程优先级 274
21.4.2 等待线程结束 275
21.4.3 线程让步 276
21.4.4 线程停止 277
21.5 线程安全 278
21.5.1 临界资源问题 279
21.5.2 多线程同步 281
21.6 线程间通信 283
21.7 同步练习 286
第22章 网络编程 288
22.1 网络基础 288
22.1.1 网络结构 288
22.1.2 TCP/IP协议 289
22.1.3 IP地址 289
22.1.4 端口 290
22.2 TCP Socket低层次网络编程 290
22.2.1 TCP Socket通信简介 290
22.2.2 TCP Socket通信过程 290
22.2.3 Socket类 291
22.2.4 ServerSocket类 292
22.2.5 案例:文件上传工具 292
22.2.6 案例:聊天工具 295
22.3 UDP Socket低层次网络编程 298
22.3.1 DatagramSocket类 299
22.3.2 DatagramPacket类 299
22.3.3 案例:文件上传工具 300
22.3.4 案例:聊天工具 302
22.4 访问互联网资源 305
22.4.1 URL概念 305
22.4.2 HTTP/HTTPS协议 305
22.4.3 使用URL类 306
22.4.4 案例:Downloader 307
22.5 同步练习 308
第23章 Swing图形用户界面编程 310
23.1 Java图形用户界面技术 310
23.2 Swing技术基础 312
23.2.1 Swing类层次结构 312
23.2.2 Swing程序结构 312
23.3 事件处理模型 315
23.3.1 采用内部类处理事件 317
23.3.2 采用Lambda表达式处理事件 318
23.3.3 使用适配器 320
23.4 布局管理 321
23.4.1 FlowLayout布局 321
23.4.2 BorderLayout布局 323
23.4.3 GridLayout布局 326
23.4.4 不使用布局管理器 327
23.4.5 使用可视化设计工具 329
23.5 Swing组件 332
23.5.1 标签和按钮 332
23.5.2 文本输入组件 334
23.5.3 复选框和单选按钮 337
23.5.4 下拉列表 340
23.5.5 列表 341
23.5.6 分隔面板 343
23.5.7 表格 344
23.6 案例:图书库存 347
23.7 同步练习 354
附录A 数据库编程 355
A.1 数据持久技术简介 355
A.2 MySQL数据库管理系统 356
A.2.1 数据库的安装与配置 356
A.2.2 连接MySQL服务器 361
A.2.3 常见的管理命令 362
A.3 JDBC技术 367
A.3.1 JDBC API 367
A.3.2 加载驱动程序 367
A.3.3 建立数据连接 370
A.3.4 3个重要接口 374
A.4 案例:数据CRUD操作 377
A.4.1 数据库编程的一般过程 377
A.4.2 数据查询操作 378
A.4.3 数据修改操作 381
附录B 项目实战:开发PetStore宠物商店项目 384
B.1 系统分析与设计 384
B.1.1 项目简介 384
B.1.2 需求分析 385
B.1.3 原型设计 385
B.1.4 数据库设计 385
B.1.5 架构设计 388
B.1.6 系统设计 389
B.2 任务1:创建数据库 390
B.2.1 迭代1.1:安装和配置MySQL数据库 390
B.2.2 迭代1.2:编写数据库DDL脚本 391
B.2.3 迭代1.3:插入初始数据到数据库 392
B.3 任务2:初始化项目 392
B.3.1 任务2.1:配置项目构建路径 392
B.3.2 任务2.2:添加资源图片 393
B.3.3 任务2.3:添加包 393
B.4 任务3:编写数据持久层代码 393
B.4.1 任务3.1:编写实体类 393
B.4.2 迭代3.2:编写DAO类 396
B.4.3 迭代3.3:数据库帮助类DBHelper 407
B.5 任务4:编写表示层代码 408
B.5.1 迭代4.1:编写启动类 408
B.5.2 迭代4.2:编写自定义窗口类——MyFrame 409
B.5.3 迭代4.3:用户登录窗口 410
B.5.4 迭代4.4:商品列表窗口 412
B.5.5 迭代4.5:商品购物车窗口 420
B.6 任务5:应用程序打包发布 427
B.6.1 迭代5.1:处理TODO、FIXME和XXX任务 427
B.6.2 迭代5.2:处理警告 427
B.6.3 迭代5.3:打包 428
附录C 同步练习参考答案 431