【Java】【核心技术I笔记】lambda表达式

本文深入探讨Java Lambda表达式的基本概念,包括定义、语法特点、函数式接口的应用及Lambda表达式如何简化代码。同时,文章提供了多个实例,帮助读者理解Lambda表达式的实际用法。

①定义:一个可传递的代码块,可以在以后执行一次或多次。可以用一种精巧而简洁的方式表示使用回调或变量行为的代码。

简而言之,就是将一块代码赋值给一个Java变量

 

将这个代码

BlockCode=public void do(String s){System.out.println(s);}

{

I.public多余

II.函数名字(do)多余,因为已经写了方法体并赋值给BlockCode了

III.void多余,编译器可以自己判断返回的类型

IV.String多余,编译器可以自己判断参数类型

V.只有一行可以不用大括号

}

转换成

BlockCode=(s)->System.out.println(s);

②函数式接口:对于有且只有一个抽象方法(只有声明,没有具体方法体的方法)的接口,需要这种接口的对象时,就可以提供一个lambda表达式。这种接口叫做函数式接口

 

而上文中提到的BlockCode=(s)->System.out.println(s);

 

还要对BlockCode=(s)->System.out.println(s);中的BlockCode加上类型

就需要另加入一段代码

@FunctionalInterface    //函数式接口声明
   //函数式接口声明
interface LambdaInterface{
    void do(String s);
}LambdaInterface{
    void do(String s);
}

这种只有一个接口函数(do(String s))的接口,就叫做“函数式接口”,为了防止以后的人在这个接口中增加接口函数导致其有多个接口函数需要被实现,变成“非函数接口”,可以在上面增加一个声明@FunctionalInterface,这样就可以防止别人添加新的接口函数了

有了函数式接口之后就得到了一个完整的Lambda表达式声明了:

LambdaInterface BlockCode=(s)->System.out.println(s); BlockCode=(s)->System.out.println(s);

 

③作用:最主要的作用就是让代码变得简洁(Java8是实现了Lambda表达式的版本)

 

④语法:参数、箭头(->)以及一个表达式

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

即使没有参数也要提供空括号(同无参方法)

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

如果参数类型可以被推导出来,就可以省略其类型

Comparator<String> comp=(first,second)->first.length()-second.length();

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

ActionListener listener=event->System.out.println("The time is "+new Date());    //等同于(ActionEvent event)->…………

如果lambda表达式只在某些分支返回一个值,而在另外一些分支不返回值,就不合法

不合法:

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

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值