Lambda表达式简介
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表达式简介相关推荐
- 【Kotlin】Lambda 表达式 ( 简介 | 表达式语法 | 表达式类型 | 表达式返回值 | 调用方式 | 完整示例 )
文章目录 I . Lambda 表达式 简介 II . Lambda 表达式语法 III . Lambda 表达式类型 IV . Lambda 表达式返回值 V . Lambda 表达式调用 VI . ...
- Java8 详解Lambda表达式
1. 引言 java.util.function包 我们发现使用lambda表达式的时候,经常需要定义一些接口用来辅助我们的编码,这样就会使得本应轻量级的lambda表达式又变得重量级.那是否存在解决 ...
- Java 8 Lambda 表达式详解
版权声明:本文由吴仙杰创作整理,转载请注明出处:https://segmentfault.com/a/1190000009186509 1. 引言 在 Java 8 以前,若我们想要把某些功能传递给某 ...
- java8 ie_Java8语法糖之Lambda表达式_Hudie.的博客-CSDN博客
原文作者:编程一只蝶 原文标题:Java8语法糖之Lambda表达式 发布时间:2021-02-16 13:08:40 一.Lambda表达式简介 Lambda表达式,是Java8的一个新特性,也是J ...
- 高级技巧之Lambda表达式
1.Lambda表达式简介 其本质上是一种匿名方法,它既没有方法名,也即没有访问修饰符和返回值类型,使用它来编写代码将会更加简洁,也更加易读. 2.使用该表达式需要配置的数据 3.传统java和使用L ...
- 深入浅出 Java 8 Lambda 表达式
摘要:此篇文章主要介绍 Java8 Lambda 表达式产生的背景和用法,以及 Lambda 表达式与匿名类的不同等.本文系 OneAPM 工程师编译整理. Java 是一流的面向对象语言,除了部分简 ...
- 夯实Java基础(二十二)——Java8新特性之Lambda表达式
1.前言 Java 8于14年发布到现在已经有5年时间了,经过时间的磨练,毫无疑问,Java 8是继Java 5(发布于2004年)之后的又一个非常最重要的版本.因为Java 8里面出现了非常多新的特 ...
- Java基础教程:Lambda表达式
Java基础教程:Lambda表达式 引入Lambda Java 是一流的面向对象语言,除了部分简单数据类型,Java 中的一切都是对象,即使数组也是一种对象,每个类创建的实例也是对象.在 Java ...
- 【C++】Lambda 表达式详解
语法糖:Lambda 表达式 一.Lambda表达式简介 二.Lambda表达式语法解析 1. Lambda exp 基本语法结构 2. 捕获变量的几种方式 3. mutable关键字 三.Lambd ...
最新文章
- linux apache无法启动,linux mysq 无法启动 apache 无法启动
- python语法实例_python基本语法练习实例
- python函数体以冒号起始、并且是缩进格式的_Python基础第三课
- 如何用DELPHI实现把WORD、EXCEL和图片等存储到数据库中
- vue进行判断使用class_vue判断dom的class
- 2017.10.26 星际贸易 思考记录
- 爬虫库之BeautifulSoup学习(五)
- python语言的模块化
- 【笔记】解析MP3文件信息
- cgroup 原理分析
- Cannot add task ‘wrapper‘ as a task with that name already exists.
- UINavigationBar颜色设置 用色码设置有误差
- java实现语音播放功能
- 一款好看的 VSCode 代码主题和图标主题
- oracle数据库查看scanip,rac下查看scanip 在哪個節點上
- qt调用vc编写库文件的方法
- csv文件用excel打开不分列
- 更新xcode 12.51时提示空间不足,以及macos的空间清理
- 倾斜摄影数据转cesium 3dtile(详细步骤)
- 谈谈几种去中心化币币交易所的优缺点
热门文章
- 高新企业成长性指标有哪些计算公式?
- 中华好诗词大学季第二季(二)
- php move函数,php 文件上传 move_uploaded_file
- 那时那地。珞瑜路1037号。
- 关于error: #20: identifier “XXXX“ is undefined缺失.h文件的问题
- 网页配色工具(精品)
- firefox越到flash player就会卡死
- 花生鼠的日常建站日志-------使用在线网易云音乐api
- 编写Python程序输入直角三角形的两个直角边的边长a,b,请你求出其斜边边长,结果保留小数点后三位小数。如a=3,b =4,则输出5.000...
- GSMA-eSIM-官网规范说明