Lambda表达式在Java语言中引入了一个操作符**“->”**,该操作符被称为Lambda操作符或箭头操作符。它将Lambda分为两个部分:
左侧:指定了Lambda表达式需要的所有参数
右侧:制定了Lambda体,即Lambda表达式要执行的功能。
以下是lambda表达式的重要特征:
可选类型声明:不需要声明参数类型,编译器可以统一识别参数值。
可选的参数圆括号:一个参数无需定义圆括号,但无参数或多个参数需要定义圆括号。
可选的大括号:如果主体包含了一个语句,就不需要使用大括号。
可选的返回关键字:如果主体只有一个表达式返回值则编译器会自动返回值,大括号需要指定明表达式返回了一个数值。
下面对每个语法格式的特征进行举例说明:
(1)语法格式一:无参,无返回值,Lambda体只需一条语句。如下:
@Test public void test01(){ Runnable runnable=()-> System.out.println("Runnable 运行"); runnable.run();//结果:Runnable 运行 }
(2)语法格式二:Lambda需要一个参数,无返回值。如下:
1 @Test 2 public void test02(){ 3 Consumer<String> consumer=(x)-> System.out.println(x); 4 consumer.accept("Hello Consumer");//结果:Hello Consumer 5 }
(3)语法格式三:Lambda只需要一个参数时,参数的小括号可以省略,如下:
public void test02(){ Consumer<String> consumer=x-> System.out.println(x); consumer.accept("Hello Consumer");//结果:Hello Consumer }
(4)语法格式四:Lambda需要两个参数,并且Lambda体中有多条语句。
@Test public void test04(){ Comparator<Integer> com=(x, y)->{ System.out.println("函数式接口"); return Integer.compare(x,y); }; System.out.println(com.compare(2,4));//结果:-1 }
(5)语法格式五:有两个以上参数,有返回值,若Lambda体中只有一条语句,return和大括号都可以省略不写
@Test public void test05(){ Comparator<Integer> com=(x, y)-> Integer.compare(x,y); System.out.println(com.compare(4,2));//结果:1 }
(6)Lambda表达式的参数列表的数据类型可以省略不写,因为JVM可以通过上下文推断出数据类型,即“类型推断”
@Test public void test06(){ Comparator<Integer> com=(Integer x, Integer y)-> Integer.compare(x,y); System.out.println(com.compare(4,2));//结果:1 }
类型推断:在执行javac编译程序时,JVM根据程序的上下文推断出了参数的类型。Lambda表达式依赖于上下文环境。
原文出处:https://blog.csdn.net/huangjhai/article/details/107110182
标签:System,参数,println,out,Java8,表达式,Lambda From: https://www.cnblogs.com/ZDY-XJ/p/17026125.html