本书主要通过代码案例帮助读者学习Java基础部分的相关知识,大部分内容都是以代码的形式呈现的,讲解部分也融入了代码注释中。通过阅读本书,读者可以更轻松、高效地掌握Java语言的语法结构与编程思维。本书首先介绍了Java语言中的基础语法结构,比如常量、变量、流程控制、数组、方法(函数)、面向对象、封装、继承、多态、抽象、接口、异常等,还介绍了日常开发中常见的一些工具类的相关使用方法。每个知识点都配备了相应的实操案例,包括具体的使用场景。本书内容以实操案例为主,对以实操为出发点的读者会更加友好。笔者(老邪)认为,可以通过搜索引擎轻松了解的知识,比如Java语言的概念、理论、历史、定义等相关内容,没有必要在本书中占用过多的篇幅。并且笔者认为,一切没有实操结果支撑的概念、理论都过于抽象,一些专业技术名词更加难以理解。所以在本书中,笔者整理了近百个实操案例,帮助读者快速地上手Java。
王冰,笔名为IT老邪,T教培行业从业十余年,累计授课时长超过两万小时,从业期间经手学员数以万计授课内容涵盖、C/C++ 语言、嵌入式开发、JavaWeb全栈开发、Web前端开发、PHP全栈开发、以及 Python 等主流开发语言。曾获得高校毕业生就业协会颁发的双师型导师认证,也曾任多个高校的牌品专业课讲师。抖音自媒体平台中粉丝量十余万。
目 录
第 1 章 小肆的第一个 Java 程序...........................................................1
1.1 Java 开发工具 ..................................................................................................... 1
1.1.1 编码工具 ....................................................................................1
1.1.2 IDE 集成开发工具 ....................................................................1
1.2 环境搭建 ............................................................................................................. 2
1.2.1 JVM、JRE、JDK 介绍 .............................................................2
1.2.2 JDK 的下载与安装 ....................................................................2
1.2.3 IntelliJ IDEA 的安装与使用 .....................................................5
第 2 章 常量与变量.......................................................................... 11
2.1 常量 ................................................................................................................... 11
2.2 数据类型的分类 ............................................................................................... 12
2.2.1 基本数据类型 ..........................................................................13
2.2.2 引用数据类型 ..........................................................................13
2.3 变量 ................................................................................................................... 14
2.3.1 变量的定义 ..............................................................................14
2.3.2 变量的输出 ..............................................................................15
2.3.3 使用变量的注意事项 ..............................................................17
X | 码解Java:让初学者读懂代码的入门书
2.3.4 数据类型转换 ..........................................................................17
2.4 本章思考 ........................................................................................................... 19
第 3 章 运算符 ................................................................................ 21
3.1 运算符的分类 ................................................................................................... 21
3.1.1 算术运算符 ..............................................................................21
3.1.2 逻辑运算符 ..............................................................................22
3.1.3 关系运算符 ..............................................................................23
3.1.4 三元运算符 ..............................................................................24
3.1.5 位运算符(了解) ..................................................................24
3.1.6 赋值运算符 ..............................................................................26
3.1.7 自增 / 自减运算符 ...................................................................27
3.2 思考 ................................................................................................................... 28
3.3 运算符优先级 ................................................................................................... 28
第 4 章 流程控制之判断结构............................................................. 29
4.1 程序运行流程(顺序) ................................................................................... 29
4.2 程序运行流程(可控) ................................................................................... 29
4.3 if 判断 ................................................................................................................ 30
4.3.1 if 的单独使用 ...........................................................................30
4.3.2 if 与 else 的配合使用 ..............................................................32
4.3.3 else if 的使用 ...........................................................................33
4.4.4 if 的嵌套使用 ...........................................................................38
4.4 思考 ................................................................................................................... 38
4.4.1 判断奇数 / 偶数 .......................................................................39
4.4.2 判断平闰年 ..............................................................................39
第 5 章 流程控制之分支 ................................................................... 40
5.1 标准语法 ........................................................................................................... 40
5.2 语法规则 ........................................................................................................... 41
5.3 案例 ................................................................................................................... 42
目 录 | XI
5.3.1 成绩等级划分 ..........................................................................42
5.3.2 使用键盘进行输入 ..................................................................43
5.3.3 计算器的基本功能 ..................................................................44
5.3.4 用户输入一个年份和月份,输出其对应的天数 ..................45
5.3.5 恺撒日期 ..................................................................................46
第 6 章 流程控制之循环 ................................................................... 49
6.1 循环的种类及标准写法 ................................................................................... 49
6.1.1 while 循环 ................................................................................49
6.1.2 do while 循环 ...........................................................................50
6.1.3 for 循环 ....................................................................................51
6.2 break 和 continue ............................................................................................... 52
6.2.1 break 的用法 ............................................................................52
6.2.2 continue 的用法 .......................................................................54
6.3 案例 ................................................................................................................... 55
6.3.1 输出 1-10 ..................................................................................55
6.3.2 输出 1 ~ 100 累加和 ..............................................................55
6.3.3 输出 1 ~ 100 的偶数和 ..........................................................56
6.3.4 输出所有水仙花数 ..................................................................56
6.3.5 输出 9 行 9 列星号组成的矩形 ..............................................57
6.3.6 输出 9 行星号组成的直角三角形 ..........................................57
6.3.7 九九乘法表 ..............................................................................58
6.3.8 输出 7 行 * 号组成的等腰三角形 ..........................................59
6.3.9 输出 1000 以内的素数 ............................................................60
第 7 章 数组 ................................................................................... 61
7.1 数组的概念 ....................................................................................................... 61
7.2 数组的使用 ....................................................................................................... 61
7.2.1 数组的定义 ..............................................................................61
7.2.2 数组的初始化 ..........................................................................62
7.2.3 数组成员的访问 ......................................................................62
XII | 码解Java:让初学者读懂代码的入门书
7.2.4 数组的特性 ..............................................................................62
7.3 案例 ................................................................................................................... 63
7.3.1 数组的遍历 ..............................................................................63
7.3.2 求最值 ......................................................................................63
7.3.3 查找数组中指定元素的所在位置 ..........................................64
7.3.4 数组逆序存储 ..........................................................................65
7.3.5 向有序数组中插入元素后保证数组仍有序 ..........................66
7.3.6 数组元素排序(升序、降序)——冒泡法 ..........................68
7.3.7 二维数组——矩阵转置(了解即可) ..................................70
7.3.8 二维数组——杨辉三角(了解即可) ..................................72
第 8 章 方法(函数)....................................................................... 74
8.1 方法的概念 ....................................................................................................... 74
8.1.1 方法的用途 ..............................................................................74
8.1.2 名词解析 ..................................................................................74
8.1.3 使用方法时的注意事项 ..........................................................75
8.1.4 方法的定义 ..............................................................................75
8.1.5 方法示例 ..................................................................................75
8.2 案例 ................................................................................................................... 78
8.3 方法的重载 ....................................................................................................... 80
8.3.1 方法的重载的特点 ..................................................................80
8.3.2 案例 ..........................................................................................81
第 9 章 面向对象............................................................................. 82
9.1 面向对象中类与对象的概念 ........................................................................... 82
9.2 类的定义 ........................................................................................................... 83
9.3 对象的使用 ....................................................................................................... 83
9.3.1 对象的使用步骤 ......................................................................83
9.3.2 成员变量与局部变量 ..............................................................85
9.3.3 成员方法与普通方法 ..............................................................85
9.3.4 对象间的赋值 ..........................................................................86
目 录 | XIII
9.3.5 方法中对象的使用 ..................................................................86
9.3.6 this 的用法 ...............................................................................87
9.4 封装 ................................................................................................................... 87
9.5 构造方法 ........................................................................................................... 89
9.6 案例 ................................................................................................................... 90
第 10 章 继承.................................................................................. 94
10.1 继承的作用(意义) ..................................................................................... 94
10.2 继承的特点 ..................................................................................................... 94
10.3 继承的格式 ..................................................................................................... 95
10.4 继承间成员的访问 ......................................................................................... 95
10.4.1 父类、子类、局部变量名重复、冲突时访问规则 ............95
10.4.2 方法名重复时的访问规则——方法的重写 ........................96
10.5 继承中的权限 ................................................................................................. 98
第 11 章 抽象和接口 ........................................................................ 99
11.1 抽象(abstract) ............................................................................................. 99
11.1.1 abstract 修饰符 .......................................................................99
11.1.2 举例说明 ................................................................................99
11.1.3 案例 ......................................................................................100
11.2 接口(interface) .......................................................................................... 101
11.2.1 接口的定义 ..........................................................................102
11.2.2 接口中的成员 ......................................................................102
11.3 接口的实现 .................................................................................................... 103
11.3.1 实现接口的格式 ..................................................................103
11.3.2 一个类可以同时实现多个接口 ..........................................103
11.3.3 接口的多继承 ......................................................................104
11.3.4 一个类可以在继承其他类的同时实现一个或多个接口 ...104
11.4 final 的使用.................................................................................................... 104
11.5 案例 ................................................................................................................ 105
11.5.1 Demo01 ................................................................................105
XIV | 码解Java:让初学者读懂代码的入门书
11.5.2 Demo02 ................................................................................109
11.5.3 Demo03 ................................................................................ 110
第 12 章 多态................................................................................ 113
12.1 格式 ............................................................................................................... 113
12.2 多态调用成员方法 ....................................................................................... 113
12.3 多态调用成员属性 ....................................................................................... 114
12.4 对象的上下转型 ........................................................................................... 114
12.5 案例 ............................................................................................................... 114
12.5.1 动物案例 .............................................................................. 114
12.5.2 USB 设备实例 ..................................................................... 117
第 13 章 内部类............................................................................. 120
13.1 内部类的概述 ............................................................................................... 120
13.1.1 内部类的定义格式 ..............................................................120
13.1.2 内部类的访问特点 ..............................................................120
13.2 内部类的分类 ............................................................................................... 121
13.2.1 成员内部类 ..........................................................................121
13.2.2 局部内部类 ..........................................................................122
13.2.3 匿名内部类 ..........................................................................123
第 14 章 常用类............................................................................. 127
14.1 包装类 ........................................................................................................... 127
14.2 String .............................................................................................................. 130
14.2.1 字符串类的特点 ..................................................................130
14.2.2 常用构造方法 ......................................................................130
14.2.3 String 对象的特点 ...............................................................131
14.2.4 String 的比较 .......................................................................131
14.2.5 常用方法 ..............................................................................132
14.2.6 示例 ......................................................................................133
14.3 StringBuilder & StringBuffer ........................................................................ 137
目 录 | XV
14.4 String 和 StringBuilder 的相互转换 ............................................................. 139
14.5 Arrays ............................................................................................................. 139
14.6 Math ............................................................................................................... 141
14.7 Object ............................................................................................................. 142
14.8 System ............................................................................................................ 146
14.9 Date ................................................................................................................ 147
14.10 SimpleDateFormat ....................................................................................... 148
14.11 Calendar ....................................................................................................... 150
14.11.1 获取对象 ............................................................................150
14.11.2 常用方法 ............................................................................150
第 15 章 File ................................................................................. 152
15.1 构造方法 ....................................................................................................... 152
15.2 File 类的创建功能 ........................................................................................ 153
15.3 File 类的判断和获取功能 ............................................................................ 153
15.4 File 类的删除功能 ........................................................................................ 154
15.5 递归遍历目录 ............................................................................................... 155
第 16 章 I/O 流............................................................................. 157
16.1 I/O 流的分类 ................................................................................................. 157
16.2 字节流 ........................................................................................................... 158
16.2.1 字节流写数据 ......................................................................158
16.2.2 字节流输出异常处理 ..........................................................160
16.2.3 字节流读数据 ......................................................................160
16.2.4 字节输入 / 输出流缓冲区 ...................................................163
16.3 字符流 ........................................................................................................... 166
16.3.1 字符流写数据 —— write() .................................................168
16.3.2 字符流读数据—— read() ...................................................169
16.3.3 复制文件 ..............................................................................170
16.3.4 缓冲区(高效读写) ..........................................................171
16.4 标准输入流和标准输出流 ........................................................................... 173
XVI | 码解Java:让初学者读懂代码的入门书
第 17 章 序列化............................................................................. 174
17.1 对象序列化 ................................................................................................... 174
17.2 对象序列化流 ............................................................................................... 174
17.3 对象反序列化流 ........................................................................................... 175
17.4 案例(读写) ............................................................................................... 175
17.5 序列化过程中的问题 ................................................................................... 177
第 18 章 异常................................................................................ 178
18.1 异常处理方式 ............................................................................................... 178
18.2 异常类 ........................................................................................................... 178
18.3 异常的解决方案 ........................................................................................... 179
18.4 异常的抛出 ................................................................................................... 180
18.5 自定义异常类 ............................................................................................... 181
第 19 章 Java 中的集合................................................................... 184
19.1 集合概述 ....................................................................................................... 184
19.2 ArrayList ........................................................................................................ 184
19.2.1 ArrayList 构造方法和添加方法 .........................................185
19.2.2 ArrayList 集合中的常用方法 .............................................185
19.3 Collection ....................................................................................................... 201
19.3.1 Collection 集合概述 ............................................................201
19.3.2 Collection 集合常用方法 ....................................................202
19.3.3 Collection 集合的遍历 ........................................................202
19.4 List ................................................................................................................. 203
19.4.1 List 集合概述 .......................................................................203
19.4.2 List 集合特有方法 ...............................................................204
19.4.3 List 集合的遍历 ...................................................................204
19.4.4 并发修改异常 ......................................................................205
19.4.5 ListIterator ............................................................................206
19.4.6 数据结构 ..............................................................................208
19.4.7 List 集合子类 .......................................................................212
目 录 | XVII
19.4.8 LinkedList ............................................................................213
19.5 Set .................................................................................................................. 214
19.5.1 Set 集合概述 ........................................................................214
19.5.2 Hash 值 .................................................................................215
19.5.3 Hash 表 .................................................................................217
19.5.4 HashSet .................................................................................217
19.5.5 LinkedHashSet .....................................................................218
19.5.6 TreeSet ..................................................................................219
19.6 泛型 ............................................................................................................... 224
19.6.1 泛型定义格式 ......................................................................224
19.6.2 泛型的优点 ..........................................................................224
19.6.3 泛型类 ..................................................................................225
19.6.4 泛型方法 ..............................................................................227
19.6.5 泛型接口 ..............................................................................229
19.6.6 泛型通配符 ..........................................................................230
19.6.7 可变参数 ..............................................................................231
19.6.8 可变参数的使用 ..................................................................232
19.7 Map ................................................................................................................ 233
19.7.1 Map 集合概述和使用 ..........................................................233
19.7.2 Map 集合的常用方法 ..........................................................234
19.7.3 Map 集合的获取功能 ..........................................................236
19.7.4 Map 集合的遍历 ..................................................................237
19.7.5 集合嵌套 ..............................................................................239
19.7.6 Map 集合案例 ......................................................................240
19.7.7 Collections ............................................................................241
19.8 Properties ....................................................................................................... 244
第 20 章 Java 中的反射................................................................... 247
20.1 类加载器(了解) ....................................................................................... 247
20.1.1 类加载 ..................................................................................247
20.1.2 类加载器 ..............................................................................248
20.2 反射 ............................................................................................................... 249
XVIII | 码解Java:让初学者读懂代码的入门书
20.2.1 概述 ......................................................................................249
20.2.2 获取 Class 类的对象 ...........................................................250
20.2.3 通过反射获取构造方法 ......................................................250
20.2.4 通过反射创建对象 ..............................................................251
20.2.5 反射获取成员变量 ..............................................................252
20.2.6 反射获取成员方法 ..............................................................253
20.2.7 反射抑制泛型检查 ..............................................................254
20.2.8 通过配置文件实现反射 ......................................................255
第 21 章 Java 中的多线程................................................................ 258
21.1 实现多线程 ................................................................................................... 258
21.1.1 多线程的实现:方式一 ......................................................258
21.1.2 设置和获取线程名称 ..........................................................259
21.1.3 线程调度 ..............................................................................260
21.1.4 线程控制 ..............................................................................261
21.1.5 线程生命周期 ......................................................................265
21.1.6 多线程的实现:方式二 ......................................................265
21.2 线程同步 ....................................................................................................... 267
21.2.1 线程同步概述 ......................................................................267
21.2.2 线程同步的优势与弊端 ......................................................270
21.2.3 线程同步方法 ......................................................................270
21.2.4 线程安全的类 ......................................................................272
21.2.5 Lock ......................................................................................273
21.3 生产者、消费者模型 ................................................................................... 274
21.4 Timer 定时器 ................................................................................................. 277
第 22 章 Lambda 表达式 ................................................................ 279
22.1 Lambda 概述 ................................................................................................. 279
22.1.1 简单案例:通过 Lambda 创建并启动线程 .......................279
22.1.2 Lambda 表达式的基本格式 ................................................280
22.1.3 Lambda 表达式案例 ............................................................280
目 录 | XIX
22.1.4 Lambda 的省略模式 ............................................................281
22.1.5 Lambda 的注意事项 ............................................................284
22.1.6 Lambda 与匿名内部类 ........................................................284
22.2 Lambda 支持的方法引用 ............................................................................. 284
22.1.1 常见的引用方式 ..................................................................284
22.1.2 案例 ......................................................................................284
22.3 函数式接口 ................................................................................................... 290
22.3.1 函数式接口作为方法的参数 ..............................................291
22.3.2 函数式接口作为方法的返回值 ..........................................291
22.4 常用的函数式接口 ....................................................................................... 292
22.4.1 Supplier ................................................................................292
22.4.2 Consumer ..............................................................................294
22.4.3 Predicate ...............................................................................295
22.4.4 Function ................................................................................297
22.5 Stream 流 ....................................................................................................... 298
22.5.1 流的不同状态 ......................................................................298
22.5.2 Stream 流的生成方式 ..........................................................299
22.5.3 Stream 中间流的操作方式 ..................................................300
22.5.4 Stream 结束流的操作方式 ..................................................303
22.5.5 案例 ......................................................................................304
第 23 章 网络编程 ......................................................................... 306
23.1 网络编程概述 ............................................................................................... 306
23.2 UDP 通信程序 .............................................................................................. 308
23.2.1 UDP 通信原理 .....................................................................308
23.2.2 使用 UDP 发送数据 ............................................................309
23.2.3 使用 UDP 接收数据 ............................................................310
23.2.4 案例:使用 UDP 收 / 发数据 ............................................. 311
23.2.5 模拟聊天室 ..........................................................................313
23.3 TCP 通信程序 ............................................................................................... 319
23.3.1 TCP 通信原理 ......................................................................319
23.3.2 使用 TCP 发送数据 .............................................................319
XX | 码解Java:让初学者读懂代码的入门书
23.3.3 使用 TCP 接收数据 .............................................................320
23.3.4 案例 ......................................................................................320
第 24 章 Java 中的枚举类型 ............................................................ 329
24.1 枚举类型的概述 ........................................................................................... 329
24.2 语法结构 ....................................................................................................... 329
24.2.1 基本语法结构示例 ..............................................................329
24.2.2 完整语法结构示例 ..............................................................330
24.2.3 枚举的 set 方法与 get 方法 .................................................332
24.2.4 枚举的常用方法 ..................................................................333
24.3 应用场景 ....................................................................................................... 333
24.4 注意事项 ....................................................................................................... 335