简介:

我们可以把Lambda表达式理解为一段可以传递的代码(将代码像数据一样进行传递)。Lambda允许把函数作为一个方法的参数,使用Lambda表达式可以写出更简洁、更灵活的代码,而其作为一种更紧凑的代码风格,使Java的语言表达能力得到了提升。

Lambda表达式语法

Lambda表达式在Java语言中引入了一个操作符“->”,该操作符被称为Lambda操作符或箭头操作符。它将Lambda分为两个部分:

  • 左侧:指定了Lambda表达式需要的所有参数

  • 右侧:制定了Lambda体,即Lambda表达式要执行的功能。

以下是lambda表达式的重要特征:

可选类型声明:不需要声明参数类型,编译器可以统一识别参数值。 可选的参数圆括号:一个参数无需定义圆括号,但无参数或多个参数需要定义圆括号。 可选的大括号:如果主体包含了一个语句,就不需要使用大括号。 可选的返回关键字:如果主体只有一个表达式返回值则编译器会自动返回值,大括号需要指定明表达式返回了一个数值。

Lambda表达式六种语法格式:(重要)

(1)语法格式一:无参,无返回值,Lambda体只需一条语句。如下:

public void test01(){Runnable runnable=()-> System.out.println("我爱北京天安门");runnable.run();//结果:我爱北京天安门}

(2)语法格式二:Lambda需要一个参数,无返回值。如下:

 public void test02(){Consumer<String> consumer=new Consumer<>(){public void accept(String x){System.out.println(x);}};consumer.accept("Hello Consumer");
==================================================================Consumer<String> consumer=(String x)-> System.out.println(x);consumer.accept("Hello Consumer");//结果:Hello Consumer}

(3)语法格式三:Lambda表达式类型推断,参数类型可以省略:

public void test02(){Consumer<String> consumer=(x)-> System.out.println(x);consumer.accept("Hello Consumer");//结果:Hello Consumer}

(4)语法格式四:Lambda只需要一个参数时,参数的小括号可以省略,如下:

public void test02(){Consumer<String> consumer=x-> System.out.println(x);consumer.accept("Hello Consumer");//结果:Hello Consumer}

(5)语法格式五:Lambda需要两个及以上的参数,多条执行语句,并且可以有返回值:

Comparator<Integer> com=new Comparator<Integer>() {@Overridepublic int compare(T o1, T o2) {System.out.println(o1);System.out.println(o2);return o1.compareTo(o2);}};
===========================================================Comparator<Integer> com=(T o1,T o2)->{System.out.println(o1);System.out.println(o2);return o1.compareTo(o2);};

(6)语法格式六:当Lambda体只有一条语句时候,return与大括号若有,都可省略。

Comparator<Integer> com=new Comparator<Integer>() {@Overridepublic int compare(o1,o2) {return o1.compareTo(o2);}};
===========================================================Comparator<Integer> com=(o1,o2)->o1.compareTo(o2);

以上六种情况的总结:

左边:Lambda形参列表的参数类型左边可以省略,如果lambda形参列表只有一个参数,那么其括号也可以省略;

右边:lambda体应该由一对{}包裹,如果lambda体只有一条执行语句,可能是return,那么其=这个方法体的中括号也可以省略。

语法背诵口诀:左右遇一括号省,左侧推断类型省,能省则省。

上述内容学习自:

哔哩哔哩尚硅谷宋红康666节课:666.10-尚硅谷-高级-Lambda表达式使用举例_哔哩哔哩_bilibili

以及csdn大佬详解:(5条消息) Lambda表达式超详细总结_Code0cean的博客-CSDN博客_lambda表达式详细总结

Lambda表达式的学习相关推荐

  1. java8新特性-lambda表达式入门学习

    定义 jdk8发布新特性中,lambda是一大亮点之一.lambda表达式能够简化我们对数据的操作,减少代码量,大大提升我们的开发效率.Lambda 表达式"(lambda expressi ...

  2. lambda不是python的保留字_python-nonlocal关键字的使用,lambda表达式(学习到function到变...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 Python中的nonlocal关键字的使用,lambda表达式,什么是递归,字符串操作方法 总的来说: golbal 全局变量 nonlocal 代表( ...

  3. Java Lambda 表达式快速学习

    Lambda 表达式来源于数学, 因为其简洁性,很多开发语言都支持, Java 在版本8 开始引入. Lamba 表达式是什么? 匿名内部类 接口只能有一个需要被实现的方法 Lamba 表达式作用 代 ...

  4. python中集合所用的reduce_Python中reduce函数和lambda表达式的学习

    reduce函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1.2 个元素进行操作,得到的结果再与第三个数据用 ...

  5. 【Java学习笔记之三十一】详解Java8 lambda表达式

    Java 8 发布日期是2014年3月18日,这次开创性的发布在Java社区引发了不少讨论,并让大家感到激动.特性之一便是随同发布的lambda表达式,它将允许我们将行为传到函数里.在Java 8之前 ...

  6. Java学习笔记之 Lambda表达式

    Java Lambda表达式 Lambda表达式 1.引言 2.为什么 Java 需要 Lambda 表达式 3.Lambda 表达式的结构 3.1.Lambda 表达式:语法 4.在哪里使用lamb ...

  7. 10个Java 8 Lambda表达式经典示例

    Java 8 刚于几周前发布,日期是2014年3月18日,这次开创性的发布在Java社区引发了不少讨论,并让大家感到激动.特性之一便是随同发布的lambda表 达式,它将允许我们将行为传到函数里.在J ...

  8. 深入浅出 Java 8 Lambda 表达式

    摘要:此篇文章主要介绍 Java8 Lambda 表达式产生的背景和用法,以及 Lambda 表达式与匿名类的不同等.本文系 OneAPM 工程师编译整理. Java 是一流的面向对象语言,除了部分简 ...

  9. Java 8 新增lambda表达式(-)

    2019独角兽企业重金招聘Python工程师标准>>> Java 8 刚于几周前发布,日期是2014年3月18日,这次开创性的发布在Java社区引发了不少讨论,并让大家感到激动.特性 ...

最新文章

  1. 面试官再问你 HashMap 底层原理,就把这篇文章甩给他看
  2. python升级和安装pip
  3. ATO,MTO和ETO
  4. 06.移动先行之谁主沉浮----我的代码我来写(Xaml的优势)
  5. Spring的@Scope的几种取值
  6. pytorch微调bert_北大、人大联合开源工具箱UER,3 行代码完美复现BERT、GPT
  7. Cloudera Manager和CDH5.8离线安装
  8. jpi多表联查_数据库两表联查、多表联查,多重联查
  9. linux备份mysql部分表数据,linux mysql 数据按表名称备份
  10. MEncoder 使用实例
  11. 2019年总结 | 31岁,不过是另一个开始
  12. python的目的_Python-** wargs的目的和用途是什么?
  13. linux文件系统选哪种,linux下几种文件系统的测试比较
  14. elasticsearch核心原理
  15. 2020年写字楼行业发展现状及趋势分析
  16. c语言齿轮标准模数选择编程,齿轮参数术语计算模数选择
  17. 37,字节跳动Python面试
  18. 关于中国教育的一些思考
  19. 小糊涂家装预算软件 v8.0 怎么用
  20. 复变|第一章 复数与复变函数 复数

热门文章

  1. php a链接跳转下载,PHP实现点击a标签的href做链接时,直接保存文件(任何类型),而不是通过浏览器直接打开下载的文件...
  2. FreeType2使用总结
  3. 学生成绩管理系统(简易版)
  4. WORD 用tab实现居中和右对齐
  5. Qt打开Word、Excel和PPT总结
  6. 方法: 跳转App Store更新你应用的URL究竟该怎么写
  7. sqli-labs Less-8(布尔盲注)
  8. shell脚本--三种引号的区别
  9. 图像恢复系列之(6)超分(7)反光去除(8)光斑去除 (9)阴影去除(10)水下图像失真去除 | ICCV2021生成对抗GAN...
  10. opencv分离RGB三通道