Lambda表达式的学习
简介:
我们可以把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表达式的学习相关推荐
- java8新特性-lambda表达式入门学习
定义 jdk8发布新特性中,lambda是一大亮点之一.lambda表达式能够简化我们对数据的操作,减少代码量,大大提升我们的开发效率.Lambda 表达式"(lambda expressi ...
- lambda不是python的保留字_python-nonlocal关键字的使用,lambda表达式(学习到function到变...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 Python中的nonlocal关键字的使用,lambda表达式,什么是递归,字符串操作方法 总的来说: golbal 全局变量 nonlocal 代表( ...
- Java Lambda 表达式快速学习
Lambda 表达式来源于数学, 因为其简洁性,很多开发语言都支持, Java 在版本8 开始引入. Lamba 表达式是什么? 匿名内部类 接口只能有一个需要被实现的方法 Lamba 表达式作用 代 ...
- python中集合所用的reduce_Python中reduce函数和lambda表达式的学习
reduce函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1.2 个元素进行操作,得到的结果再与第三个数据用 ...
- 【Java学习笔记之三十一】详解Java8 lambda表达式
Java 8 发布日期是2014年3月18日,这次开创性的发布在Java社区引发了不少讨论,并让大家感到激动.特性之一便是随同发布的lambda表达式,它将允许我们将行为传到函数里.在Java 8之前 ...
- Java学习笔记之 Lambda表达式
Java Lambda表达式 Lambda表达式 1.引言 2.为什么 Java 需要 Lambda 表达式 3.Lambda 表达式的结构 3.1.Lambda 表达式:语法 4.在哪里使用lamb ...
- 10个Java 8 Lambda表达式经典示例
Java 8 刚于几周前发布,日期是2014年3月18日,这次开创性的发布在Java社区引发了不少讨论,并让大家感到激动.特性之一便是随同发布的lambda表 达式,它将允许我们将行为传到函数里.在J ...
- 深入浅出 Java 8 Lambda 表达式
摘要:此篇文章主要介绍 Java8 Lambda 表达式产生的背景和用法,以及 Lambda 表达式与匿名类的不同等.本文系 OneAPM 工程师编译整理. Java 是一流的面向对象语言,除了部分简 ...
- Java 8 新增lambda表达式(-)
2019独角兽企业重金招聘Python工程师标准>>> Java 8 刚于几周前发布,日期是2014年3月18日,这次开创性的发布在Java社区引发了不少讨论,并让大家感到激动.特性 ...
最新文章
- 面试官再问你 HashMap 底层原理,就把这篇文章甩给他看
- python升级和安装pip
- ATO,MTO和ETO
- 06.移动先行之谁主沉浮----我的代码我来写(Xaml的优势)
- Spring的@Scope的几种取值
- pytorch微调bert_北大、人大联合开源工具箱UER,3 行代码完美复现BERT、GPT
- Cloudera Manager和CDH5.8离线安装
- jpi多表联查_数据库两表联查、多表联查,多重联查
- linux备份mysql部分表数据,linux mysql 数据按表名称备份
- MEncoder 使用实例
- 2019年总结 | 31岁,不过是另一个开始
- python的目的_Python-** wargs的目的和用途是什么?
- linux文件系统选哪种,linux下几种文件系统的测试比较
- elasticsearch核心原理
- 2020年写字楼行业发展现状及趋势分析
- c语言齿轮标准模数选择编程,齿轮参数术语计算模数选择
- 37,字节跳动Python面试
- 关于中国教育的一些思考
- 小糊涂家装预算软件 v8.0 怎么用
- 复变|第一章 复数与复变函数 复数
热门文章
- php a链接跳转下载,PHP实现点击a标签的href做链接时,直接保存文件(任何类型),而不是通过浏览器直接打开下载的文件...
- FreeType2使用总结
- 学生成绩管理系统(简易版)
- WORD 用tab实现居中和右对齐
- Qt打开Word、Excel和PPT总结
- 方法: 跳转App Store更新你应用的URL究竟该怎么写
- sqli-labs Less-8(布尔盲注)
- shell脚本--三种引号的区别
- 图像恢复系列之(6)超分(7)反光去除(8)光斑去除 (9)阴影去除(10)水下图像失真去除 | ICCV2021生成对抗GAN...
- opencv分离RGB三通道