Lambda表达式

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

posted @   《END》  阅读(34)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示