Java8新特性
一 . Lambda表达式又称闭包,允许将函数作为参数进行传递,不需要声明参数类型。
Lambda表达式的语法格式为( parameters ) --> expression 或 ( parameters ) ---> { statements; }
Lambda表达式是在匿名内部类的基础上发展而来的,使得表达更加简洁,速度更快
二 默认方法和静态方法
Java8后接口可以静态方法(用static关键字修饰的方法)和默认方法(指的是用default关键字修饰的方法)
三 方法引用
使用操作符 : : 将方法名和对象或类的名字分开来
compare的源码,比较两个数的大小,相等为0,大于为1,小于为-1,所以返回的是0
四 函数式接口指的是有且只有一个抽象方法的接口
函数式接口主要有以下几种
Function<T,R>:函数型接口
源码中有四个方法
举个例子
Predicate:断言型接口
源码中有五个方法
Consumer:消费型接口
源码只有两个方法
Supplier:提供者(生产者)型接口
源码中只有一个方法
其实HashMap中也用到了函数接口
五 Stream
把真正的函数式编程风格引入到Java中。
在Java8中有两个方法来生成流
1. stream() ->为集合创建串行流
2.parallelStream() ->为集合创建并行流
六 Optional类(用来解决空指针异常)
首先看看Optional类的部分源码
1.Optional 类是一个可以为null的容器对象。如果值存在则isPresent()方法会返回true,调用get()方法会返回该对象。
2.Optional 是个容器:它可以保存类型T的值,或者仅仅保存null。Optional提供很多有用的方法,这样我们就不用显式进行空值检测。
3.Optional 类的引入很好的解决空指针异常。