全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货

java培训教程分享:JDK8中Lambda表达式的基本使用

发布时间:2022-03-02 11:31:00
发布人:qyf

  什么是Lambda表达式?

  Lambda表达式是JDK8中一个重要的特性,它使用一个清晰简洁的表达式来表达一个接口,同时Lambda表达式也简化了对集合以及数组数据的遍历、过滤和提取等操作。本节将对Lambda表达式的使用进行详细讲解。

  匿名内部类存在的一个问题是,如果匿名内部类的实现非常简单,例如只包含一个抽象方法的接口,那么匿名内部类的语法仍然显得比较冗余。为此,JDK8中增加了一个特性Lambda表达式,这种表达式只针对有一个抽象方法的接口实现,以简洁的表达式形式实现接口功能来作为方法参数。

  Lambda表达式的书写

  一个Lambda表达式由三个部分组成,分别为参数列表、“->”和表达式主体,其语法格式如下:

  ([数据类型 参数名,数据 类型 参数名,….])->{表达式主体}

  从上述语法格式上看,Lambda表达式的书写非常简单,下面针对Lambda表达式的组成部分进行简单介绍,具体如下。

  (1)([数据类型参数名,数据类型参数名,…]):用来向表达式主体传递接口方法需要的参数,多个参数名中间必须用英文逗号进行分隔。在编写Lambda表达式时,可以省略参数的数据类型,后面的表达式主体会自动进行校对和匹配。同时,如果只有一个参数,则可以省略括号()。

  (2)->:表示Lambda表达式箭牌,用来指定参数数据指向,不能省略,且必须用英文横线和大于号书写。

  (3){表达式主体}:由单个表达式或语句块组成的主体,本质就是接口中抽象方法的具体实现,如果表达式主体只有一条语句,那么可以省略包含主体的大括号。另外,在Lambda 表达式主体中允许有返回值,当只有一条 return语句时,也可以省略 return关键字。

  学习了Lambda表达式的语法后,接下来对例4-21进行进一步修改,来讲解Lambda表达式的基本使用,如例4-22所示。

  Lambda表达式的基本使用

  例4-22 Example22.java

  //定义动物类接口

  interface Animal {

  void shout(); //定义方法shout()

  }

  public class Example22 {

  public static void main(String[] args) {

  String name = "小花";

  //1.匿名内部类作为参数传递给animalShout()方法

  animalShout(new Animal() {

  public void shout() {

  System.out.println("匿名内部类输出:" + name + "喵喵.…");

  }

  });

  //2.使用Lambda表达式作为参数传递给animalShout()方法

  animalShout(() - > System.out.println("Lambda表达式输出:" + name + "喵喵.…"));

  }

  //创建一个animalshout()静态方法,接收接口类型的参数

  public static void animalShout(Animal an) {

  an.shout();

  }

  }

  例4-22中,先定义了只有一个抽象方法的接口Animal,然后分别使用匿名内部类和Lambda表达式的方式实现了接口方法。从图4-26可以看出,使用匿名内部类和Lambda表达式都能实现接口方法,但很显然使用Lambda表达式更加简洁和清晰。

lambda表达式

相关文章

es7怎么像mysql一样使用聚合查询?

es7怎么像mysql一样使用聚合查询?

2023-10-13
PHP的相关配置有哪些?

PHP的相关配置有哪些?

2023-10-13
PHP数组具的特性有哪些?

PHP数组具的特性有哪些?

2023-10-13
php转换大小写的函数有哪些?

php转换大小写的函数有哪些?

2023-10-13

最新文章

常见网络安全面试题:Windows常用的命令有哪些?

常见网络安全面试题:Windows常用的命令有哪些?

2023-10-09
常见网络安全面试题:根据设备告警如何展开排查?

常见网络安全面试题:根据设备告警如何展开排查?

2023-10-09
常见网络安全面试题:mysql加固呢?(数据库加固)

常见网络安全面试题:mysql加固呢?(数据库加固)

2023-10-09
常见网络安全面试题:windows和linux加固?(操作系统加固)

常见网络安全面试题:windows和linux加固?(操作系统加固)

2023-10-09
在线咨询 免费试学 教程领取