一个Lambda表达式其实就是定义了一个匿名方法,只不过这个方法必须符合至少一个函数接口。
lambda表达式的基本语法形式:()->方法体。
1、(变量,变量) -> 单行语句;
2、(变量...) ->表达式;
3、(变量...) ->{多行语句};
2、只有一个变量的时候()可以省略。
3、如果lambda表达式中只有一条return语句,则可以省略return。lambda表达式会自动将这条语句的值作为返回值。
什么是函数式接口?
一个接口,如果只有一个显式声明的抽象方法,那么它就是一个函数接口。lambda表达式的基本语法形式:()->方法体。
而在整个java之中,对于lambda表达式一共定义了有三类语法:
1、(变量,变量) -> 单行语句;
2、(变量...) ->表达式;
3、(变量...) ->{多行语句};
注意:
1、变量类型可以省略,Java编译器会根据上下文推断出来。2、只有一个变量的时候()可以省略。
3、如果lambda表达式中只有一条return语句,则可以省略return。lambda表达式会自动将这条语句的值作为返回值。
程序示例
public class My {
//使用Runnable来说明Lambda表达式
@Test
public void test1() {
Runnable r = () -> System.out.println("Lambda");
r.run();
}
//使用Comparator
@Test
public void test2() {
//只有一条语句可以省略return
Comparator<Integer> com = (x,y) -> Integer.compare(x, y) ;
System.out.println(com.compare(10, 20));
}
@Test
public void test3() {
//有多条语句 不能省略{} 和 return
Comparator<Integer> com = (x,y) -> {Integer a = Integer.compare(x, y);
return a ;
};
System.out.println(com.compare(10, 20));
}
}