写点什么

15.  《重学 JAVA》--Lambda 表达式

作者:杨鹏Geek
  • 2021 年 12 月 16 日
  • 本文字数:661 字

    阅读完需:约 2 分钟

15.  《重学JAVA》--Lambda表达式

一、Lambda 表达式

Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中),Lambda 表达式是 JavaSE8 中一个重要的新特性。lambda 表达式允许你通过表达式来代替功能接口。lambda 表达式就和方法一样,它提供了一个正常的参数列表和一个使用这些参数的主体(body,可以是一个表达式或一个代码块)。

Lambda 表达式还增强了集合库。JavaSE8 添加了 2 个对集合数据进行批量操作的包: java.util.function 包以及 java.util.stream 包。流(stream)就如同迭代器(iterator),但附加了许多额外的功能。总的来说,lambda 表达式和 stream 是自 Java 语言添加泛型(Generics)和注解(annotation)以来最大的变化。

使用 Lambda 表达式可以使代码变的更加简洁紧凑。

二、重要特征

  • l 类型声明:不需要声明参数类型,编译器可以统一识别参数值。

  • 参数圆括号:一个参数无需定义圆括号,但多个参数需要定义圆括号。

  • 大括号:如果主体包含了一个语句,就不需要使用大括号。

  • 返回关键字:如果主体只有一个表达式返回值则编译器会自动返回值,大括号需要指定表达式返回了一个数值。

三、访问变量

Lambda 表达式可以访问所在外层作用域内定义的变量,包括:成员变量和局部变量。

3.1 成员变量

成员变量和静态成员变量。在 Lambda 表达式中可以访问这些成员变量,此时的 Lambda 表达式与普通方法一样,可以读取成员变量,也可以修改成员变量。

3.2 局部变量

对于成员变量的访问 Lambda 表达式与普通方法没有区别,但是对于访问外层局部变量时,会发生“捕 获变量”情况。Lambda 表达式中捕获变量时,会将变量当成 final 的,在 Lambda 表达式中不能修改那些捕获的变量

 

发布于: 5 小时前阅读数: 7
用户头像

杨鹏Geek

关注

你必须比别人更努力 才能看起来毫不费力! 2019.10.26 加入

码农

评论

发布
暂无评论
15.  《重学JAVA》--Lambda表达式