本书作为一本详尽的Java语言学习指南,紧密贴合JDK 17,并选用IntelliJ IDEA作为开发工具,全方位涵盖从Java基础入门、Java语法基础,到面向对象程序设计、异常处理、Java API、集合、I/O流、泛型、反射、注解、多线程、JDBC技术及项目实战等一系列的核心知识点。本书在内容设计上循序渐进,帮助读者逐步构建起完整的Java知识体系。本书不仅包含丰富的理论知识,还通过多个综合案例进行讲解,让读者能够将所学知识应用于实际开发场景中,从而获得宝贵的实战经验和技巧。同时,本书紧跟时代步伐,创新性地融入 AI 辅助编程理念,读者可扫码书中二维码来获取丰富的 AI 赋能资源。本书既可作为职业院校、本科院校计算机相关专业的教学用书,也可作为Java技术开发人员的参考用书。无论是Java语言的初学者,还是有一定经验的开发者,本书都可为其提供有力的学习支持,帮助其为未来的职业发展打下坚实的基础。
蒋辉,男,1983年7月生,汉族,中共党员,硕士,副教授,天津理工大学计算机科学与工程学院硕士研究生导师(兼职),天津仁爱学院智算工程学院副院长,天津市级计算机实验教学示范中心主任,学院数据科学与知识工程科研团队负责人。
第1章 Java基础入门 1
1.1 Java语言的简介 2
1.1.1 Java语言的由来 2
1.1.2 Java虚拟机 2
1.1.3 Java语言的垃圾回收
机制 3
1.2 JDK 17的安装与使用 3
1.2.1 JDK 17的安装 4
1.2.2 Java程序的运行过程 4
1.2.3 第一个Java程序 5
1.3 安装并使用相关工具 5
1.3.1 构建工具Maven 5
1.3.2 开发工具IntelliJ IDEA 9
小结 11
选择题 11
经典面试题 12
跟我上机 12
第2章 Java语法基础(上) 13
2.1 注释 14
2.1.1 单行注释 14
2.1.2 多行注释 14
2.1.3 文档注释 14
2.2 变量和常量 15
2.2.1 什么是变量 15
2.2.2 标识符命名规则和
规范 15
2.2.3 变量的使用 16
2.2.4 什么是常量 16
2.2.5 常量的分类 16
2.2.6 常量在程序中的应用 16
2.3 数据类型 17
2.3.1 基本数据类型 17
2.3.2 包装类 19
2.3.3 引用数据类型 20
2.4 运算符 21
2.4.1 运算符的分类 21
2.4.2 运算符的优先级和
结合性 22
2.4.3 其他运算符 23
2.5 控制语句 23
2.5.1 if条件语句 24
2.5.2 switch语句 25
2.5.3 case穿透 26
2.5.4 switch新特性和yield
关键字 26
2.5.5 循环语句 27
2.5.6 中断语句
(跳转语句) 29
2.6 Java语言中的关键字 31
小结 31
选择题 31
经典面试题 32
跟我上机 32
第3章 Java语法基础(下) 33
3.1 数组 34
3.1.1 一维数组 34
3.1.2 二维数组 35
3.2 方法 37
3.2.1 方法的用途 38
3.2.2 方法的格式和调用 38
3.2.3 方法重载 39
3.3 String字符串及常用方法 40
3.3.1 基本概念 40
3.3.2 字符串的创建 42
3.3.3 String类的常用方法 43
3.3.4 String类型与基本数据
类型间的转换 44
3.3.5 格式化字符串 45
小结 46
选择题 46
经典面试题 47
跟我上机 47
第4章 面向对象程序设计(上) 48
4.1 类与对象 49
4.1.1 面向对象的思想 49
4.1.2 类的定义 49
4.1.3 对象的创建与使用 49
4.1.4 对象的引用传递 50
4.1.5 访问控制 50
4.2 封装性 52
4.2.1 为什么要封装 52
4.2.2 如何实现封装 52
4.3 构造方法 54
4.3.1 定义构造方法 54
4.3.2 构造方法的重载 55
4.4 this关键字 56
4.4.1 使用this关键字来引用
本类中的属性 56
4.4.2 使用this关键字来引用
成员方法 57
4.4.3 使用this关键字来引用
本类的构造方法 57
4.5 代码块 58
4.5.1 普通代码块 59
4.5.2 构造块 59
4.6 static关键字 60
4.6.1 静态属性 61
4.6.2 静态方法 61
4.6.3 静态代码块 61
4.7 final关键字 62
4.7.1 使用final关键字修饰
类名 62
4.7.2 使用final关键字修饰
方法名 63
小结 65
选择题 65
经典面试题 66
跟我上机 66
第5章 面向对象程序设计(下) 67
5.1 继承 68
5.1.1 继承的定义 68
5.1.2 重写 69
5.1.3 使用super和this
关键字 70
5.2 多态 73
5.2.1 编译时多态
(静态绑定) 73
5.2.2 运行时多态
(动态绑定) 74
5.2.3 重写和重载的区别 74
5.3 抽象类 75
5.3.1 抽象类的定义 75
5.3.2 抽象类和抽象方法的
特征 76
5.4 接口 77
5.4.1 接口的定义 77
5.4.2 接口的实现 78
5.4.3 接口的继承 78
5.4.4 接口在实际开发环境中的
应用 78
5.4.5 抽象类与接口的区别 80
5.5 内部类 80
5.5.1 内部类的使用场景 80
5.5.2 成员内部类 81
5.5.3 静态内部类 81
5.5.4 局部内部类 81
5.5.5 匿名内部类 82
小结 83
选择题 83
经典面试题 83
跟我上机 84
第6章 异常处理 85
6.1 异常的定义 86
6.2 异常的类型 86
6.3 异常处理 89
6.3.1 try-catch语句块 89
6.3.2 try-catch-finally语句块 90
6.3.3 throws关键字 90
6.3.4 throw关键字 91
6.3.5 throw和throws关键字的
区别 92
6.4 自定义异常 92
6.5 使用断言 95
小结 96
选择题 96
经典面试题 97
跟我上机 97
第7章 Java API 98
7.1 Object类 99
7.1.1 Object类的概述 99
7.1.2 Object类的常用方法 99
7.2 Arrays类 100
7.2.1 Arrays类的概述 100
7.2.2 Arrays类的常用方法 100
7.3 System类与Runtime类 102
7.3.1 System类 102
7.3.2 Runtime类 103
7.4 Math类与Random类 104
7.4.1 Math类 104
7.4.2 Random类 105
7.5 日期时间类 106
7.5.1 LocalDate类 106
7.5.2 LocalTime类 107
7.5.3 LocalDateTime类 108
7.5.4 Period类 108
7.5.5 Duration类 109
7.5.6 DateTimeFormatter类 110
小结 111
选择题 111
经典面试题 112
跟我上机 112
第8章 集合 113
8.1 初识集合 114
8.2 Collection接口 115
8.2.1 Collection接口的常用
方法 115
8.2.2 Collection接口遍历
元素 115
8.2.3 List接口 117
8.2.4 Set接口 119
8.2.5 Map接口 121
8.3 Collections工具类 123
8.3.1 排序操作 123
8.3.2 查找和替换 125
8.4 Lambda表达式 127
小结 128
选择题 129
经典面试题 129
跟我上机 129
第9章 I/O流 130
9.1 File类 131
9.1.1 File类概述 131
9.1.2 创建、删除操作 131
9.1.3 判断、获取文件信息 131
9.1.4 目录操作 132
9.2 字符集 133
9.2.1 常用的字符集 133
9.2.2 字符集的编码和解码
操作 134
9.3 I/O流的分类 135
9.3.1 字节流的使用 136
9.3.2 字符流的使用 138
9.3.3 缓冲流 139
9.3.4 转换流 142
9.4 对象的序列化与反序列化 143
9.4.1 对象的序列化 144
9.4.2 对象的反序列化 144
9.5 打印流 145
9.6 I/O框架 146
9.7 Java NIO 148
9.7.1 NIO与I/O包 148
9.7.2 NIO包的主要组成
部分 149
小结 150
选择题 151
经典面试题 151
跟我上机 151
第10章 泛型、反射与注解 152
10.1 泛型 153
10.1.1 什么是泛型 153
10.1.2 使用和编写泛型 153
10.1.3 通配符 156
10.2 反射 158
10.2.1 Class类 158
10.2.2 访问字段 160
10.2.3 调用方法 161
10.2.4 调用构造方法 162
10.2.5 获取继承关系 163
10.2.6 动态代理 163
10.3 注解 165
10.3.1 使用注解 166
10.3.2 定义注解 166
10.3.3 处理注解 167
10.4 综合案例 169
小结 170
选择题 170
经典面试题 171
跟我上机 171
第11章 多线程 172
11.1 多线程基础 173
11.2 线程的实现方式 173
11.2.1 继承Thread类 173
11.2.2 实现Runnable接口 174
11.2.3 使用线程池 175
11.3 线程的状态 176
11.3.1 线程的状态及生命
周期 176
11.3.2 线程的状态转换 177
11.4 线程的常用方法 177
11.4.1 sleep方法 178
11.4.2 join方法 178
11.4.3 yield方法 178
11.4.4 wait和notify方法 178
11.4.5 interrupt和stop
方法 179
11.4.6 setPriority (int newPriority)
和getPriority方法 180
11.4.7 setDaemon方法 180
11.5 进阶多线程 184
11.5.1 多线程引发问题的解决
方法 185
11.5.2 线程同步与锁机制 185
11.5.3 线程安全 186
小结 188
选择题 188
经典面试题 189
跟我上机 189
第12章 JDBC技术 190
12.1 数据库编程基础 191
12.1.1 JDBC数据库应用
模型 191
12.1.2 使用JDBC驱动连接
数据库 192
12.2 JDBC的常用类和接口 194
12.2.1 Driver接口 195
12.2.2 DriverManager类 195
12.2.3 Connection接口 196
12.2.4 Statement接口 196
12.2.5 PreparedStatement
接口 196
12.2.6 CallableStatement
接口 197
12.2.7 ResultSet接口 197
12.3 数据库基本操作 198
12.3.1 数据插入操作 198
12.3.2 数据删除操作 198
12.3.3 数据更新操作 199
12.3.4 数据查询操作 199
12.3.5 编译预处理 201
12.4 事务处理 205
12.4.1 事务概述 205
12.4.2 常用事务处理方法 206
小结 209
选择题 209
经典面试题 209
跟我上机 210
第13章 项目实战——斗地主小游戏 211
13.1 项目概述 212
13.1.1 项目流程分析 212
13.1.2 项目开发环境 214
13.2 准备工作 214
13.2.1 创建项目 214
13.2.2 添加依赖 215
13.3 开始编程 217
13.3.1 定义接口 217
13.3.2 编写主程序 218
13.3.3 初始化阶段 220
13.3.4 发牌阶段 223
13.3.5 抢地主阶段 224
13.3.6 玩家出牌阶段 225
13.3.7 结算阶段 229
小结 229
经典面试题 230