详解lambda表达式 || Java

发布时间: 2019-12-03 20:15:48

lambda表示式,相比都大家都经常用过,今天我就来详细说明一下。

首先lambda就是希腊字母”λ“,lambda表示式简单点说就是一个带参数的表达式,那为什么用”λ“呢?这个字母最早是Church开始使用的,不过Church也是受一本书《权威数学》的^表示自由自由变量启发,然后自己改用希腊字母λ来表示,渐渐地,带有参数的表达式就被称为lambda表达式。

好,知道了咋来的我们来看一一下基本语法。

每种语言的lambda表达式都差不多,我就以我自己了解的python和Java来说明一下吧。

首先是Java

基本格式 参数->表达式
例
1.(int x,int y)->x-y;/lambda表达式都显式有return,即相当于返回了一个值(x-y)

2.()->{...};//即使不带有参数,括号也必须有

3.event->{...};

Python

1.lambda x:Math(x)
2.lambda x,y:x+y

两种语言的lambda表达式的在使用场景差别不太大,但是还是有点略微不同。Python的官方文档解释吧lambda当做一个匿名函数,而Java往往是作为函数式接口的替代。

接下来我就详细解释下lambda在Java中的使用场景。

首先介绍一下什么是函数式接口:

public interfacce IntConsumer
{
   void accept(i);
}

这种只含有一个抽象方法的接口(Java中接口默认都是抽象方法)称为函数式接口。Intconsumer是Java函数接口中的一个,此外还有Runable等等。

如以下方法 public static void test(int n,Runable A){ for(int i=0;i<n;i++) A.run();//这里run方法都是Java语言预先规定好的,INtConsumer则是 accept(); }

lambda表达式实际上有三个部分构成:1参数,表达式,自由变量的值。

当lambda引用一个变量值的时候,就相当于自动拷贝一份,且为final,不可改变的。

lambda总结起来作用就是延迟代码的运行,就是在特定条件需要的时候,调用lambda中的代码部分。