关于Java的lambda表达式的一些总结

Lambda表达式
格式:  ()->{}
  1. 表达式如果只有一句话,可以不用{},也不能用{};
  2. 无需指定返回类型,会由上下文推导而得;
  3. lambda表达式要么每一个分支都需要有返回值,要么每一个分支都没有返回值;
  4. 如果表达式只有一个参数,可以省略();
  5. lambda表达式内部可以捕获外部变量的值,但这个值必须是最终变量,即不能改变;
  6. lambda表达式中声明一个与局部变量同名的的变量或参数是不合法的;
  7. 在一个lambda表达式中使用this关键字,是指创建这个lambda表达式的方法的this参数,即这个类的this;通过this对成员变量的操作修改是允许的。(说简单点就是在使用和普通正常的在方法中使用this没有区别)

函数式接口:对于只有一个抽象方法的接口,需要这种接口的对象时,就可以提供一个lambda表达式。这种接口称为函数式接口

比如Comparator接口只有一个compare()方法,因此它是一个函数式接口;

当使用Arrays.sort(数组,实现comparator接口的实例)方法时,第二个参数可以直接用lambda表达式的代码块

方法引用

例如

	System.out::println 等价于 x->System,out.println(x)
    Math::pow 等价于 (x,y)-> Math.pow(x,y)
  • object::instanceMethod
  • Class::staticMethod
  • Class::instanceMethod

前两种方法引用等价于提供方法参数的lambda表达式。
第三种情况,第一个参数会成为方法的目标
例如

String::compareToIgnoreCase 等价于 (x,y)->x.compareToIgnoreCase(y)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值