JAVA8新特性

一、Lambda表达式
1、举例:(o1,o2)-> Integer.compara(o1,o2);
2、格式:
->:lambda操作符或者箭头操作符
->左边:lambda形参列表(接口中抽象方法的形参列表)
->右边:lambda体(重写的抽象方法的方法体)
3、lambda表达式的使用:
总结:
->左边:Lambda形参列表的参数类型可以省略;如果lambda形参列表只有一个参数,括号可以省略
->右边:lambda体应该使用{ }包裹;如果只有一条执行语句(可能是return语句),{ }可以省略

  1. 4lambda表达式的本质:作为接口的实例,接口要求是函数式接口

二、函数式接口
如果一个接口仅仅声明了一个抽象方法,则此接口就称为函数式接口

三、方法引用
1、使用情景:当要传递给lambda体的操作,已经有实现的方法了,可以使用方法引用!
2、方法引用:本质就是lambda表达式

3、使用格式:类(或对象)::方法名<br />    4、具体分为如下的三种情况<br />            对象::非静态方法<br />            类::静态方法<br />            类::非静态方法<br />    5、要求接口中的抽象方法和形参列表和返回值类型与方法引用的抽象方法和形参列表都要一致

四、SteamAPI
/*
1、Stream关注的是对数据的运算,与CPU打交道
集合关注的是数据的存储,与内存打交道

2、
—不会自己存储元素
—不会改变源对象。相反,他们会返回一个持有结果的新Stream
—操作是延迟执行的,会等到需要结果的时候才执行

3、Steam的执行流程
①Stream的实例化
②一系列中间操作(过滤、映射。。。)
③终止操作

4、说明
一个操作链,对数据源数据进行处理
* 一旦执行终止操作,立马进行中间操作链并产生结果、之后不再使用

五、Optional类
解决空指针问题
是一个容器,可以保存T类型的对象,是一个可以保存Null的容器
Optional