
本书主要通过代码案例帮助读者学习Java基础部分的相关知识,大部分内容都是以代码的形式呈现的,讲解部分也融入了代码注释中。通过阅读本书,读者可以更轻松、高效地掌握Java语言的语法结构与编程思维。本书首先介绍了Java语言中的基础语法结构,比如常量、变量、流程控制、数组、方法(函数)、面向对象、封装、继承、多态、抽象、接口、异常等,还介绍了日常开发中常见的一些工具类的相关使用方法。每个知识点都配备了相应的实操案例,包括具体的使用场景。本书内容以实操案例为主,对以实操为出发点的读者会更加友好。笔者(老邪)认为,可以通过搜索引擎轻松了解的知识,比如Java语言的概念、理论、历史、定义等相关内容,没有必要在本书中占用过多的篇幅。并且笔者认为,一切没有实操结果支撑的概念、理论都过于抽象,一些专业技术名词更加难以理解。所以在本书中,笔者整理了近百个实操案例,帮助读者快速地上手Java。
前 言 Java 语言是目前众多编程语言中使用率最高且应用领域最多的编程语言之一,其具 有简单性、强语法、面向对象、API 丰富、编译和解释性、分布性、稳健性、安全性、 高性能、多线索性、动态性和可移植性等特点。 老邪认为 Java 语言是最适合零基础学习编程的一门编程语言,适合作为你的“编程 母语”,未来即使有学习其他编程语言的需求,也可以在具备 Java 语言基础的情况下, 很快上手其他编程语言。所谓“进可攻、退可守”。 本书的写作目的 老邪在 IT 教育培训领域从业 16 年,面向众多在校大学生,以及对编程感兴趣的在 职人员,普及与推广 Java 语言。 对比众多的编程语言,Java 语言从应用领域、生态及业内使用率上来看,更适合大 多数想从事互联网技术岗位的人学习。针对 Java 学习人员有以下几点基本要求。 ● 对编程技术有浓厚的学习兴趣与探索精神。 ● 对计算机有最基础的认识,能够独立上网,掌握软件安装等基本操作。 ● 有固定的时间持续学习。 Java语言是一门强语法类型的主流编程语言,作为一个未来的程序员,你一定要知道, 通常一个程序员需要掌握的并不仅仅是一门编程语言,因为有了 Java 的基础之后,未来 更有利于你横向学习其他编程语言,这也是业内人士常说的“一门通,门门通”。 另外,Java 语言的生态在众多编程语言中是最好的,拥有 Spring 家族及各大开源社 IV | 码解Java:让初学者读懂代码的入门书 区的加持,成熟、稳定并且完整的解决方案随处可见,可以为你的学习与工作带来方便。 这也是老邪选择 Java 作为主力语言的一个重要原因。 阅读本书可以让你轻松愉快地掌握 Java 语言的基础,并且能够对编程技术产生更浓 厚的兴趣,激发你的探索精神,在未来自主学习更多的相关技术。也许下一个技术大牛 就是你。 本书每章还配备视频导读,能帮你梳理每个章节应该如何学习。 本书特点 针对零基础想快速学习编程,并能够上手实现一些小功能的读者,老邪决定亲手编 写这样一本入门实战图书。书中的内容以“第一人称”形式描述,也就是在本书中,你 会有一个角色,从此刻起,你的名字叫作“小肆”,未来你的角色也会不断地出现在本 书中,让你的学习更加有代入感。本书中的内容多数以实操案例为主,关于 Java 语言的 历史及其他相关介绍,如果你感兴趣,可以通过互联网进行了解。一切脱离实操、脱离 代码输出的理论基础相关内容,都是你前期学习的绊脚石,除会占用你更多的精力外, 并不会给你的学习带来任何帮助。很多人在大学里学了四年都没能达到一个入门级别的 水平,正是因为学习了太多没有用的所谓基础、理论知识,忽略了实操的重要性。任何 技术的学习都需要通过实操产生结果,给学习者带来正向的交互反馈,只有这样才能引 发学习者更浓厚的学习兴趣。就像让你学开车一样,先把车子开走才是有用的,而不是 在还没摸到车之前就去研究发动机的组成。 在明确了基本的学习思路之后,就要了解正确的学习方法,老邪一直强调的都是“一 带三”的学习方法,接下来就具体描述一下这个方法。 所谓“一”指的是,在你接触到一个新知识点的时候一定要先手写一遍,因为任何 理解都建立在一定的记忆基础上。前期学习过程中,键盘对于你或许还是一个比较牵扯 精力的外设。你在日常的中文打字过程中或许觉得没什么压力,但代码都是英文单词, 字母的排列组合与中文区别很大,并且代码中会频繁地使用各种格式符号及运算符。这 些都会分散你的注意力。 多数人学习编程都会觉得自己“一学就会,一做就废”,主要原因就是方法不对。 写代码的时候千万不要把屏幕一分为二,把老邪的代码放在一侧,自己的代码放在另一 侧,然后照着代码去敲,这样的做法根本就不是在写代码,而是在练打字。这就好像给 你一篇英文文章,让你用打字软件去输入一遍一样。所以在你使用键盘写代码的时候, 前 言 | V 屏幕上一定不要出现第二份代码,此时,记忆和理解就变得非常重要。学习的过程原本 就是先输入,再输出,你看老邪写了一遍,这就是输入的过程,通过书中的讲解先去记 忆和理解一遍,然后落实在笔上,因为手写是你这十几二十年里最熟悉的一种输出方式, 你不用考虑某个字母或字符在键盘上的哪个位置,这样你就可以更专注于代码的结构和 逻辑。当你手写过一遍之后,对这段代码就有了第二次的理解和记忆。 另外,物理层面的表现力是经常被我们所忽视的。日常我们使用计算机,经常会因 为想不起来某个文件被存放在哪里而困扰。相信你也有过这样的情况。这就是电子产品 的劣势,虽然它能更快地帮我们完成某些工作。但是却不会给我们留下更深刻的印象。 而物理层面的表现力就不同了。你试着回想一下你最近一次拿笔写东西的场景,如果你 的记忆力不是很差,我相信你会回想起你是在哪儿写的,写的是什么,你是站着写的还 是坐着写的,你还会想起你是使用铅笔、钢笔还是圆珠笔写的,你是写在了纸上还是本 子上,你甚至还能想起,你是写在了左上角还是右下角,这就是物理层面的表现力。 现在很多人总是一味地追求效率,要快!但是老邪告诉你,学习编程、学习任何技 术都一样,最好的捷径就是不走捷径。你要明确你的目的是要学会,学得扎实,而不是 学得快,忘得快。所以,在前期学习的过程中,准备一支笔和一个本。老邪之所以用这 么长的篇幅来说明这个“一”,足以证明它的重要程度。 所谓“三”,指的就是用计算机去实操输入三遍,“三遍”不是一个准确的数字, 仅仅是一个基础数字。但是这三遍也是有讲究的,我们具体地说明一下。上机输入的第 一遍,你可以凭借着之前手写的记忆来完成,最终达到可以成功编译并运行的效果,这 样你就又加深了一遍记忆。这时不要急于把代码删掉,因为你还有一个任务,就是把每 一行代码都添加上注释(注释就是代码中用来解释代码的文字,不参与源码的编译,只 用来给开发者解读程序含义,Java 中单行注释使用“// 注释内容”来表示,多行注释使 用 /* 注释内容 */,后面会具体提到),这就相当于你对程序又多了一次理解。此时可以 删掉所有代码。 注意,保留刚刚添加的注释内容,第二遍输入的时候,就有了许多中文注释在屏幕上。 此时,你的任务就是将所有中文注释都翻译成代码,这就容易多了,目的还是让你对程 序再熟悉一遍。这次写完之后,再正常地编译运行并得到运行结果,此时就可以删除所 有内容了。在空白的源码文件中再写一次,如果这一次你可以写出来,就说明你对这个 程序案例已经理解并且记住了。当然,如果发现还是不行,那么就借助之前手写的那一 遍来填充代码中不完整的位置。什么时候能独立完成当前的这个案例,就说明这个部分 可以跳过,继续往下学习了。所以三次只是一个基础数字,如果不行,那么可能还需要 第四次、第五次……总之,要记住并且理解,再继续学习,避免学习中的疑惑越来越多。 VI | 码解Java:让初学者读懂代码的入门书 以上内容可以让你更好地利用这本书,如果你认可老邪的观点,并且认可以上推荐 给你的“一带三”的学习方法,那么接下来我们就开始这个阶段的学习。 本书结构 ● 第 1 章:Java 开发环境的搭建及完成属于你的第一个 Java 程序。 ● 第 2 章、第 3 章:介绍程序代码中最基本的操作单元——常量、变量及运算符 的使用。程序 = 数据结构 + 算法。无论是数据结构还是算法,都离不开最基本 的常量、变量及运算符。所以,在这里我们要先做好铺垫。 ● 第 4 章至第 6 章:介绍 Java 中的流程控制,其中包括 if、switch、while、do while、for 等语法。流程控制也是所有编程语言中都涵盖的部分。无论是面向过程, 还是面向对象的编程语言中都包含这部分内容。这也是基础部分中的重点内容, 一定要掌握好。 ● 第 7 章:介绍数组的使用,这是 Java 中的相比于基本数据类型更为复杂的一种 数据类型。数组在 Java 开发中使用得并不是很多,但是并不代表它不重要,后 续我们可能更多使用集合来取代数组。但是我们要知道集合的底层实现也使用了 数组这部分知识,所以我们有必要很好地掌握数组。而且在其他面向过程的编程 语言中,数组的使用频率是非常高的,比如我们熟悉的 C 语言。在实现各种复 杂的数据结构和算法的过程中,都有数组的参与。 ● 第 8 章:介绍 Java 中的方法(也可以称之为“函数”),通过这部分的学习, 我们可以将代码进行模块化的拆分,也可以更好地实现代码的复用。 ● 第 9 章至第 13 章:介绍 Java 的面向对象,包括封装、继承、多态、接口、内部 类等相关知识点,这部分内容也是 Java 语言的精髓所在。 ● 第 14 章至第 24 章:介绍 Java 中的 Lambda、Stream 流,以及常用 API 的使用, 包括字符串、日期操作、文件、集合、多线程、I/O 流、异常、反射等,这部分 内容建议按照章节顺序依次学习。 前 言 | VII 表达约定 本书中出现的内容可能在整体的上下文表述中存在不同的表达形式,如下所示。 ● 方法:在 Java 中能够实现具体功能的独立语句块被称为“方法”,属于一个专 属的技术名词,但是在其他位置也会出现这个词的原本含义,比如“方法”就表 示“方式”。另外,在程序员的口中,方法也被称为“函数”,比如在面向过程 的编程语言中会将“方法”称为“函数”,在面向对象的编程语言中才会将“函 数”称为“方法”。无论怎么称呼这个语句块,我们知道实际上这指的是同一个 东西就可以了。 ● 复制:如果在文中出现“拷贝”“Copy”“克隆”,实际上指的都是“复制”。 ● 程序:程序等于数据结构 + 算法,但是在本书中,很多时候提到的“代码”, 实际上指的也是程序。 本书相关资源 本书配套源码、视频与图片的下载方式请扫描封底二维码。 IT 老邪
目 录 第 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