主要内容
1. Lambda 表达式
2. 函数式接口
3. 方法引用与构造器引用
4. Stream API
5. 其他新特性
Java 8新特性简介
速度更快
代码更少(增加了新的语法 Lambda 表达式)
强大的 Stream API
便于并行
最大化减少空指针异常 Optional
1、Lambda表达式
Lambda 是一个匿名函数
在Java 语言中引入了一个新的语法元
素和操作符。这个操作符为 “->” , 该操作符被称
为 Lambda 操作符或剪头操作符。它将 Lambda 分为
两个部分:
左侧:指定了 Lambda 表达式需要的所有参数
右侧:指定了 Lambda 体,即 Lambda 表达式要执行
的功能。
2、Lambda 表达式语法
语法格式一:无参,无返回值,Lambda 体只需一条语句
Runnable r1 = () → System.out.println("hello world");
语法格式二:Lambda 需要一个参数
Consumerfun = (args) → System.out.println(args);
语法格式三:Lambda 只需要一个参数时,参数的小括号可以省略
Consumerfun = args → System.out.println(args);
语法格式四:Lambda 需要两个参数,并且有返回值
BinaryOperator<Long> bo = (x, y) → {
System.out.println("hello world");reurn x + y;}
语法格式五:当 Lambda 体只有一条语句时,return 与大括号可以省略
BinaryOperator<Long> bo = (x, y) → x + y;
语法格式六:数据类型可以省略,因为可由编译器推断得出,称为“类型推断”
BinaryOperator<Long> bo = (Longx, Long y) → {
System.out.println("hello world");reurn x + y;}
类型推断:
上述 Lambda 表达式中的参数类型都是由编译器推断
得出的。Lambda 表达式中无需指定类型,程序依然可
以编译,这是因为 javac 根据程序的上下文,在后台
推断出了参数的类型。Lambda 表达式的类型依赖于上
下文环境,是由编译器推断出来的。这就是所谓的
“类型推断”
2、函数式接口
(1) 只包含一个抽象方法的接口ÿ