java8的特性之一lamda表达式内容总结

jdk8在公司使用非常广泛,lambda表达式的使用相对频繁,学会lambda表达式对读代码还是相当有必要。
废话不多说,总结如下,看这一篇就够了:
lambda表达式其实是一种相对省略的写法,可以使代码看起来简洁优雅。我们先来看下其形式:

(int o1,int o2)->{//执行体};

初学的时候有点蒙,但不要慌,其实多看几次慢慢理解消化吸收了就非常简单实用。所以重点来了,我们先要弄清楚以下几点:

1、使用lambda表达式的目的是什么,我们为什么要用lambda表达式?

lambda表达式无非就是为了省略接口实现类的书写,让代码看起来高大上点。也就是当某个接口,只有一个抽象方法时,其实我们完全没必要再去写这个接口实现类了,这时候我们只需要通过lambda表达式,直接重写这个接口类的抽象方法即可

2、lambda表达式的返回值是什么?

lambda表达式的返回值是接口的一个实现类

3、lambda表达式的具体语法

很简单,->左边是抽象方法的入参,右边是抽象方法的具体实现

以上三点lambda表达式基本就够了,还有一些就是为了更加简洁,lambda表达式还有一些可以省略的地方,使代码看起来美观(其实没什么屌用),总结起来也同样只有三点:

1、自动类型推断,其实lambda表达式不需要给出入参的类型(也就是->左边的内容,因为这些在接口定义的时候已经规定好了,不需要再给出入参的类型了,也就是缩写成以下方式就可以)

(o1,o2)->{//执行体};

2、当入参只有一个时,括号可以省略(注:当没有入参时,不能省略括号)

o1->{//执行体};

3、如果执行体只有一条执行语句(可能是return语句),则可以省略大括号和return关键字(要省就一起省,不能只省略大括号)

例如:(o1,o2)->o1.compareTo(o2);1

以上三点总结完毕!最后一个是不是看起来有一点眼熟,我们补全

Comparator<Integer> com1 = (o1,o2)->o1.compareTo(o2);2

如果我们不用lambda表达式也是可以达到这个效果的,只不过需要生成一个匿名内部类,去重写他的compareTo方法
(3)

	Comparator<Integer> com2 = new Comparator<Integer>(){
		@Override
		public int compare(Integer o1,Integer o2){
			return o1.compareTo(o2);
		}
	};

(1)、(2)、(3)表达的完全是同一个意思,lambda表达式只需要一步就可以到位

再者就是结合函数式接口使用了,属于更进一步的应用了,我在下篇博客详解介绍

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值