第Ⅰ篇 基础入门 3
第1章 揭开Java的神秘面纱——我的第一个Java程序 3
1.1 Java简介 4
1.1.1 了解Java语言 4
1.1.2 Java语言的特性 4
1.1.3 Java语言的核心技术 6
1.1.4 Java语言的工作原理 7
1.2 搭建Java环境 8
1.2.1 JDK简介 8
1.2.2 JDK安装 9
1.2.3 JDK配置 12
1.2.4 测试JDK 14
1.3 第一个Java程序 14
1.4 MyEclipse的安装 16
1.4.1 MyEclipse的下载 16
1.4.2 MyEclipse的安装 17
1.5 MyEclipse的使用 18
1.5.1 创建Java项目 18
1.5.2 创建Java程序 19
1.5.3 编写Java程序 20
1.5.4 运行Java程序 21
1.5.5 调试Java程序 21
1.6 如何学好Java 23
1.7 大神解惑 24
1.8 跟我学上机 24
第2章 零基础开始学习——Java基本语法 25
2.1 剖析第一个Java程序 26
2.2 常量与变量 28
2.2.1 常量 28
2.2.2 变量 29
2.3 数据类型 33
2.3.1 整数型 34
2.3.2 浮点型 36
2.3.3 字符型 37
2.3.4 布尔型 38
2.3.5 类型转换 39
2.4 运算符 40
2.4.1 赋值运算符 40
2.4.2 算术运算符 41
2.4.3 比较运算符 42
2.4.4 条件运算符 43
2.4.5 逻辑运算符 43
2.4.6 位运算符 44
2.4.7 自增和自减运算符 47
2.4.8 运算符优先级 48
2.5 流程控制 48
2.5.1 分支控制 48
2.5.2 循环控制 54
2.5.3 跳转语句 57
2.6 Java代码编写规范 60
2.7 大神解惑 62
2.8 跟我学上机 62
第3章 主流的编程思想——认识面向对象编程 63
3.1 面向对象简介 64
3.1.1 什么是对象 64
3.1.2 面向对象的特征 64
3.2 类和对象 65
3.2.1 类 65
3.2.2 对象 67
3.2.3 构造方法 68
3.2.4 instanceof关键字 70
3.3 修饰符 70
3.3.1 访问修饰符 71
3.3.2 非访问修饰符 74
3.4 封装 78
3.4.1 了解封装 78
3.4.2 封装实现 78
3.4.3 this关键字 79
3.5 继承 80
3.5.1 了解继承 80
3.5.2 继承实现 83
3.6 多态 84
3.6.1 了解多态 84
3.6.2 重载 86
3.6.3 重写 88
3.6.4 构造方法重载 90
3.6.5 super关键字 92
3.7 大神解惑 94
3.8 跟我学上机 94
第4章 嵌套类的秘密——Java的内部类 95
4.1 创建内部类 96
4.2 链接到外部类 96
4.3 成员内部类 98
4.4 静态内部类 99
4.5 局部内部类 101
4.6 匿名内部类 103
4.7 大神解惑 104
4.8 跟我学上机 104
第5章 特殊的元素集合——数组和方法 105
5.1 数组的概念 106
5.2 一维数组 106
5.2.1 数组的声明 106
5.2.2 数组的内存分配 107
5.2.3 数组的元素 107
5.2.4 数组的赋值 108
5.3 多维数组 108
5.3.1 数组的声明 108
5.3.2 数组的内存分配 109
5.3.3 数组的元素 109
5.3.4 数组的赋值 110
5.3.5 遍历数组 111
5.4 数组排序 112
5.4.1 冒泡排序 112
5.4.2 选择排序 113
5.5 数组在方法中的使用 114
5.6 大神解惑 115
5.7 跟我学上机 116
第6章 不可不说的文本数据——字符串 117
6.1 String类的本质 118
6.2 String的API应用 119
6.2.1 获取字符串长度 119
6.2.2 去除字符串的空格 119
6.2.3 字符串分割 120
6.2.4 转换大小写 121
6.2.5 字符串截取 122
6.2.6 字符串连接 122
6.2.7 字符串比较 124
6.2.8 字符串查找 127
6.2.9 字符串替换 128
6.3 字符串解析 130
6.3.1 正则表达式语法 130
6.3.2 常用正则表达式 131
6.3.3 正则表达式的实例 131
6.4 字符串的类型转换 132
6.4.1 字符串转换为数组 132
6.4.2 基本数据类型转换为字符串 133
6.4.3 格式化字符串 134
6.5 StringBuffer与StringBuilder 136
6.5.1 介绍StringBuiler与StringBuilder 136
6.5.2 StringBuilder类的创建 136
6.5.3 StringBuilder类的方法 137
6.5.4 String、 StringBuffer与StringBuilder的区别 141
6.6 Lambda表达式 142
6.7 大神解惑 143
6.8 跟我学上机 144
第Ⅱ篇 核心技术 147
第7章 衔接更便利——抽象类与接口 147
7.1 抽象类和抽象方法 148
7.1.1 抽象类 148
7.1.2 抽象方法 149
7.2 接口概述 150
7.2.1 接口声明 150
7.2.2 接口默认方法 150
7.2.3 接口与抽象类 151
7.3 接口的多态 151
7.4 抽象类和接口的实例 152
7.4.1 抽象类的实例 152
7.4.2 接口的实例 154
7.5 集合框架 155
7.5.1 接口和实现类 155
7.5.2 Collection接口 156
7.5.3 List接口 158
7.5.4 Set接口 161
7.5.5 Map接口 164
7.6 大神解惑 166
7.7 跟我学上机 166
第8章 不可避免的问题——处理异常 167
8.1 异常的概念 168
8.2 异常的分类 169
8.3 捕获异常 170
8.3.1 捕获异常结构 170
8.3.2 try-catch语句 171
8.3.3 多条catch语句 172
8.3.4 finally语句 173
8.4 声明异常 174
8.5 抛出异常 175
8.6 自定义异常 176
8.7 大神解惑 177
8.8 跟我学上机 178
第9章 与外界的交流——Java中的输入和输出类型 179
9.1 I/O简介 180
9.1.1 I/O分类 180
9.1.2 预定义流 180
9.2 文件处理 181
9.2.1 File类 181
9.2.2 文件操作 182
9.2.3 目录操作 183
9.3 字节流 184
9.4 字符流 185
9.5 节点流 186
9.5.1 FileInputStream流 187
9.5.2 FileOutputStream流 188
9.5.3 FileReader流 190
9.5.4 FileWriter流 191
9.6 处理流 192
9.6.1 缓冲流 192
9.6.2 数据流 198
9.6.3 转换流 200
9.6.4 Print流 202
9.6.5 Object流 205
9.7 大神解惑 208
9.8 跟我学上机 208
第10章 任务同时进行——Java中的线程和并发 209
10.1 线程简介 210
10.1.1 进程 210
10.1.2 线程 210
10.1.3 线程与进程的区别 210
10.2 创建与启动线程 211
10.2.1 Thread类创建线程 211
10.2.2 Runnable接口创建线程 211
10.2.3 启动线程 212
10.3 线程的状态与转换 213
10.3.1 线程状态 213
10.3.2 线程状态转换 214
10.4 线程的同步 217
10.4.1 线程安全问题 217
10.4.2 synchronized关键字 218
10.4.3 死锁问题 219
10.5 线程交互 223
10.5.1 wait()方法和notify()方法 223
10.5.2 生产者—消费者问题 223
10.6 线程的调度 226
10.6.1 线程调度原理 226
10.6.2 线程的优先级 226
10.7 大神解惑 227
10.8 跟我学上机 228
第11章 编译时再审查——Java中的泛型 229
11.1 Java与C++中的泛型 230
11.2 简单泛型 230
11.3 类型推导与泛型类和接口 231
11.3.1 类型推导 231
11.3.2 泛型类 232
11.3.3 泛型接口 233
11.4 类型推导与泛型方法 234
11.5 类型通配符 235
11.6 Java 8泛型新特性 237
11.6.1 方法与构造方法引用 237
11.6.2 Lambda作用域 238
11.7 大神解惑 240
11.8 跟我学上机 240
第12章 自检更灵活——Java中的反射 241
12.1 反射概述 242
12.2 Java反射API 242
12.3 Class类 242
12.3.1 获取Class对象 243
12.3.2 Class类常用方法 243
12.4 生成对象 246
12.4.1 无参数构造方法 246
12.4.2 带参数构造方法 246
12.5 Method类 247
12.6 Field类 249
12.7 数组 251
12.8 获取泛型信息 252
12.9 大神解惑 253
12.10 跟我学上机 254
第13章 简化程序的配置——Java中的注解 255
13.1 注解概述 256
13.2 JDK内置注解 256
13.2.1 @Override 256
13.2.2 @Deprecated 257
13.2.3 @SuppressWamings 258
13.3 自定义注解 258
13.3.1 自定义注解 258
13.3.2 注解元素的默认值 259
13.4 元注解 260
13.4.1 @Target 260
13.4.2 @Retention 261
13.4.3 @Documented 262
13.4.4 @Inherited 262
13.5 使用反射处理注解 263
13.6 JDK1.8新特性 265
13.6.1 多重注解 265
13.6.2 ElementType枚举类 265
13.6.3 函数式接口 266
13.7 大神解惑 267
13.8 跟我学上机 268
第14章 特殊的数据集合——枚举类型 269
14.1 枚举声明 270
14.2 枚举的使用 270
14.2.1 枚举类常用方法 270
14.2.2 添加属性和方法 271
14.2.3 枚举在switch中的使用 273
14.3 EnumSet和EnumMap 274
14.4 大神解惑 276
14.5 跟我学上机 276
第Ⅲ篇 高级应用 279
第15章 Java的数据库编程——JDBC编程 279
15.1 JDBC概述 280
15.1.1 JDBC原理 280
15.1.2 JDBC驱动 281
15.2 连接数据库 281
15.2.1 引入jar包 282
15.2.2 连接数据库步骤 284
15.2.3 JDBC入门实例 284
15.3 驱动管理器类 285
15.3.1 加载JDBC驱动 285
15.3.2 DriverManager类 286
15.4 数据库连接接口 287
15.4.1 常用方法 287
15.4.2 处理元数据 287
15.5 执行SQL语句的接口 289
15.5.1 Statement接口 289
15.5.2 PreparedStatement接口 292
15.5.3 CallableStatement接口 293
15.6 结果集接口 295
15.7 实战——学生信息管理 297
15.7.1 创建表student 297
15.7.2 连接数据库 298
15.7.3 插入数据 298
15.7.4 删除数据 299
15.7.5 修改数据 301
15.7.6 查询数据 302
15.8 大神解惑 303
15.9 跟我学上机 304
第16章 设计图形界面设计——Swing技术 305
16.1 Swing基础 306
16.2 Swing容器 306
16.2.1 JFrame窗体 306
16.2.2 JPanel面板 309
16.3 Swing的组件 310
16.3.1 按钮JButton 310
16.3.2 标签JLabel 312
16.3.3 复选框JCheckBox 313
16.3.4 单选按钮JRadioButton 315
16.3.5 单行文本框JTextField 316
16.3.6 密码文本框JPassswordField 318
16.3.7 多行文本框JTextArea 319
16.3.8 下拉列表JComboBox 321
16.3.9 列表框JList 322
16.3.10 菜单 323
16.4 布局管理 325
16.4.1 流式布局管理器 326
16.4.2 边框布局管理器 327
16.4.3 网格布局管理器 328
16.4.4 网格组布局管理器 329
16.4.5 卡片布局管理器 331
16.5 Swing事件模型 333
16.5.1 事件处理模型 333
16.5.2 事件类 334
16.5.3 事件监听器 335
16.5.4 事件适配器 339
16.6 Swing高级组件 340
16.6.1 Swing的表格组件 340
16.6.2 Swing的树组件 343
16.7 大神解惑 346
16.8 跟我学上机 346
第17章 多媒体开发技术——AWT绘图与音频 347
17.1 Java绘图 348
17.1.1 绘图方法 348
17.1.2 Graphics类 348
17.1.3 Graphics2D类 350
17.1.4 设置绘图颜色 351
17.1.5 设置笔画属性 353
17.2 绘文本 356
17.2.1 设置字体 356
17.2.2 绘制文本 356
17.3 绘制图片 358
17.4 图像处理 359
17.4.1 图像放大或缩小 359
17.4.2 图像倾斜 359
17.4.3 图像旋转 361
17.4.4 图像翻转 363
17.5 播放音频 365
17.6 大神解惑 368
17.7 跟我学上机 368
第18章 融入互联网时代——Java的网络编程 369
18.1 网络编程基础 370
18.1.1 网络编程基础概念 370
18.1.2 网络协议 371
18.2 TCP网络编程 372
18.2.1 InetAdress类 372
18.2.2 Socket类 373
18.2.3 ServerSocket类 374
18.2.4 TCP网络程序 375
18.2.5 小型聊天室 376
18.3 UDP网络编程 382
18.3.1 DatagramSocket类 382
18.3.2 DatagramPacket类 383
18.3.3 UDP网络程序 384
18.3.4 数据广播 386
18.4 大神解惑 390
18.5 跟我学上机 390
第19章 常用工具类——API编程技术 391
19.1 Runtime类 392
19.1.1 Runtime类方法 392
19.1.2 内存管理 393
19.1.3 ecec()方法 394
19.2 包装类 394
19.2.1 基本数据类型的包装类 395
19.2.2 Boolean类 395
19.2.3 Character类 397
19.2.4 整型包装类 398
19.2.5 Double和Float类 400
19.3 日期操作类 403
19.3.1 Date类 403
19.3.2 Calendar类 404
19.3.3 DateFormat类 406
19.3.4 SimpleDateFormat类 408
19.4 数学类 410
19.5 高手甜点 412
19.6 跟我学上机 412
第20章 工程师的秘密——UML与设计模式 413
20.1 UML类图 414
20.1.1 类图和类之间关系 414
20.1.2 泛化关系 415
20.1.3 实现关系 416
20.1.4 依赖关系 417
20.1.5 关联关系 418
20.2 设计模式 421
20.2.1 设计模式分类 421
20.2.2 单例模式 422
20.2.3 工厂模式 422
20.2.4 代理模式 424
20.2.5 观察者模式 425
20.2.6 适配器模式 427
20.3 大神解惑 430
20.4 跟我学上机 430
第21章 连接打印机——Java的打印技术 431
21.1 打印控制类 432
21.1.1 PrinterJob类的方法 432
21.1.2 【打印】对话框 433
21.2 打印页面 435
21.3 多页打印 437
21.4 打印预览 439
21.5 大神解惑 442
21.6 跟我学上机 442
第Ⅳ篇 项目开发实战 445
第22章 管理开发项目——ANT工具的使用 445
22.1 ANT简介 446
22.1.1 ANT任务类型 446
22.1.2 项目层次结构 446
22.1.3 ANT构建文件 446
22.2 为什么要使用ANT 447
22.3 下载安装ANT 448
22.3.1 下载ANT 448
22.3.2 安装ANT 448
22.4 ANT关键元素 449
22.5 ANT常用任务 454
22.6 使用ANT构建项目 458
22.7 大神解惑 460
22.8 跟我学上机 460
第23章 人工智能应用——开发购物推荐系统 461
23.1 开发背景 462
23.2 需求及功能分析 463
23.2.1 需求分析 463
23.2.2 功能分析 463
23.3 系统代码编写 465
23.3.1 推荐系统主程序 465
23.3.2 读取机器学习数据 471
23.3.3 计算行之间相似性 473
23.3.4 计算数组相似性 474
23.3.5 读取测试数据 476
23.4 系统运行 477
第24章 游戏休闲应用——开发气球射击游戏 479
24.1 游戏简介 480
24.2 需求及功能分析 480
24.2.1 需求分析 480
24.2.2 功能分析 481
24.3 数据库设计 482
24.4 系统代码编写 482
24.4.1 主程序模块 483
24.4.2 移动对象的抽象类 487
24.4.3 枪 488
24.4.4 子弹 490
24.4.5 气球 491
24.4.6 对象的画图 492
24.4.7 对象的移动 494
24.4.8 气球的变化 495
24.4.9 检查游戏状况 496
24.4.10 参数接口 498
24.4.11 数据库类 499
24.5 系统运行 501
第25章 娱乐影视应用——开发电影订票系统 503
25.1 需求分析 504
25.2 功能分析 504
25.3 数据库设计 505
25.3.1 电影信息 506
25.3.2 放映信息 506
25.3.3 用户订单信息 506
25.3.4 管理员账号 507
25.4 系统代码编写 507
25.4.1 系统对象模块 507
25.4.2 欢迎界面模块 513
25.4.3 前台订票模块 516
25.4.4 后台管理模块 525
25.4.5 数据库模块 564
25.4.6 辅助处理模块 578
25.5 系统运行 583
25.5.1 欢迎界面 583
25.5.2 后台管理界面 583
25.5.3 前台订票界面 585