1. Lambda表达式的使用举例:
(o1, o2) -> Integer.compare(o1,o2);
2. Lambda表达式的格式举例:
lambda形参列表 -> lambda体
3. Lambda表达式的格式
-> : lambda操作符或箭头操作符
-> 的左边: lambda形参列表,对应着要重写的接口中的抽象方法的形参列表。
-> 的右边: lambda体,对应着接口的实现类要重写的方法的方法体。
4. Lambda表达式的本质:
> 一方面,lambda表达式作为接口的实现类的对象。 ---> "万事万物皆对象"
> 另一方面,lambda表达式是一个匿名函数。
5. 函数式接口:
5.1 什么是函数式接口?为什么需要函数式接口?
> 如果接口中只声明有一个抽象方法,则此接口就称为函数式接口。
> 因为只有给函数式接口提供实现类的对象时,我们才可以使用lambda表达式。
5.2 api中函数式接口所在的包
jdk8中声明的函数式接口都在java.util.function包下。
5.3 4个基本的函数式接口
接口 对应的抽象方法
消费型接口:Consumer<T> void accept(T t)
供给型接口:Supplier<T> T get()
函数型接口:Function<T,R> R apply(T t)
判断型接口:Predicate<T> boolean test(T t)
6. Lambda表达式的语法规则总结
-> 的左边:lambda形参列表,参数的类型都可以省略。如果形参只有一个,则一对()也可以省略。
-> 的右边:lambda体,对应着重写的方法的方法体。如果方法体中只有一行执行语句,则一对{}可以省略。
如果有return关键字,则必须一并省略。