Java8-Lambda表达式

Lambda 表达式

  • Lambda 表达式,也可称为闭包,它是推动 Java 8 发布的最重要新特性。

  • Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。

  • 使用 Lambda 表达式可以使代码变的更加简洁紧凑。

1. Lambda表达式语法格式:


(parameters) -> expression

或

(parameters) ->{ statements; }

2. Lambda表达式的特征:

  • 可选类型声明:不需要声明参数类型,编译器可以统一识别参数值。

  • 可选的参数圆括号:一个参数无需定义圆括号,但多个参数需要定义圆括号。

  • 可选的大括号:如果主体包含了一个语句,就不需要使用大括号。

  • 可选的返回关键字:如果主体只有一个表达式返回值则编译器会自动返回值,大括号需要指定明表达式返回了一个数值。

3. 实例


  @Test

    public void lambdaTest() {

        /**

        * 一个参数可以不用括号

        */

        Print print = a -> System.out.println(a);

        Operation sub = (int a, int b) -> a - b;

        /**

        *  可选声明那类型:不需要声明参数类型,编译器可以识别参数值

        *  多个参数必须使用括号

        */

        Operation add = (a, b) -> a + b;

        /**

        * 如果主体上只有一个表达式,编译器会自动返回

        */

        Operation division = (a, b) -> a / b;

        /**

        * 使用大括号需要指定表达式返回了一个值

        */

        Operation multiplication = (int a, int b) -> {

            return a * b;

        };

        print.p("10 * 5 = "+ multiplication.operation(10, 5));

        print.p("10 + 5 = "+ add.operation(10, 5));

        print.p("10 / 5 = "+ division.operation(10, 5));

        print.p("10 - 5 = "+ sub.operation(10, 5));

    }

    interface Operation {

        int operation(int a, int b);

    }

    interface Print {

        void p(Object obj);

    }

输出结果


10 * 5 = 50

10 + 5 = 15

10 / 5 = 2

10 - 5 = 5

4.使用lambda需要注意的点

  • Lambda 表达式主要用来定义行内执行的方法类型接口,例如,一个简单方法接口。在上面例子中,我们使用各种类型的Lambda表达式来定义MathOperation接口的方法。然后我们定义了p的执行。

  • Lambda 表达式免去了使用匿名方法的麻烦,并且给予Java简单但是强大的函数化的编程能力。

5.变量作用域

  • lambda 表达式只能引用 final 或 final 局部变量,这就是说不能在 lambda 内部修改定义在域外的局部变量,否则会编译错误。


    Java8-Lambda表达式_第1张图片
    image.png

你可能感兴趣的:(Java8-Lambda表达式)