Java零基础入门-java8新特性(完结篇)

一、概述

       ​上几期,我们是完整的学完了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关键字即可。

比如我如下我定义一个静态方法。

    static void printStr1(){System.out.println("我是bug菌2!");}

然后要调用的就是直接用类名点方法即可。 

         总而言之,对于默认方法的使用相对还是比较简单的,比较实用。

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 时间格式的时间。

演示代码如下:

    @Testpublic void testLocalDate(){LocalDate now = LocalDate.now();System.out.println(now);}

运行结果截图如下:

 LocalTime类

        LocalTime类是表示一个时间。

演示代码如下: 

    @Testpublic void testLocalTime(){LocalTime now = LocalTime.now();System.out.println(now);}

运行结果截图如下:

 LocalDateTime类

        表示的是日期和时间结合的时间。

演示代码如下: 

    @Testpublic void testLocalDateTime(){LocalDateTime now = LocalDateTime.now();System.out.println(now);}

运行结果截图如下:

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/793405.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

走进车厂 | 移远通信以前沿车载技术,照亮智能网联汽车产业创新发展之路

无钥匙自动解锁方便快捷、实时路况导航精准高效、语音指令轻松控制车辆、车载娱乐系统丰富多样……随着智能化、数字化浪潮的不断推进,现如今的汽车出行焕然一新。 正如我们所见,汽车产业正在经历前所未有的变革。物联网、车联网等前沿技术的发展和应用&…

idea Springboot校园新闻系统VS开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 springboot 校园新闻发布系统是一套完善的信息系统,结合springboot框架和bootstrap完成本系统,对理解JSP java编程开发语言有帮助系统采用springboot框架(MVC模式开发),系统具有完整的源代码和数据库&a…

ubuntu无法粘贴复制windows中的内容,分辨率无法自适应电脑自带系统

1、直接在命令行执行以下命令 sudo apt-get autoremove open-vm-tools //卸载已有的工具 sudo apt-get install open-vm-tools //安装工具open-vm-tools sudo apt-get install open-vm-tools-desktop //安装open-vm-tools-desktop 2、重启Ubuntu系统即可 3.如果上述…

mbti,ESTP型人格的心理问题分析

什么是ESTP型人格 ESTP分别代表外向,实感,理智,依赖,而ESTP型人格则是一种性格上十分激进,喜欢冒险,并且总是因为情绪起伏过大,而一下子做出应激行为的相对冒险的人格。具有ESTP型人格的人一般…

蓝桥杯 --- 日期问题模板

目录 1.如何判断闰年 2.如何遍历当前年份的每一天 3.如果想要输出某一年某一天到某一年某一天之间一共有多少天。 4.精确到具体周几到周几的问题分析 5.如何直接通过一层for循环枚举年月日 习题: 蓝桥杯竞赛特别喜欢考日期问题,今天给大家分享一下…

EfficientVMamba实战:使用 EfficientVMamba实现图像分类任务(二)

文章目录 训练部分导入项目使用的库设置随机因子设置全局参数图像预处理与增强读取数据设置Loss设置模型设置优化器和学习率调整策略设置混合精度,DP多卡,EMA定义训练和验证函数训练函数验证函数调用训练和验证方法 运行以及结果查看测试完整的代码 在上…

HarmonyOS(鸿蒙)——单击事件

2.4 实现ClickedListener接口并重写onClick方法 2.5 实现onClick方法中的具体逻辑,以此完成点击事件的相关业务操作 三、测试 3.1 登录远程模拟器 3.2 运行项目 四、精选好文 一、简介 1.1 什么是组件 组件就是文本、按钮、图片等元素的统称 1.2 什么是事件 …

grep无法使用完整的正则表达式

问题描述 grep无法使用完整的正则表达式,比如前置断言、后置断言、\d和\t、\n等 问题原因 使用了扩展正则,而不是perl正则。规则和perl正则不同 从文档上讲得很清楚: -E PATTERN is an extended regular expression 他是扩展表达式&#…

C++ 不同进制数的表示和转换

在 C++ 中,可以使用不同的方式来表示和转换不同进制数,包括二进制、八进制、十进制和十六进制。 1. 不同进制数的表示 #include <iostream>int main() {int binary = 0b1010; // 二进制,以 0b 或者 0B 开头int octal = 012; // 八进制,以 0 开头int decimal =…

AI编程005/ 逆向生成mysql的建表语句

