1.Lambda表达式:函数作为参数传递进方法中
语法:(parameters)-> expretion
(parameters)->{statements}
MathOperation addOperation = (int a,int b) -> a + b;
System.out.println("10+5="+operate(10,5,addOperation));
2.方法引用(method reference):通过方法的名字来指向一个方法
语法:
静态方法引用:Class::static_method
任意对象引用:Class::method
特定对象引用:instance::method
List list = new ArrayList();
list.forEach(a -> System.out.println(a));
等同于
list.forEach(System.out::println);
3.函数式接口(Functional Interface):有且仅有一个抽象方法,但可以有多个非抽象方法的接口
例如:java.lang.Runnable、java.util.function
Predicate<Integer> predicate = n -> true
4.接口默认方法:接口可以有默认方法,不需要实现类去实现方法
语法:在方法前加上default关键字
5.Stream 将元素集合抽象成流,以一种声明的方式处理数据
语法:
创建串行流:stream()
创建并行流:parallelStream()
6.Optional 可以为null的容器对象,解决空指针异常
语法:Optional<Integer> optional = Optional.ofNullable(value);
7.Nashorn JavaScript
8.新的日期时间API
9.内置Base64编码器和解码器