java Lambda表达式入门学习

Lambda表达式,也可称为闭包,是java8最重要的新特性。 简单说,Lambda表达式牛逼在于可以把一个函数当作参数放进方法中。

先看Lambda表达式的语法 (parameters)-> expression; 或者(parameters)->{ statments;}

Lambda表达式有四大特性: 1.可选参数类型:参数类型可以不用写,自动识别。 2.可选括号:参数列表可以不用括号包围,当然,这需要只有一个参数。 3.可选花括号:如果方法体只有一条语句,可以不写花括号。 4.可选return:如果方法体只有一条能够返回值的表达式,则会自动返回。

下面来看例子:

package com.wenjun.test;

/**
 * 数学运算
 */
interface MathOperation{
    /**
     * @param a 
     * @param b
     * @return
     */
    int operation(int a,int b);
}

/**
 * 打招呼
 */
interface Greeting{
    void say(String info);
}
/**
 * @author xuwenjun
 * @date 2019/8/9
 */
public class Lambda {
    public static int operator(int a,int b,MathOperation mathOperation){
        return mathOperation.operation(a, b);
    }
    public static void main(String[] args) {
        MathOperation add = (int a,int b)->a+b;
        MathOperation sub = (a,b)->a-b;
        MathOperation mul = (a,b)->{return a*b;};
        MathOperation div = (int a,int b)->{return a/b;};

        Greeting helloWorld = info-> System.out.println(info);

        System.out.println("1+1="+operator(1,1,add));
        System.out.println("3-1="+operator(3,1,sub));
        System.out.println("2*2="+operator(2,2,mul));
        System.out.println("63="+operator(6,3,div));

        helloWorld.say("hello world!");


    }

    
}

注意:

1.Lambda可以引用外面的变量,但是这个变量必须是final才行,也就是不允许再Lambda表达式内修改变量名。 2.Lambda表达式的参数列表不能出现跟局部变量名字一样的变量,会报错……

这次就写到这里,下次继续 如果有错误,烦请指出,谢谢!

经验分享 程序员 微信小程序 职场和发展