Java8 lambda表达式的简单使用

lambda表达式介绍

     lambda表达式 也可称为闭包 是java8发布的新特性
     lambda允许把函数作为一个方法的参数
     使用lambda的优势:使代码变的更加简洁紧凑
     lambda表达式的语法格式(两种):
     (parameters) -> expression
     (parameters) -> {statements;}

     lambda表达式的重要特征
     类型声明 --> 可选:不需要声明参数类型,编译器可以统一识别参数值
     参数圆括号 --> 可选:一个参数时无需定义圆括号,多个参数时必须定义圆括号
     大括号 --> 可选:如果主体包含一个语句,可以不使用大括号
     返回关键字(return) --> 可选:如果主体只有一个表达式时,编译器会自动返回值;如果使用了大括号需要指明表达式返回了一个数值
      -> 必须要有的。是一个运算符,表示指向性动作

lambda表达式代码操作

public class Java8LambdaTest {

    interface MathOperation {
        int operation(int a, int b);
    }

    interface MessageOperation {
        void sayMessage(String message);
    }

    private static int mathOperation(int a, int b, MathOperation matchOperation) {
        return matchOperation.operation(a, b);
    }

    public static void main(String[] args) {
        // 类型 声明
        MathOperation addition = (int a, int b) -> a + b;
        // 类型 不声明
        MathOperation subtraction = (a, b) -> a -b;
        // 使用大括号,需要有返回值关键字 return
        MathOperation multiplication = (a, b) -> {
            return a * b;
        };
        // 不适用大括号,不能使用返回值关键字
        MathOperation division = (a, b) -> a / b;

        // 不适用圆括号
        MessageOperation noParentheses1 = message -> System.out.println(message + mathOperation(10, 5, addition));
        noParentheses1.sayMessage("10 + 5 = ");
        MessageOperation noParentheses2 = message -> System.out.println(message + mathOperation(10, 5, subtraction));
        noParentheses2.sayMessage("10 - 5 = ");
        // 使用圆括号
        MessageOperation parentheses1 = (message) -> System.out.println(message + mathOperation(10, 5, multiplication));
        parentheses1.sayMessage("10 * 5 = ");
        MessageOperation parentheses2 = (message) -> System.out.println(message + mathOperation(10, 5, division));
        parentheses2.sayMessage("10 / 5 = ");

        /** 注意:
        1、lambda表达式 主要用来定义 行内执行的方法类型接口,例如.一个简单的方法接口(上面的代码中使用了各种类型的lambda表达式来定义MathOperation接口的方法,最后定义了MessageOperation接口中的sayMessage方法)
        2、lambda表达式免去了使用匿名方法的麻烦,并给予java简单而强大的函数化编程能力
		*/
		
        // 注意事项:1、lambda表达式参数中不允许声明与局部变量相同的名字
        /*
        // 这两行是错误代码
        int num1 = 1;
        MathOperation same = (num1, num2) -> num1 + num2;
        */
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值