1/ 通过insert into 语句生成建表语句 有些时候我们能获取到表的insert语句&#xff0c;但是没有表结构。我们可以借助AI工具&#xff0c;让其逆向生成mysql的建表语句。 提示词如下&#xff1a; 根据下面的SQL语句&#xff0c;逆向生存mysql的建表语句&#xff0c;每个字段…

Elasticsearch 8.x ELK 搭建并配置 SSL

说明&#xff1a;这只是本人在家里组网搭建的集群&#xff0c;所以内容排版可能比较随意了&#xff0c;没有耐心的同学直接跳过去看别的文章吧&#xff0c;我只是放在这里留作记录方便以后翻阅 ELK 的坑实在太多了&#xff0c;自己在物理机(多台)逐渐摸索的&#xff0c;安装最新…

洞察规则与人情:游走于无形的智者

在这个纷繁复杂的世界里&#xff0c;规则和人情构成了我们日常生活的框架和纽带。然而&#xff0c;有些人似乎拥有一种特殊的能力&#xff0c;他们能够洞察这些规则和人情的本质&#xff0c;甚至能够在一定程度上操纵和改变它们。这些人&#xff0c;我们可以称他们为游走于无形…

一文掌握线程池实现原理

线程池简介 Java在使用线程执行程序时&#xff0c;需要调用操作系统内核的API创建一个内核线程&#xff0c;操作系统要为线程分配一系列的资源&#xff1b;当该Java线程被终止时&#xff0c;对应的内核线程也会被回收。因此&#xff0c;频繁的创建和销毁线程需要消耗大量资源。…

提高空调压缩机能效的通用方法

压缩机的能效提高主要依靠技术改进而不是大幅度增加材料的消耗&#xff0c;这也是技术经济性最好的节能手段。 1、改进电机效率&#xff0c;电机效率的提高意味着压缩机电效率的提高和压缩机总体效率的提高&#xff1b; 1.1、降低定子铜耗 降低定子绕组中电流通过所产生的铜耗…

Android Studio下载及安装和Gradle的配置(非常详细)从零基础入门到精通,看完这一篇就够了

文章目录 下载安装修改Sdk的位置创建项目修改Gradle的位置查看AS版本工具栏–View项工具栏–Build下的功能说明Build Variants视图说明下载模拟器&#xff08;avd&#xff09;/安卓虚拟设备 屏幕熄灭功能关闭虚拟设备功能删除自己开发的应用软件将开发的应用运行到虚拟设备上。…

如何快速写出漂亮的Button按钮呢?

你是否曾在浏览网页时&#xff0c;被那些色彩鲜艳、功能多样的按钮所吸引&#xff1f;无论是提交表单&#xff0c;还是触发一个动作&#xff0c;按钮都扮演着不可或缺的角色。今天聊聊网页设计中的 <button> 标签。 1. 基础语法 什么是 <button> 标签 <butto…

GIS水文分析计算流向学习

1 初步操作 流向&#xff0c;即水文表面水的流向&#xff1b; 水文分析的很多功能需要基于流向栅格&#xff1b; 在 SuperMap 中&#xff0c;对中心栅格的8个邻域栅格进行编码&#xff1b; 每一个中心栅格的水流方向都由这八个值中的某一个值来确定&#xff1b; 我还没弄懂水…

在 Git Bash 中调整字体大小,可以按照以下步骤进行操作,注意这里是linux虚拟机,命令都是Linux方式的

在 Git Bash 中调整字体大小&#xff0c;可以按照以下步骤进行操作&#xff1a; 打开 Git Bash 终端。 在终端中&#xff0c;点击顶部菜单栏的 "Options"&#xff08;选项&#xff09;。 在弹出的下拉菜单中&#xff0c;选择“text”文本 右侧font那里&#xf…

VUE3和SpringBoot实现ChatGPT页面打字效果SSE流式数据展示

在做这个功能之前&#xff0c;本人也是走了很多弯路&#xff08;花了好几天才搞好&#xff09;&#xff0c;你能看到本篇博文&#xff0c;那你就是找对地方了。百度上很多都是使用SseEmitter这种方式&#xff0c;这种方式使用的是websocket&#xff0c;使用这种方式就搞复杂了&…

《QT实用小工具·九》设备按钮控件

1、概述 源码放在文章末尾 该项目实现了设备按钮控件&#xff0c;主要包含如下功能&#xff1a; 可设置按钮样式 圆形、警察、气泡、气泡2、消息、消息2。可设置按钮颜色 布防、撤防、报警、旁路、故障。可设置报警切换及对应报警切换的颜色。可设置显示的防区号。可设置是否…