java 零基础入门 -java8 新特性 (中篇)
哈喽,各位小伙伴们好,我是喵手。
今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流 学 习,互相学习,才能成长的更快,对吧。
我是一名 java 开发,所以日常接触到最多的就是 java 啦,所以我趁自己有空,就来好好回忆,把自己学到的会的,进行输出,不图什么有回报,只想能帮助到更多的小伙伴,就好。
小伙伴们在批阅的过程中,如果觉得文章不错,欢迎点赞、收藏、关注哦。三连即是对喵手我创作道路上最好的鼓励与支持!
一、概述
论前几期啊,我们是分别讲了Object类
、Date类
、FormDate类
、Calendar类
、System类
及StringBuilder类
,不知道大家掌握的如何,如果没有及时巩固的同学,可以看我这里,我给大家罗列了下,快速学习通道,只希望能帮助到大家更好的学习与成长,这就是我写作的初衷。
上几期,我们是完整的学完了 java 异常类的学习及实战演示、以及学习了线程进程等基础概念,而这一期,我们要来玩点好的东西,那就是 java8,我们都知道 java8 是自 2004 年发布 java5 之后最重要且一次重大的版本更新,虽然我们的 JDK 环境 也升级到了 java1.8,但是在日常的开发过程中,使用最多的编程风格还是停留在 JDK1.7 版本。
那对于 java1.8,你们有了解多少它相关的新特性呢?至于 java8,于 2013 年 9 月正式发布,距离至今已快十年载了,想必大家对它的新特性大大小小也耳濡目染了些吧?那么趁着今天这个空闲日子,我就跟大家一起来聊聊它-java8 之新特性。
二、本期教学目标
java8 有哪些新特性
什么是函数式接口
什么是 Lambda 表达式
掌握 Stream Api
Stream 和 Collect 集合区别
Stream 创建方式
Stream 操作三步骤
三、正文
1️⃣java8 新特性
2️⃣什么是 Lambda 表达式
1️⃣可选类型声明
2️⃣可选的参数圆括号
3️⃣可选的大括号
4️⃣可选的返回关键字
以上第 1、2 点内容,我是总结到了该篇《java零基础入门-java8新特性(上篇)》,需要的小伙伴可以去传送门直接去。
3️⃣什么是函数式接口
说到函数式接口,肯定都要先了解下其概念,要不然后续是没法说的,所谓的函数式接口就是:有且仅有一个抽象方法,但是可以有多个非抽象方法的接口,这样的接口可以转换为 Lambda 表达式,也可以通过 Lambda 表达式来创建该接口的对象。倘若 Lambda 表达式抛出一个受检异常,那么该异常需要在目标接口的抽象方法上也要进行声明。
其次就是 @FunctionalInterface 注解可以在任意函数式接口上使用,这是 Java 8 中专门为函数式接口引入了一个新的注解 @FunctionalInterface 。这样做可以检查它是否满足一个函数式接口的要求,是否是函数式接口,同时 javadoc 也会包含一条声明,证明这个接口是一个函数式接口。
总结语法如下:
点击并拖拽以移动接下来我就给大家举几个例子吧,结合使用函数式接口和 lambda 表达式联合使用,比如联合使用处理一个字符串,具体演示例子请看下方。
首先,我们定义一个函数式接口 Myfuction(),具体定义如下:
接下来,我们再定义一个处理字符串的方法,其中参数为 Myfuction 接口实例和需要转换的字符串,把这两作为参数进行方法入参。
接下来,就是测试环节了,对我们刚才自定义的函数式接口进行一波测试,此时我们传递的函数式接口的参数为 Lambda 表达式,实现的字符串的需求是将字符串统一转化为大写。
具体演示代码如下:
我们直接运行 test()方法,控制台打印的内容如下:
上述打印很明显是成功了,接着我们再对该字符串进行截取字符串的某一部分,看看这个又要怎么实现呢?具体示例代码如下:
点击并拖拽以移动运行 test1 方法,控制台打印结果内容如下所示。
可以看到,我们可以通过 changeStr(MyFunction<String> myFunc, String str)方法结合 Lambda 表达式对字符串进行任意操作,这波操作你们学会了么。
其中有一点需要注意:Lambda 表达式作为参数进行传递 :为了将 Lambda 表达式作为参数传递,其接收 Lambda 表达式的参数类型必须是与该 Lambda 表达式兼容的函数式接口的类型,要不然会报错处理的,这点你们需要注意的哈 。
剩下来的知识点,就需要你们大家空闲时间多练练了啊。
4️⃣掌握 Stream Api
如上是简单学了下何为函数式编程且示例演示,接下来我们还得再学点新的知识点啊,我们都知道,对于 Java8 中有两大最为重要的改变:第一个是引入 Lambda 表达式;二就是 Stream API(java.util.stream.*) 也可称‘’io 流‘’。
说起 Stream,你们知道它是啥吗? Stream 是 Java8 中处理集合的关键抽象概念,它可以指定你对集合进行一些处理操作,比如对集合进行非常复杂的查找、过滤和映射数据等操作。然而使用 Stream API 对集合数据进行操作,就类似于使用 sql 语句 执行的数据库查询一样。其中啊,也可以使用 Stream API 来并行执行操作。
简而言之,Stream API 提供了一种高效且易于使用的处理数据的方式,你们一旦用上,能替你们节俭不少时间呢。
如下是对 Stream 流的一句概念!
流是数据渠道,用于操作数据源(集合、数组等)所生成的元素序列。“集合讲的是数据,流讲的是计算!”
然后对于 Stream 流,总结了三点,你们需要注意一下啊。具体如下:
① Stream 本身不存储元素。
② Stream 本身不会改变源对象。相反,他们会返回一个持有结果的新 Stream。
③ Stream 本身是延迟执行操作。这表明着它们会等到需要结果的时候才会执行。
然后很多小伙伴就越大的好奇了,那具体 Stream 到底怎么使用呀?不急啊,我还要给大家科普玩最后一点,那就是到底如何创建 Stream,操作 Stream 流有哪些步骤流程?
如下是总结对 Stream 操作的三个步骤:
创建 Stream。
操作 Stream。
终止操作.
...
5️⃣Stream 和 Collect 集合区别
...
6️⃣Stream 创建方式
...
7️⃣Stream 操作三步骤
...
好啦,以上就是本期内容的全部教学内容啦,如果对文中的任何知识点有疑问,欢迎评论区评论留言呀,我看见都会一一解答的。
四、文末
教学是结束了,但是有些话不知我但讲不当讲,啊哈哈, 可我还是想说给你们听听。如下是我很喜欢的一句话,我打算送给你们,希望我们都能变得更好更优秀。
学习不分先后,知识不分多少;事无巨细,当以虚心求教;三人行,必有我师焉!!!
wished for you successed !!
⭐️若喜欢我,就请关注我叭。
⭐️若对您有用,就请点赞叭。
⭐️若有疑问,就请评论留言告诉我叭。
版权声明: 本文为 InfoQ 作者【喵手】的原创文章。
原文链接:【http://xie.infoq.cn/article/0e9e4298ebe900c44176acfa7】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论