本书注重可读性和实用性,通过通俗易懂的语言、丰富多样的案例,详细介绍了使用Java进行面向对象程序设计需要掌握的知识。全书共11章,包括Java语言入门、Java基础语法、数组、Java类库和常用类、类与对象、集合与泛型、继承与多态、多态进阶、异常、面向接口编程和使用大模型为OOP插上翅膀。本书既可作为高等院校计算机、云计算、信息安全、大数据、人工智能、软件工程等相关专业的教学用书,也可作为广大程序开发者、爱好者的参考用书。
戴振中,绍兴文理学院,副教授,2004年至今,长期从事面向对象程序设计等课程的一线教学,有较为丰富的教学经验和教学资源积累。
第1章 Java语言入门 1
1.1 Java发展简史及其特点 1
1.1.1 Java发展简史 1
1.1.2 Java的广泛应用与影响力 2
1.1.3 Java的主要特点 3
1.2 Java开发环境搭建 5
1.2.1 JDK的下载与安装 5
1.2.2 JDK 17的安装 6
1.2.3 环境变量的配置 6
1.2.4 开发环境的验证 9
1.2.5 Java集成开发环境 10
1.3 Java程序结构 10
1.3.1 第一个Java程序 10
1.3.2 Java程序的编译和执行 10
1.3.3 主类和main()方法 12
1.4 Java控制台输入/输出 12
1.4.1 Java控制台输入/输出概述 13
1.4.2 标准输出(System.out) 13
1.4.3 标准错误输出(System.err) 15
1.4.4 标准输入(System.in)和Scanner类 16
1.4.5 Java控制台输入/输出小结 19
1.5 本章小结 19
第2章 Java基础语法 20
2.1 数据类型和变量 20
2.1.1 标识符和关键字 21
2.1.2 基本数据类型 22
2.1.3 引用数据类型 26
2.1.4 变量 26
2.1.5 基本数据类型间的类型转换 28
2.2 运算符和表达式 30
2.2.1 算术运算符 30
2.2.2 关系运算符 31
2.2.3 位运算符 32
2.2.4 逻辑运算符 34
2.2.5 条件运算符 37
2.2.6 运算符优先级 37
2.3 流程控制语句 39
2.3.1 分支语句 39
2.3.2 循环语句 44
2.4 本章小结 48
第3章 数组 49
3.1 数组概述 49
3.2 一维数组 50
3.2.1 一维数组的声明和初始化 50
3.2.2 一维数组的访问 51
3.2.3 一维数组精选案例 52
3.3 值类型和引用数据类型 54
3.4 多维数组 57
3.4.1 二维数组 57
3.4.2 二维数组精选案例 60
3.4.3 三维及更高维数组 63
3.5 Arrays类和常用方法 64
3.6 本章小结 65
第4章 Java类库和常用类 67
4.1 JDK类库和帮助文档 67
4.2 Java常用类介绍 71
4.2.1 大整数类和大浮点数类 72
4.2.2 字符串相关类 76
4.2.3 日期时间相关类(java.time包) 82
4.3 本章小结 86
第5章 类与对象 87
5.1 面向对象编程概述 87
5.2 类的定义和对象创建 92
5.2.1 类的定义 92
5.2.2 成员变量的初始化 92
5.2.3 访问修饰符 92
5.2.4 从学生类开始 93
5.3 对象的初始化和构造方法 96
5.3.1 对象的初始化 96
5.3.2 构造方法 98
5.4 属性封装和访问修饰符 102
5.4.1 现有代码的不足 102
5.4.2 Student类中的属性封装 103
5.4.3 属性封装要点 106
5.4.4 代码自动生成 106
5.5 this关键字 108
5.5.1 this的典型用法 108
5.5.2 this解密 111
5.6 static关键字和静态成员 112
5.6.1 静态变量 113
5.6.2 静态方法 114
5.6.3 静态代码块和实例代码块 115
5.6.4 使用static构建单例模式 117
5.7 综合案例 119
5.7.1 年龄管理 119
5.7.2 银行账户管理 125
5.8 本章小结 133
第6章 集合与泛型 135
6.1 对象间的关系 135
6.1.1 依赖关系 136
6.1.2 关联关系 136
6.1.3 聚合关系和组合关系 137
6.2 Java集合框架概述 138
6.3 动态数组ArrayList 139
6.3.1 ArrayList的简单应用 139
6.3.2 ArrayList探秘 142
6.4 泛型ArrayList 144
6.4.1 使用原始ArrayList管理一组同类对象 145
6.4.2 泛型ArrayList实现 146
6.5 ArrayList综合案例——感动中国人物查询系统 147
6.5.1 面向对象编程的一般步骤 147
6.5.2 感动中国人物查询系统的开发过程 148
6.5.3 代码实现说明 149
6.6 本章小结 155
第7章 继承与多态 157
7.1 继承的基本概念 157
7.2 子类对象的结构和protected修饰符 160
7.2.1 子类对象的结构 160
7.2.2 protected修饰符 162
7.3 子类对象的初始化 164
7.4 向上转型与多态 169
7.4.1 方法重写 169
7.4.2 向上转型 170
7.4.3 动态绑定和多态 172
7.4.4 向下转型 173
7.5 Object类:所有类的祖先类 175
7.5.1 Object类型的多态性 175
7.5.2 Object类中的常用方法 176
7.6 父类和子类中实例属性和静态成员的访问规则 178
7.6.1 父类和子类中实例属性的访问规则 178
7.6.2 父类和子类中静态成员的访问规则 180
7.7 final关键字——禁止继承和修改 181
7.7.1 定义常量 181
7.7.2 限制类的继承 182
7.7.3 确保方法不被重写 182
7.7.4 保护局部变量 182
7.7.5 避免修改对象数据 183
7.7.6 保护对象不被替换 184
7.8 本章小结 186
第8章 多态进阶 187
8.1 综合案例之形状管理 187
8.1.1 需求描述 187
8.1.2 参考代码及说明 189
8.1.3 举一反三 191
8.1.4 案例小结:多态的优势 194
8.2 抽象方法和抽象类 194
8.2.1 抽象方法 195
8.2.2 抽象类 195
8.2.3 抽象类的应用场景 198
8.3 综合案例之长征系列火箭模拟 198
8.3.1 长征系列火箭概述 198
8.3.2 火箭类及其子类的设计和实现 200
8.3.3 使用工厂模式根据需求选型 204
8.3.4 客户端测试代码 206
8.3.5 案例小结 207
8.4 本章小结 208
第9章 异常 209
9.1 Java异常概述 209
9.1.1 异常和Bug的概念辨析 211
9.1.2 异常的分类 212
9.2 异常的捕获与处理 214
9.2.1 异常捕获与处理的基本语法 214
9.2.2 异常处理流程 215
9.2.3 异常捕获与处理的注意事项 218
9.3 异常的抛出 221
9.3.1 为什么要抛出异常 221
9.3.2 抛出和声明异常 221
9.4 自定义异常 229
9.4.1 示例1:数字证书异常 229
9.4.2 示例2:库存不足异常 232
9.5 从异常到“归零机制” 235
9.6 本章小结 236
第10章 面向接口编程 238
10.1 接口概述 238
10.1.1 从硬件概念的接口说起 238
10.1.2 接口声明和实现 239
10.1.3 接口与抽象类 241
10.2 接口应用案例 242
10.2.1 天宫对接模拟实现 242
10.2.2 动物行为模拟系统 245
10.2.3 电商支付系统 252
10.3 Java常见类库接口 259
10.3.1 List接口和Iterator接口:容器及其遍历 259
10.3.2 Comparable接口和Comparator接口:排序 261
10.4 本章小结 271
第11章 使用大模型为OOP插上翅膀 272
11.1 使用大模型辅助编程概述 272
11.2 使用大模型辅助编程的途径 273
11.2.1 通过官方网页使用大模型 273
11.2.2 使用插件 273
11.2.3 使用内置AI大模型的集成开发环境 275
11.3 AI大模型辅助编程学习的应用场景举例 276
11.3.1 场景1:帮助抽象概念具象化,促进碎片知识的整合 276
11.3.2 场景2:调试助手,快速定位和解析错误 278
11.3.3 场景3:强化面向对象思维,通过重构规范、优化代码 284
11.3.4 场景4:通过交互引导实现需求驱动的模型拆解和实现 287
11.3.5 更多AI赋能场景 289
11.4 使用大模型的注意事项 289