幻仿编程 Udemy 付费课程,独家中英字幕 + 配套资料!
限时1折特惠!课程永久访问权,随时随地学习!
现代 Java:掌握从 Java 8 到 Java 21 的功能
“通过实践掌握 Java 8 到 Java 21:函数式编程、记录、密封类、模式匹配等。
讲师:Pragmatic Code School
您将学到什么
- 通过编码学习 Java 8、Java ll、Java 17、Java 21 的功能。
- 学习 Java 中的函数式编程
- 通过代码完全理解 Lambdas、Streams 和 Optional。
- 学生将能够实时实现新的 Java 8 概念
- 学习构建复杂的Streams Pipeline。
- 了解 Java 8 中的新日期/时间库
- 学习使用方法引用、构造函数引用语法。
- 学习并理解使用流进行并行编程。
- 学生将能够利用新的功能特性升级他们的 Java 知识。
- 本课程将持续更新。
- LVTI、TextBlocks、增强型开关、记录类
- 学习模式匹配以编写简洁、结构化的代码
- 使用密封类来应用受控继承
- Java 平台模块系统 (JPMS) 及其优势
- 现代 Java 中的所有新功能
探索相关主题
- Java
- 编程语言
- 发展
要求
- 学生应该具备 Java 的基本知识。
- 学生应该了解 Eclipse、Intellij IDEA 等 IDE
- 本课程至少需要 Java 8。任何高于 Java 8 的 Java 版本都可以
描述
[重大更新:完整课程于 2024 年 12 月更新]
通过编码学习新的Java 8、Java ll、Java 17、Java 21功能,这是一个纯编码课程,通过编码,您将全面了解所有Java 8、Java ll、Java 17、Java 21功能
我为什么要参加这门课程?
- 本课程将帮助Java开发人员了解Java 8 的新功能
- 所有新功能(如Lambdas、Streams、Optional、函数式接口和并行编程)都将通过代码进行解释
- 本课程将使您有信心在实际Java项目中实现新的Java 8功能
- 在本课程结束时,你将全面了解 Java 8 的新功能
课程概述:
第 1 部分 – 入门:
- 本节介绍本课程涵盖的内容
第 2 部分-为什么选择 Java-8?
- 本节介绍Java 8 为何重要?
- 本节解释命令式编程和声明式编程之间的区别
第 3 部分 – 工作区设置 – Mac/Windows:
- 本节介绍在Mac 和 Windows中安装Java和IntelliJ
第 4 节:Lambda 简介
- 本节介绍为什么需要 Lambda、Lambdas 语法以及如何实现 Lambdas?
- 使用 Lambdas 实现 Runnable 接口
- 使用 Lambdas 实现 Comparator 接口
第 5 节:Lambda 和函数式接口
- 本节介绍 Java 8 中引入的新功能接口 消费者功能接口 谓词函数接口 函数式接口 供应商功能接口
- 消费者功能接口
- 谓词函数接口
- 函数式接口
- 供应商功能接口
第 6 节:构造函数和方法引用
- 本节介绍新方法参考和构造函数参考 方法引用如何简化代码 如何将方法引用与 Lambda 表达式结合使用 如何使用构造函数引用创建新对象
- 方法引用如何简化代码
- 如何将方法引用与 Lambda 表达式结合使用
- 如何使用构造函数引用创建新对象
第 7 节:Lambda 表达式和局部变量(有效 final)
- 本节介绍局部变量及其在 Lambda 表达式中的使用方法
- 变量有效最终范围的定义
第 8 节:Streams API
- 本节介绍 Streams API,它是Java8中引入的重要功能之一
- Stream API 内部如何工作?
- 集合 (Collection) 与流 (Stream)有何不同?
- 如何调试流?
第 9 节:Streams API 操作
- 本节介绍可在 Streams 中用于实现目标的不同 Streams API 操作
- 流操作如: 地图() flatMap() 清楚的() 数数() 筛选() 减速器() Map、Filter 和 Reduce 模式 最大限度() min() 限制() 跳过() allMatch()、anyMatch() 和 noneMatch() findAny() 和 findFirst()
- 地图()
- flatMap()
- 清楚的()
- 数数()
- 筛选()
- 减速器()
- Map、Filter 和 Reduce 模式
- 最大限度()
- min()
- 限制()
- 跳过()
- allMatch()、anyMatch() 和 noneMatch()
- findAny() 和 findFirst()
- 短路操作流操作的解释
第 10 节:Streams API – 工厂方法
- 本节介绍可用于创建 Streams 的不同 Streams API 工厂方法
第 11 节:数字流
- 本节介绍数字流,可用于执行一些与数字相关的操作
第 12 节:终端操作流
- 本节介绍从Streams Pipeline收集数据的不同方法
- 终端操作如: 连接() 计数() 映射() 最大值(),最小值() 和() 平均的() groupingBy() 分区依据()
- 连接()
- 计数()
- 映射()
- 最大值(),最小值()
- 和()
- 平均的()
- groupingBy()
- 分区依据()
第 13 节:Streams API – 并行处理
- 本节介绍如何使用流执行并行处理
- 并行编程如何利用机器中的处理器执行并发操作?
- 并行编程内部如何工作?
- 如何检查顺序编程和并行编程之间的性能?
- 不适合使用并行编程的场景
第 14 节:可选
- 本节介绍什么是可选的以及可选的好处
- Optional 如何帮助你避免空指针异常
- 探索可选的不同操作,例如: 空的() 可空() 的() 或Else() 或ElseGet() 或ElseThrow() 存在() 如果有的话() 地图() flatMap() 筛选()
- 空的()
- 可空()
- 的()
- 或Else()
- 或ElseGet()
- 或ElseThrow()
- 存在()
- 如果有的话()
- 地图()
- flatMap()
- 筛选()
第 12 节:Streams API – 并行处理
- 本节介绍如何使用流执行并行处理
- 并行编程如何利用机器中的处理器执行并发操作?
- 并行编程内部如何工作?
- 如何检查顺序编程和并行编程之间的性能?
- 不适合使用并行编程的场景
第 13 节:可选
- 本节介绍什么是可选的以及可选的好处
- Optional 如何帮助你避免空指针异常
- 探索可选的不同操作,例如: 空的() 可空() 的() 或Else() 或ElseGet() 或ElseThrow() 存在() 如果有的话() 地图() flatMap() 筛选()
- 空的()
- 可空()
- 的()
- 或Else()
- 或ElseGet()
- 或ElseThrow()
- 存在()
- 如果有的话()
- 地图()
- flatMap()
- 筛选()
第 14 节:新的日期/时间库
- 本节介绍新的日期/时间库,例如LocalDate、LocalTime、LocalDateTime
- 如何使用Period、Duration查找 LocalDate、LocalTime 和 LocalDateTime 之间的差异
- 如何使用即时表示以机器可读格式表示时间
- 如何使用ZonedDateTime来使用时区
- 如何使用DateTimeFormatter格式化日期
第 15 节:使用 var 进行局部变量类型推断 (LVTI)
- 在本节中,我们将编码并了解 LVTI 功能,以便使用类型推断简单地声明局部变量。
第 16 节:文本块
- 在本节中,我们将编码并了解增强 Java 中字符串功能的 TextBlocks。
第 17 节:增强型交换机
- 在本节中,我们将编码并了解新的表达式Switch 。 Switch – 作为一种表达 使用“yield”的多行 switch 表达式 增强型 Switch 功能全面
- Switch – 作为一种表达
- 使用“yield”的多行 switch 表达式
- 增强型 Switch 功能全面
第 18 条:记录
- 在本节中,我们将编写代码并探索现代 Java 中的记录类概念。 记录类别 记录类中的自定义构造函数和验证 记录类中的对象相等性
- 记录类别
- 记录类中的自定义构造函数和验证
- 记录类中的对象相等性
第 19 节:模式匹配
- 在本节中,我们将编码并学习模式匹配。 模式匹配简介 记录模式 – 记录上的模式匹配 守卫模式
- 模式匹配简介
- 记录模式 – 记录上的模式匹配
- 守卫模式
第 20 节:ChekoutService 应用程序 [ 实时用例 ]
- 在本节中,我们将使用迄今为止学到的所有现代 Java 概念来实现一个实时应用程序。
第 21 节:简单的 Web 服务器
- 在本节中,我将向您演示 jwebserver 以及它如何将文件和文件夹作为资源提供服务。
第 22 节:新的 Http 客户端
- 在本节中,我们将编码并探索支持 HTTP2/Websockets 的新 HTTP 客户端。 新的 HttpClient – 通过 ID 获得电影的 GET 请求 HTTP 客户端的 JUnit 测试 异步模式构建HTTPClient 构建 HTTP 客户端 – GET 请求以检索 AllMovies
- 新的 HttpClient – 通过 ID 获得电影的 GET 请求
- HTTP 客户端的 JUnit 测试
- 异步模式构建HTTPClient
- 构建 HTTP 客户端 – GET 请求以检索 AllMovies
第 23 节:Java 平台模块系统 (JPMS)
- 在本节中,我们将编码并学习如何使用 JPMS 或模块构建 Java 应用程序。 JPMS 简介使用 JPMS 构建 Java 应用程序 使用多个模块 使用多个模块 – 传递性 未命名模块和自动模块
- JPMS 简介使用 JPMS 构建 Java 应用程序
- 使用多个模块
- 使用多个模块 – 传递性
- 未命名模块和自动模块
在本课程结束时,您将全面了解Java 8、Java ll、Java 17、Java 21的所有 功能,并在实际 Java 项目中实现它
本课程适合哪些人:
- 任何愿意学习新的 Java 功能(如 Lambdas、Streams、并行编程、新数据时间库等)的人,
- 希望将自己的知识提升到更高水平以编写更简洁、更易读的代码的 Java 开发人员
| 共 133 节课程 • 总时长 14 小时 24 分钟 | |
| 第一章 入门 | |
| 1. 课程介绍 | 3分37秒 |
| 2. 先决条件 | 1分54秒 |
| 第二章 入门现代Java | |
| 1. 现代Java简介:整体概览 | 7分10秒 |
| 第三章 本地设置 | |
| 1. Java 安装 | 8分20秒 |
| 第四章 为什么Java 8 | |
| 1. 为什么Java 8很重要 | 5分16秒 |
| 2. 命令式编程与声明式编程 – 示例 1 | 6分25秒 |
| 3. 命令式编程与声明式编程 – 示例 2 | 5分28秒 |
| 第五章 Lambda介绍 | |
| 1. Lambda是什么 | 2分29秒 |
| 2. 实验:使用Lambda实现Runnable | 14分1秒 |
| 3. 实验室:使用Lambda实现比较器 | 7分53秒 |
| 第六章 Lambda表达式和函数式接口 | |
| 1. 函数式接口介绍 | 2分27秒 |
| 2. 实验室:消费者功能接口 – 第一部分 | 4分30秒 |
| 3. 实验室:消费者功能接口 – 第二部分 | 12分43秒 |
| 4. 实验室 BiConsumer 函数接口 | 9分44秒 |
| 5. 实验室 – 谓词 – 函数式接口 – 第一部分 | 10分9秒 |
| 6. 实验室 – 谓词 – 函数式接口 – 第二部分 | 10分17秒 |
| 7. 实验室 结合谓词 + 消费者 | 6分52秒 |
| 8. 实验室 双目谓词 | 3分51秒 |
| 9. 实验室功能 – 功能接口 – 第一部分 | 9分31秒 |
| 10. 实验室 功能 – 功能接口 – 第二部分 | 6分3秒 |
| 11. 实验室 BiFunction 函数式接口 | 5分51秒 |
| 12. 实验室:一元运算符和二元运算符函数接口 | 8分37秒 |
| 13. 实验室 – 供应商 – 功能接口 | 4分22秒 |
| 第七章 构造函数和方法引用 | |
| 1. 方法引用 | 3分8秒 |
| 2. 实验方法参考 – 函数 | 3分28秒 |
| 3. 实验室方法参考 – 消费者 | 4分11秒 |
| 4. 实验:将Lambda表达式重构为方法引用 | 5分9秒 |
| 5. 构造函数引用 | 4分50秒 |
| 第八章 Lambda表达式和局部变量(有效最终) | |
| 1. Lambda表达式中的局部变量 | 6分10秒 |
| 2. Lambda表达式中的有效最终变量及其优势 | 1分28秒 |
| 第九章 流式API | |
| 1. 流介绍 | 10分53秒 |
| 2. 流API是如何工作的 | 6分25秒 |
| 3. 比较 Streams 与 Collections | 6分59秒 |
| 4. 实验室 如何调试流操作(1) | 4分55秒 |
| 5. 实验室 如何调试流操作 | 4分55秒 |
| 第十章 流API – 操作 | |
| 1. 实验:流操作 – map() | 8分21秒 |
| 2. 实验室 流操作 – flatMap() | 6分27秒 |
| 3. 实验室 流操作 – distinct() , count() , sorted() | 5分35秒 |
| 4. 实验室 流操作 – 使用比较器进行自定义排序 | 7分43秒 |
| 5. 实验室 流操作 – filter() | 5分39秒 |
| 6. 实验 流操作 – reduce() – 第一部分 | 12分39秒 |
| 7. 实验:流操作 – reduce() – 第二部分 | 5分37秒 |
| 8. 实验室流操作 – Map + Filter + Reduce模式 | 8分52秒 |
| 9. Lab 流水线操作 max 使用 reduce() 函数 | 10分13秒 |
| 10. 实验室流操作 – 使用reduce函数的min() | 5分1秒 |
| 11. 实验 – 流操作 – limit() 和 skip() | 7分7秒 |
| 12. 实验 流操作 allMatch(), anyMatch() 和 noneMatch() | 6分25秒 |
| 13. 实验室 流操作 – findAny() 和 findFirst() | 8分3秒 |
| 14. 短路流操作 | 3分41秒 |
| 第11章 流API – 工厂方法 | |
| 1. 流操作 – of(), iterate(), generate() | 7分44秒 |
| 第12章 流API – 数字流 | |
| 1. 数值流简介 | 6分 |
| 2. 实验:NumericStream – range() , rangeClosed(), count(), foreach() | 6分20秒 |
| 3. 实验室 – NumericStream – sum() , max(), min(), average() | 6分25秒 |
| 4. 实验 NumericStream – 自动装箱,自动拆箱,mapToInt()(1) | 6分42秒 |
| 5. 实验室:NumericStream – 自动装箱,自动拆箱,mapToInt() | 6分42秒 |
| 6. 实验室:NumericStream – mapToObj(), mapToDouble(), mapToLong() | 5分52秒 |
| 第13章 流式API – 终端操作 | |
| 1. Lab 连接() | 6分2秒 |
| 2. Lab 计数() | 3分7秒 |
| 3. Lab 映射() | 3分49秒 |
| 4. Lab minBy() , maxBy() 使用 collect() | 4分28秒 |
| 5. 实验:使用collect()函数实现sum()和avg() | 4分13秒 |
| 6. Lab 分组By() – 类型1 | 7分43秒 |
| 7. Lab 分组By() – 类型 2 | 6分48秒 |
| 8. Lab 分组By() – 类型 3 | 3分34秒 |
| 9. Lab 分组By() – maxBy(), minBy(), collectingAndThen() | 6分4秒 |
| 10. Lab 按照分区进行() | 6分3秒 |
| 第14章 流式API – 并行处理 | |
| 1. 并行流介绍 | 3分33秒 |
| 2. 实验:比较顺序流与并行流的性能 | 5分43秒 |
| 3. 平行流(Parallel Stream)是如何工作的 | 2分55秒 |
| 4. 实验:构建并行流管道 | 4分36秒 |
| 5. 实验:何时不应使用并行流 – 示例 1 | 5分38秒 |
| 6. 实验:何时不应使用并行流 – 第二部分 | 4分48秒 |
| 第15章 可选 | |
| 1. 可选参数介绍 | 12分18秒 |
| 2. 实验 可选 empty(), ofNullable(), Of() | 6分47秒 |
| 3. Lab 或Else(), orElseGet() ,orElseThrow() | 9分43秒 |
| 4. Lab 如果存在(), 存在() | 4分3秒 |
| 5. Lab map(), flatMap(), filter() – 部分1 | 6分23秒 |
| 6. Lab map()、flatMap()、filter() – Part2 | 8分47秒 |
| 第16章 接口中的默认静态方法 | |
| 1. 默认静态方法介绍 | 2分51秒 |
| 2. 实验室 默认方法 | 7分26秒 |
| 3. 实验:使用Comparator探索sort()操作 – 第一部分 | 11分22秒 |
| 4. 实验:使用Comparator探索sort()操作 – 第二部分 | 4分1秒 |
| 5. 实验:创建具有默认静态方法的界面 | 13分24秒 |
| 6. 抽象类与接口 | 1分6秒 |
| 7. 实验 多重继承 | 7分57秒 |
| 8. 实验室 多重继承 – 解决冲突 | 2分47秒 |
| 第17章 新的DateTime API | |
| 1. 新DataTime库简介 | 6分11秒 |
| 2. 实验室 LocalDate – 创建,获取 LocalDate 值 | 7分18秒 |
| 3. 实验室 LocalDate – 修改 LocalDate | 6分52秒 |
| 4. 实验室 LocalDate – LocalDate 额外功能 | 8分13秒 |
| 5. 实验室 本地时间 | 15分35秒 |
| 6. 实验室 LocalDateTime – 创建修改 LocalDateTime | 9分39秒 |
| 7. 将LocalDateLocalTime转换为LocalDateTime的实验 | 5分11秒 |
| 8. 实验室 比较日期 – 时期 | 11分 |
| 9. 实验室 比较时间 – 持续时间 | 7分51秒 |
| 10. 实验室 即时 | 6分15秒 |
| 11. 实验室 时间区域 – ZonedDateTime, ZoneId , ZoneOffset | 15分51秒 |
| 12. 实验室 时间区 – 将 Instant,LocalDateTime 转换为 ZonedDateTime | 5分55秒 |
| 13. 实验:将 java.util.Date 转换为 java.sql.Date 到 LocalDate | 8分21秒 |
| 14. 将输入的文本翻译为中文 使用DateTimeFormatter解析LocalDate | 14分52秒 |
| 15. 使用DateTimeFormatter格式化LocalTime | 8分42秒 |
| 16. 使用DateTimeFormatter解析LocalDateTime格式 | 9分27秒 |
| 第18章 Java 9 及更高版本功能探索的基础项目设置 | |
| 1. 项目设置 | 3分24秒 |
| 第19章 局部变量类型推断(LVTI)使用var | |
| 1. 什么是局部变量类型推断 | 7分52秒 |
| 2. 使用var(1)的限制 | 2分40秒 |
| 3. 使用var的限制 | 2分40秒 |
| 第20章 文本块 | |
| 1. 文本块 – 增强了字符串的力量 | 8分46秒 |
| 第21章 增强型交换机 | |
| 1. 开关 – 作为表达式 | 8分36秒 |
| 2. 使用 yield 的多行 switch 表达式 | 2分53秒 |
| 3. 增强型交换机是穷尽的 | 2分58秒 |
| 第22章 记录 | |
| 1. 记录类 | 6分50秒 |
| 2. 自定义构造函数和记录类中的验证 | 7分46秒 |
| 3. 对象在记录类中的相等性 | 3分32秒 |
| 第23章 密封类接口 | |
| 1. 密封类介绍类型 | 6分38秒 |
| 2. 密封类的子类 | 3分56秒 |
| 3. 在抽象类上使用sealed | 2分53秒 |
| 4. 使用sealed修饰接口 | 2分56秒 |
| 第24章 模式匹配 | |
| 1. 模式匹配简介 | 8分53秒 |
| 2. 记录模式 – 记录上的模式匹配 | 5分37秒 |
| 3. 保护模式 | 3分14秒 |
| 第25章 CheckoutService 应用 实时用例 | |
| 1. 应用程序概述 | 4分42秒 |
| 2. 使用密封类实现PaymentService | 13分58秒 |
| 第26章 简易Web服务器 | |
| 1. 动作中的简单Web服务器 | 4分57秒 |
| 第27章 新 Http 客户端 | |
| 1. 新的HttpClient – 通过ID获取电影的GET请求 | 10分18秒 |
| 2. JUnit 测试 HTTP 客户端 | 3分13秒 |
| 3. 在异步模式下构建HTTPClient | 5分28秒 |
| 4. 构建HTTP客户端 – 发送GET请求以检索所有Movies | 4分11秒 |
| 第28章 Java 平台模块系统 (JPMS) | |
| 1. JPMS 简介 | 6分29秒 |
| 2. 使用JPMS构建Java应用程序 | 5分51秒 |
| 3. 使用多个模块 | 5分10秒 |
| 4. 处理多个模块 – 传递地 | 3分59秒 |
| 5. 未命名模块和自动模块(1) | 5分22秒 |
| 6. 未命名模块和自动模块 | 5分22秒 |
| 1. 关于课程更新与获取 如何获取本站课程? ○ 免费获取方式:在本站签到、评论、发布文章等可获取积分,通过积分购买课程。 ○ 付费获取方式:购买本站【月度会员】或【永久会员】。 课程购买后是否支持更新? ○ 是的,所有课程均提供免费更新服务。 我们致力于为您提供持续的学习支持。 如何获取更新? ○ 单独购买的课程: 您可在“个人中心”随时查看购买记录及最新下载链接,轻松获取免费更新。 ○ 永久会员: 您可在相关页面直接查看最新下载地址,随时免费获取更新。 ○ 非永久会员(重要提示):通过会员权限下载的课程,在“个人中心”可能不显示具体订单记录。 因此,会员到期后,您将无法通过“个人中心”查看最新下载链接。 ① 解决方案建议:续费会员: 恢复会员权限后,即可再次查看所有最新下载链接。 ② 妥善保存下载链接: 我们强烈建议您在会员有效期内,保存好本站分享的课程下载链接。通常,课程更新内容会直接补充到原有分享链接中。 |
| 2. 关于课程资料 课程下载后资料是否齐全? ○ 绝大部分课程资料齐全。 我们尽力确保您获得完整的学习资源。 ○ 少数情况说明: 极少数课程可能存在资料缺失情况。针对 Udemy 课程,资料形式多样,请知悉:本地文件(随视频下载): 此类课件通常随视频一并提供,下载即得。 ① 本地文件(含链接): 课件文件中会提供资料下载链接,您需自行访问链接下载。此类资料通常也可获取。 ② 在线平台存储(如 GitHub): 讲师会在视频中说明资料获取方式(如访问特定平台),请您按指引自行下载。 ③ Udemy 平台内资料: 部分资料需登录您在 Udemy 购买的账号才能查看。此类资料本站无法提供,除非您自行在 Udemy 平台购买该课程。 |
| 3. 关于课程字幕 是否提供中英文双字幕?原本无字幕的课程是否支持? ○ 是的,本站下载的所有课程均提供中英文双字幕,包括 Udemy 原本无任何字幕的课程。 我们致力于提升您的学习体验。 Udemy 字幕现状与本站服务: ○ Udemy 绝大多数课程本身不提供任何字幕。在少数提供字幕的课程中,也几乎不提供中文字幕。 本站字幕服务流程: ① Udemy 有字幕: 我们会将其翻译成中文字幕,与英文字幕一同提供。 ② Udemy 无字幕: 我们会通过技术手段识别生成英文字幕,再翻译成中文字幕,一同提供给您。 字幕服务重要说明(请您理解): ○ 翻译精度: 字幕翻译采用谷歌翻译引擎完成,虽不及人工翻译精准,但足以保障您正常学习理解。 ○ 若您仍然觉得字幕精度较低: 可联系站长针对性润色字幕(该服务仅限本站会员)。 |
| 4. 关于视频存储与使用 视频存储位置与观看/下载方式? 本站所有课程视频均存储于网盘平台。 您支持在线观看: 可在网盘内直接播放学习。 您支持下载: 可将视频下载至本地,使用播放器播放,更灵活便捷。 主要存储网盘:百度网盘 视频格式与加密情况? 本站所有课程视频均以 MP4 或 MKV 通用格式提供。 视频文件不加密,您可自由分享(请遵守相关法律法规)。 播放建议: 使用本地播放器(如 PotPlayer)播放时,可同时加载中英文字幕文件,学习体验更佳。您可参考我们提供的《PotPlayer 挂载中英双字幕教程》。 |
| 5. 关于售后支持与退款政策 遇到问题如何联系? 无论您在购买前或购买后遇到任何疑问,都欢迎随时联系站长。 我们将竭诚为您服务。 退款政策说明: 原则: 由于虚拟商品(课程、资料等)具有可复制性,一旦购买成功并完成下载,原则上不支持退款。 请您在购买前仔细阅读课程介绍、资料说明及本条款,确认符合您的需求。 如有不确定之处,欢迎先行咨询站长。 |



























暂无评论内容