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 操作三步骤
接口的默认方法与静态方法
新时间日期 API
三、正文
1️⃣java8 新特性

2️⃣什么是 Lambda 表达式
1️⃣可选类型声明
2️⃣可选的参数圆括号
3️⃣可选的大括号
4️⃣可选的返回关键字
... ...
以上第 1、2 点内容,我是总结到了该篇《java零基础入门-java8新特性(上篇)》,需要的小伙伴可以去传送门直接去。
3️⃣什么是函数式接口
总而言之:函数式接口,即适用于函数式编程场景的接口。而 Java 中的函数式编程体现就是 Lambda 表达式,所以函数式接口就是可以适用于 Lambda 使用的接口。只有确保接口中有且仅有一个抽象方法,Java 中的 Lambda 才能顺利地进行推导。
4️⃣掌握 Stream Api
总而言之,何为 Stream 流,Stream 是 Java8 中处理集合的关键抽象概念,它可以指定你对集合进行一些处理操作,比如对集合进行非常复杂的查找、过滤和映射数据等操作。
... ...
以上第 3、4 点内容,我是总结到了该篇《java零基础入门-java8新特性(中篇)》。需要的小伙伴可以去传送门直接去。
5️⃣Stream 和 Collections 区别
... ...
6️⃣Stream 创建方式
... ...
以上第 5、6 点内容,我是总结到了该篇《java零基础入门-java8新特性(下篇)》。需要的小伙伴可以去传送门直接去。
7️⃣接口的默认方法与静态方法
上述已经讲了 java8 新特性的其中三种,具体如下:
stream api
lambda 表达式
函数式接口
接下来我还要给大家讲解两种,也是 java8 新特性中比较主要的,这些都是需要大家掌握并且能讲得出,特别是能在实战中用起来不费劲,你接触过,你才能懂,要不然真的会遭鄙视的,相信我,这些虽然在老项目中,很多大佬都不咋用,但是对于目前的新项目,开篇可能都是运用的 java8 的新特性。
所以我这期还得给你们讲完,接口的默认方法与静态方法,及新时间日期 api 这两点,对于 java8 的新特性,就差不多讲完全了。
说起 java8 之接口默认方法与静态方法,这究竟是怎么一回事呢?我们都知道,在 java8 之前啊,我们定义一个接口,比如我们要给一个接口添加新的方法,我们就得在接口上新增,然后这时如果有已经实现该接口的类,都要一一实现该新增的方法,就非常的不灵活。而 java8 的出现就改变了这一点,在给接口定义新方法的同时就不影响到已经实现的类,它不强制实现类去重写接口的所有方法。
所以好处就是大程度的解决了这种接口修改与已有实现类不兼容的问题。比如我在已有接口中添加一个新方法,默认修饰符用 default 关键字来修饰。
比如如下我在 UserService 中添加一个 printStr()方法。

而我在实现类中,完全不需要去重写该 printStr()方法,我可以直接通过该接口类.super.方法()即可。

而对于 java8 中提到的静态方法,其实在写法上就是将默认方法的 default 关键字换成 static 关键字即可。
比如我如下我定义一个静态方法。
点击并拖拽以移动然后要调用的就是直接用类名点方法即可。

总而言之,对于默认方法的使用相对还是比较简单的,比较实用。
8️⃣新时间日期 API
接下来就是对于 java8 提供的新时间日期 api,看过我文章的小伙伴都知道,我在早起是有教学过这些时间日期日历相关的 api 类的,比如 Date 类、Format 类、SimpleDateFormat 类、Calendar 类。这些都是处理时间日期的一些类。
但是今天我要教的是 java8 新提供的 api,那到底有哪些呢?LocalDate、 LocalTime、 LocalDateTime,这些,是我总结出来的比较重要的类,其中它们的实例都是不可变的对象。;别表示使用 ISO-8601 日历系统的日期、时间、日期和时间。对于这三个类,它们提供了简单的本地日期或时间。
如下是具体的总结:
LocalDate:代表 IOS 时间格式(yyyy-MM-dd),可以存储出生日期、纪念日等日期。
LocalTime:表示一个时间(而不是日期)。
LocalDateTime:是用来表示日期和时间的, 这是一个最常用的类之一。
接下来,我就具体给大家使用演示一下吧。这样结合实例你们能看的更明白些;
LocalDate 类
表示的是一个 yyyy-MM-dd 时间格式的时间。
演示代码如下:
点击并拖拽以移动运行结果截图如下:

LocalTime 类
LocalTime 类是表示一个时间。
演示代码如下:
LocalDateTime 类
表示的是日期和时间结合的时间。
演示代码如下:
运行结果截图如下:

这下你们大家就看明白了嘛,我接下来再将三类获取当前时间分别进行输出,给大家演示一下,其实都是很简单时间类,可能用的比较多的就是 LocalDateTime 类。

学到这里,对于 java8 新特性,这里就完结啦。不知道你们对此有啥感想?
... ...
好啦,以上就是本期内容的全部教学内容啦,如果对文中的任何知识点有疑问,欢迎评论区评论留言呀,我看见都会一一解答的。
四、文末
教学是结束了,但是有些话不知我但讲不当讲,啊哈哈, 可我还是想说给你们听听。如下是我很喜欢的一句话,我打算送给你们,希望我们都能变得更好更优秀。
学习不分先后,知识不分多少;事无巨细,当以虚心求教;三人行,必有我师焉!!!
wished for you successed !!!
-------------------------------------------
⭐️若喜欢我,就请关注我叭。
⭐️若对您有用,就请点赞叭。
⭐️若有疑问,就请评论留言告诉我叭。
-------------------------------------------
版权声明: 本文为 InfoQ 作者【喵手】的原创文章。
原文链接:【http://xie.infoq.cn/article/646d6c6db8db033bf36ec438e】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论