java8里面的兰姆达表达式_Java8 的 Lambda 表达式

背景

Lambda 表达式是 Java8 发布的一个很重要的原因,从 Java8 开始允许将一个方法以变量的形式作为参数进行传递,并且使用这种表达式让 Java 代码变得更加的简洁。

语法格式(params) -> expression

(params) -> {expression}

如果语句中 expression 表达式只有一句则不必使用 {} 也可以,另外还有一种就是没有参数的情况。() -> {expression} 或是 () -> expression

示例使用 (params) -> expression 的方式进行表达式计算public static void main(String[] args) {

Method method1 = (int a,int b) -> a + b;

int res1 = method1.math(2, 3);

System.out.println(res1);

Method method2 = (int a,int b) -> a * b;

int res2 = method2.math(2, 3);

System.out.println(res2);

}

public interface Method{

public int math(int a,int b);

}

没有 {} 的表达式,必须是只有一句表达式的时候才可以这样返回,否则便会报错。使用 (params) -> {expression} 的方式进行表达式计算public static void main(String[] args) {

Method method1 = (int a,int b) -> { return (a + b); };

int res1 = method1.math(2, 3);

System.out.println(res1);

Method method2 = (int a,int b) -> {return (a * b); };

int res2 = method2.math(2, 3);

System.out.println(res2);

}

public interface Method{

public int math(int a,int b);

}

在使用这种表达式的时候必须进行明确的指定返回的是什么,比如 return (a + b)、return (a * b) 都是要明确返回什么内容。

注意:Lambda 表达式执行完以后总体返回的必须是一个接口,比如上述中的 Method 接口。

变量作用域

在使用 Lambda 表达式时,很重要的一点就是关于变量的作用域。在表达式中如果需要引用外部变量进行运算则必须加上 final 关键字才可以,如果不加 final 时则在向后的编码中不能改变这个变量的值,如下进行举例:public static void main(String[] args) {

final int c = 3;

Method method1 = (int a,int b) -> { return (a + b + c); };

int res1 = method1.math(2, 3);

System.out.println(res1);

}

public interface Method{

public int math(int a,int b);

}

将变量 c 引用到表达式中,则给变量 c 加上 final 关键字使其不能改变。public static void main(String[] args) {

int c = 3;

Method method1 = (int a,int b) -> { return (a + b + c); };

int res1 = method1.math(2, 3);

System.out.println(res1);

c = 10;

}

public interface Method{

public int math(int a,int b);

}

将变量 c 引用到表达式中,并且在后续的执行中又给 c 变量赋值为 10,这种形式在 Lambda 表达式使用时便会报错。

展望

欢迎关注 “老王说编程“,每天进步一点点,您的每一个点赞、在看、分享都是在致力于减少 “攻城狮” 产出的 BUG。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值