Lambda表达式

Lambda表达式是一个匿名函数,我们可以把lambda表达式理解为一段可以传递的代码(将代码段像数据一样传递)。使用它可以写出更简洁,更灵活的代码。作为一种更紧凑的代码风格,是Java语言的表达式能力得到的提升。

Lambda表达式的本质只是一个“语法糖”,由编译器推断并帮你转换为包装为常规的代码,因此你可以使用更少的代码来实现同样的功能。

Java中的Lambda表达式通常使用(argument)->{body}语法书写,例如:

左侧:lambda 表达式的参数列表
右侧:lambda表达式中需要执行的功能,即lambda体
(arg1,arg2...)->{body}
(type1 arg1,type2 arg2...)->{body}

例:

无参数,无返回值,lambda体中只有一行代码时,{}可以忽略
()->System.out.println("Hello World");
无参数,有返回值
()->{return 3.1415;}
有参数,无返回值
(String s)->{System.out.println(s);}
有一个参数,无返回值
s->{System.out.println(s);}
有多个参数,有返回值
(int a,int b)->{return a+b;}
有多个参数,表达式参数类型可以不写,jvm可以根据上下文进行类型推断
(a,b)->{return a-b;}

Lambda表达式的结构

•Lambda表达式可以具有零个,一个或多个参数

•可以显式声明参数的类型,也可以有编译器自动从上下文推断参数的类型。例如(int a,int b)->与(a,b)相同。

•参数用小括号括起来,用逗号分隔,例如(a,b)或(int a,int b)或(String a,int b,float c)。

•空括号用于表示一组空的参数。例如()->40.

•当有且仅有一个参数时,如果不显式指明类型,则不必使用小括号。例如a->return a*a。

•Lambda 表达式的正文可以包含零条,一条或多条语句。

•如果Lambda表达式的正文只有一条语句,则大括号可不用写,且表达式的返回值类型要与匿名函数的返回类型相同。

•如果Lambda 表达式的正文有一条以上的语句必须包含在大括号(代码块)中,且表达式的返回值类型要与匿名函数的返回类型相同

Lambda表达式简介相关推荐

  1. 【Kotlin】Lambda 表达式 ( 简介 | 表达式语法 | 表达式类型 | 表达式返回值 | 调用方式 | 完整示例 )

    文章目录 I . Lambda 表达式 简介 II . Lambda 表达式语法 III . Lambda 表达式类型 IV . Lambda 表达式返回值 V . Lambda 表达式调用 VI . ...

  2. Java8 详解Lambda表达式

    1. 引言 java.util.function包 我们发现使用lambda表达式的时候,经常需要定义一些接口用来辅助我们的编码,这样就会使得本应轻量级的lambda表达式又变得重量级.那是否存在解决 ...

  3. Java 8 Lambda 表达式详解

    版权声明:本文由吴仙杰创作整理,转载请注明出处:https://segmentfault.com/a/1190000009186509 1. 引言 在 Java 8 以前,若我们想要把某些功能传递给某 ...

  4. java8 ie_Java8语法糖之Lambda表达式_Hudie.的博客-CSDN博客

    原文作者:编程一只蝶 原文标题:Java8语法糖之Lambda表达式 发布时间:2021-02-16 13:08:40 一.Lambda表达式简介 Lambda表达式,是Java8的一个新特性,也是J ...

  5. 高级技巧之Lambda表达式

    1.Lambda表达式简介 其本质上是一种匿名方法,它既没有方法名,也即没有访问修饰符和返回值类型,使用它来编写代码将会更加简洁,也更加易读. 2.使用该表达式需要配置的数据 3.传统java和使用L ...

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

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

  7. 夯实Java基础(二十二)——Java8新特性之Lambda表达式

    1.前言 Java 8于14年发布到现在已经有5年时间了,经过时间的磨练,毫无疑问,Java 8是继Java 5(发布于2004年)之后的又一个非常最重要的版本.因为Java 8里面出现了非常多新的特 ...

  8. Java基础教程:Lambda表达式

    Java基础教程:Lambda表达式 引入Lambda Java 是一流的面向对象语言,除了部分简单数据类型,Java 中的一切都是对象,即使数组也是一种对象,每个类创建的实例也是对象.在 Java ...

  9. 【C++】Lambda 表达式详解

    语法糖:Lambda 表达式 一.Lambda表达式简介 二.Lambda表达式语法解析 1. Lambda exp 基本语法结构 2. 捕获变量的几种方式 3. mutable关键字 三.Lambd ...

最新文章

  1. linux apache无法启动,linux mysq 无法启动 apache 无法启动
  2. python语法实例_python基本语法练习实例
  3. python函数体以冒号起始、并且是缩进格式的_Python基础第三课
  4. 如何用DELPHI实现把WORD、EXCEL和图片等存储到数据库中
  5. vue进行判断使用class_vue判断dom的class
  6. 2017.10.26 星际贸易 思考记录
  7. 爬虫库之BeautifulSoup学习(五)
  8. python语言的模块化
  9. 【笔记】解析MP3文件信息
  10. cgroup 原理分析
  11. Cannot add task ‘wrapper‘ as a task with that name already exists.
  12. UINavigationBar颜色设置 用色码设置有误差
  13. java实现语音播放功能
  14. 一款好看的 VSCode 代码主题和图标主题
  15. oracle数据库查看scanip,rac下查看scanip 在哪個節點上
  16. qt调用vc编写库文件的方法
  17. csv文件用excel打开不分列
  18. 更新xcode 12.51时提示空间不足,以及macos的空间清理
  19. 倾斜摄影数据转cesium 3dtile(详细步骤)
  20. 谈谈几种去中心化币币交易所的优缺点

热门文章

  1. 高新企业成长性指标有哪些计算公式?
  2. 中华好诗词大学季第二季(二)
  3. php move函数,php 文件上传 move_uploaded_file
  4. 那时那地。珞瑜路1037号。
  5. 关于error: #20: identifier “XXXX“ is undefined缺失.h文件的问题
  6. 网页配色工具(精品)
  7. firefox越到flash player就会卡死
  8. 花生鼠的日常建站日志-------使用在线网易云音乐api
  9. 编写Python程序输入直角三角形的两个直角边的边长a,b,请你求出其斜边边长,结果保留小数点后三位小数。如a=3,b =4,则输出5.000...
  10. GSMA-eSIM-官网规范说明