jdk8新特性_JDK8与JDK9新特性学习

7db2cd344c099850daff8493f7051ae6.png

一、环境和软件准备

环境:window或者linux环境

下载软件:

1.JDK版本:JDK9下载路径

2.安装eclipse,当然可以使用其他编辑器

二、Lambda表达式预演

1.面向对象的Runnable接口写法

e10466293dbf2b676d41207b54c8df8c.png

2.使用函数式编程思想

异同点:

  • [ 面向对象强调“一切皆对象”,如果想要做事情,必须找到对象来做]
  • [函数式编程思想强调“做什么,而不是怎么做” ]
  • 例子:
de66e9e7688ecdb7cc177cc4e03294d3.png

分析:这样的代码是不是更加简洁。

Runnable接口当中的run方法语义分析:

1 参数列表为空,不需要任何条件就可以执行该方法

2 没有返回值:方法不产生任何数据结果

3 方法体大括号:这个才是关键的方法内容所在

Lambda表达式:

1 前面一个小括号:不需要任何参数条件,即可直接执行

2 箭头指向后面要做的事情

3 箭头后面就好比是方法体大括号,代表具体要做的内容

三、Lambda表达式的标准格式

1.Lambda表达式必须有上下文推导:

a.根据调用方法的参数推导得知Lambda对应的接口

b.根据局部变量的赋值来推导得知Lambda对应的接口

2.三要素:一些参数、一个参数、一些代码

3.比如:(参数类型 参数名称) -> {一些代码}

a. 如果参数有多个,那么使用逗号分隔,如果没有参数,则留空。

b.箭头是固定写法

c.大括号其实就相当于是方法体

例子

1.新建一个接口类

6944d31aecc81374ce87d0ed07715fa3.png

2.之前写法要写一个接口实现类

a4fcbce594a01c8aa511cbffdb56cd67.png

3.执行类

7150ae32406a681091b1c5e4550962ae.png

四、Lambda表达式的参数和返回值

1.新建一个Person类

8373f08a15fa211cf52f615abc8972de.png

2.执行类

e4c77d35627a83664ed820fd03d9d673.png

五、Lambda表达式的省略规则:

1、参数类型可以省略,但是只能省略所有参数的类型,或者干脆都不省略,不能只写个别参数类型

2、如果参数有且仅有一个,那么小括号可以省略。

3、如果大括号之内的语句有且仅有一个,那么无论有没有返回值,return、大括号、分号都可以省略

7331dc7597d1e0c2e97bd2e08ea6fdde.png
e95fac5fc9a756ea641770766c6541d2.png
6417c5f976735ac55011dc891f20c588.png

六、接口的组成更新

1.接口组成部分:

  • a.常量
  • b.抽象方法
  • c.默认方法(Java 8)
  • d.静态方法(Java 8)
  • e.私有方法(Java 9)

默认方法例子

8537fe06afdb45cfad54f19c3821a874.png

接口实现类

c04068be3216652020ab1bdb36c90edd.png

执行

b4cc05fabe4922948697328a99355258.png

静态方法例子

67c07a28632042dd8e049ba460119380.png

接口实现类

006b5499470851d450a5a1dc9c4a4fd2.png

执行

240bbd5a3126a8ca8f3cd9e741d184e6.png

私有方法例子

cf971f6e864130041dd5bac305ee8dce.png

执行

8b060c77935c91deffc5e3de607411bf.png

七、通过方法引用改进代码

1.从java8开始 ,引入一个全新的运算符,方法引用符(两个冒号“::”)所在的表达是一个方法引用,方法引用和Lambda本质是完全一样的,目的就是为了简化Lambda表达式的写法

例子

aa94fdf4083c7612666f1a9984c8d66d.png

执行

6c223f86e18538988dda054f61db5a09.png

成员方法引用例子

96c1233d4169a901aea3b3543b880b7f.png
e61cbd28ea4c4a6670812f2a7a5f5be0.png

执行

62924095bf7051910b61375769c1c7a6.png

静态方法引用例子

521438b3afbb78dab65428dc1d35883c.png

执行

a55cd2103c866963253ec1f0aebfaca2.png

父类方法引用例子

a0b73a8beb08779476e9c3ffc167930c.png

执行

e4be36c52b4e74e2ac5e38df011c1652.png

本类方法引用例子

5179d5542d241867c0bb08b9d424a901.png

执行

6169e928dc8423caae347c76d181bcd1.png

数组构造器引用例子

e3d759164ae3f8fa99adcca9a335ebec.png

执行

5ddbcfe86f98583f5cc7236e6366ee16.png

类构造器引用例子

33f57af69699b2e21aa6cec45fba59df.png
80fb7433ca89be73081906c23cab507e.png

执行

64afed3adbaf169acf64706c76deef5b.png

七、JDK常用内置的函数式接口

1.从java8开始 ,jdk内置很多函数式接口,下面介绍几个常用到的

Supplier例子

70c6a41c7ad7c828da27eeefcf51153b.png

Consumer例子

3dade5318c0cb647822936d63a6e5649.png
26f599bed786b0266f0c7ff1f6fc8d2a.png

Predicate例子

fa72689477c2c3f3e3dd6111aa1daf88.png

Function例子

8310c40eba39808926620f8779d60b6f.png
2e69de6bc2d040edfafa5eb95d7e2a50.png

八、JDK9使用函数式接口

6040cf91f29574c67074af8ba7a520e3.png

---------------------

版权声明:本文为CSDN博主「marser1234」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/marser1234/article/details/91402233
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值