栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

lambda表达式小总结(一)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

lambda表达式小总结(一)

为什么引入lambda表达式

 定义:lambda表达式是一个可传递的代码块,可以在以后执行一次或多次。

想一想我们在java那些地方用过代码块。

对啦,考虑按长度对字符串进行排序,可以向sort方法传入一个Comparator对象:

class student implements Comparator
{
public int compare(String first,String second)
{
return first.length()-second.length();
}
}
Arrays.sort(strings,new student());//对strings字符串数组进行排序。

java语言的异处:在Java中不能直接传递代码段。Java是面向对象的语言,所以必须构造一个对象,这个对象的类需要有一个方法包含所需的代码。

终于在做了多年的尝试后,终于找到一种适合java的设计——lambda表达式。

lambda表达式的语法

考虑方法compare中的first.length()-second.length();

转化为lambda表达式为:(String first,String second)->first.length()-second.length()

lambda表达式是一个代码块,以及必须传入代码的变量规范。

java lambda表达式的一种形式:参数,箭头(->)以及一个表达式。

如果代码的计算无法放在一个表达式中,可以像写方法一样,把这些代码放在{}中,并包含显示的return语句。例如:

(String first,String second)->
{
if(first.length()second.length())return 1;
else return 0;
}

即使lambda表达式没有参数,仍然要提供空括号。

()->{for(int i=100;i>=0;i--)System.out.println(i);}

如果可以推导出一个lambda表达式的参数类型,则可以忽略其类型。例如:

Comparatorcomp=(first,second)->first.length()-second.length();

如果方法只有一个参数,而且这个参数的类型可以推导出,则可以省略小括号:

ActionListener listener=event->.........;

无须指定lambda表达式的返回类型。lambda表达式的返回类型总是会由上下文推到得出。

如果一个lambda表达式只在某些分支返回一个值,而另外一些分支不返回值,这是不合法的。例如:

(int x)->{if(x>=0)return 1;}//error.

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/298563.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号