java8新特性之Lambda表达式

一:背景

java8最重要的改变之一就是lambda,lambda源于数学中的λ演算,对应的含义是匿名函数,在java中我们可以将其理解函数可以向参数一样进行传递。lambda为java填补了函数式编程的缺失,这种方式从好的角度来说可以是编程风格更简洁,代码更紧凑。

 

二:Lambda表达式基础语法

lambda表达式的重要特征:

(1)无需声明参数类型,编译器会进行类型推断。

(2)参数大于一个,不包括一个则必须写圆括号,没有参数是有空圆括号()。

(3)lambda表达式可以包含一条或多条语句,如果只有一条语句可以不需要使用大括号和return

语法如下:

1:(x, y) -> expression;
2:x -> expression;
3: () -> {
     expression1;
     expression1;
   }

简单例子如下:

    public static void main (String[] args){
        MathOperation addition = (a, b) -> a + b;
        addition.operation(3, 5);
        
    }
    interface MathOperation {
        int operation(int a, int b);
    }

 

三:变量作用域

如果lambda表达式内部要引用外部变量的话,则外部变量必须要有final声明,不过java7后外部变量不需要显示的声明final,只要实际具有final的语义即可。至于为什么要这么做?原因是为了保护数据的一致性,因为传入到表达式内部的变量实际上是变量的副本,如果不是final声明,发生修改的话会导致内外部数据不一致的情况发生。

 

四:函数式接口

之前的文章中有过介绍,在这里重复一下,因为很重要,Lambda表达式需要函数式接口的支持,函数式接口可以使用@FunctionalInterface注解,编译器会自动检查是否服务函数式接口的规范
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值