【lambda】lambda表达式详解

提示:自己学习帮助记忆,有问题指出,不喜勿喷!


前言

lambda:
lambda表达式时jdk8推出的重要新特性之一,使用它设计的代码会更加简洁,当开发者在编写lambda表达式时,也会随之被编译成一个函数式接口。


提示:素材来源于网络整合

一、lambda是什么?

可以将lambda表达式理解为匿名函数,允许将一个函数作为另一个函数的参数,我们可以把lambda表达式理解为一段可以传递的代码(将代码作为实参),也可以理解为函数式编程,将一个函数作为参数进行传递。

在Java中万物皆对象,Java一直致力维护其对象至上的,在Java的世界里,函数无法独立存在,只能依赖对象调用,在函数式编程语言中,函数时一等共民,他们可以独立存在,你可以将其赋值给一个变量,或将他们当作参数传给其他函数。JavaScript就是函数式编程典型代表

二、lambda表达式语法结构

(parameters) -> expression
或者
(parameters) ->{ statements; }

()用来描述参数列表,{}用来描述方法体,-> 为lambda运算符,parameters表示参数,expression表示表达式,statements表示代码块。

结构说明

  • 一个lambda可以有一个或者多个参数
  • 空圆括号代表参数集为空。例如 ()-> 28
  • 参数的类型既可以明确声明,也可以根据上下文来推断,例如(int a)(a)效果相同
  • 所有参数需要包含在圆括号内,参数之间用逗号相隔,例如:(a,b)或者(int a,int b)(String a, int b, float c)
  • lambda表达式的主体可包含零条或多条语句
  • 如果lambda表达式的主体只有一条语句,花括号{}可省略,匿名函数的返回值类型与肢体保持一致
  • 当只有一个参数,且类型可推导时,圆括号()可省略,例如:a - > return a + a
  • 如果 Lambda 表达式的主体包含一条以上语句,则表达式必须包含在花括号{}中(形成代码块),匿名函数的返回类型与代码块的返回类型一致,若没有返回则为空

三、lambda表达式四个重要特征

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

四、lambda表达式使用要求

lambda表达式的使用比较依赖接口,并对接口有要求。虽然使用lambda表达式可以对某些接口进行简单的实现,但不是所有的接口都可以使用lambda表达式来实现。Lambda 规定接口中只能有一个需要被实现的方法(即只能有一个抽象方法),不是规定接口中只能有一个方法,这也称之为“函数式接口”,比如:java.lang.Runnable就是一个函数式接口。

注意:jdk 8 中有另一个新特性:default, 被 default 修饰的方法会有默认实现,不是必须被实现的方法,所以不影响 Lambda 表达式的使用。


总结

文章来源链接:https://zhuanlan.zhihu.com/p/266800714

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值