Lambda表达式

1.简介和用法

1.1举例

(o1,o2) -> Integer.compare(o1,o2)

1.2 格式

-> : Lambda操作符 或箭头操作符
->左边:Lambda形参列表(其实就是接口中的抽象方法的形参列表)
->右边:lambda 体 (其实就是重写的抽象方法的方法体)

1.3 lambda表达式的使用:(分为6种情况介绍,详情见本文第二章 语法)

 总结: 
 	->左边 : lambda形参列表的参数类型可以省略(类型推断),如果形参列表内只有一个参数,那么小括号()可以省略
 	->右边 : lambda体应该使用一对{}包裹,如果lambda体只有一条执行语句(可能是return语句),{}和return都可以省略

1.4 lambda表达式的本质:作为函数式接口的实例

1.5 如果一个接口中,只能声明了一个抽象方法,则此接口就成为函数式接口。我们可以在一个接口上使用lambda表达式,这样做可以检查它是否是一个函数式接口。

1.6 所有以前用匿名实现类表示的现在都可以用lambda表达式来写。

2.语法(六种格式)

():参数列表(括号可选)

-> 连接符,固定写法

{}: 参数列表(括号可选)

2.1 无参 无返回值

Runnable r1=()  -> {System.out.print}

2.2 Lambda需要一个参数,但是没有返回值

Consumer<String> con=(String str) -> {System.out.print}

2.3 数据类型可以省略,因为可由编译器推断得出,称为“类型推断”

//不管有多少个参数都可以省略,但是多个参数时要按顺序写
Consumer<String> con=(str) -> {System.out.print}

2.4 Lambda若只需要一个参数时,小括号可以省略

Consumer<String> con=str-> {System.out.print}

2.5 Lambda需要两个或以上的参数,多条语句执行,并可以有返回值

Consumer<Integer> con=(x,y) -> {
	System.out.print("实现函数式结构方法!")
	return Integer.compare(x,y);
}

2.6 当Lambda体只有一条语句时,return与大括号若有,都可以省略

Consumer<Integer> con=
		(x,y) -> Integer.compare(x,y)
posted @ 2022-02-13 15:25  Later^^  阅读(84)  评论(0)    收藏  举报