【Java没基础】JDK1.8 中的 Lambda 表达式与 Stream API

说起 Lambda 就不得不说这样的一个概念:函数式编程 函数式编程是一种思想,是一个大的概念。 对于函数式编程,有个比较浅显易懂的定义是这样的: 在思考问题时,使用不可变值和函数,函数对一个值进行处理,映射成另一个值
摘要由CSDN通过智能技术生成

一、函数式编程

说起 Lambda 就不得不说这样的一个概念:函数式编程
函数式编程是一种思想,是一个大的概念。
对于函数式编程,有个比较浅显易懂的定义是这样的:
在思考问题时,使用不可变值和函数,函数对一个值进行处理,映射成另一个值

也就是说,在Java代码中,我们可以把一个函数作为参数进行传递,而不是在方法中对函数进行调用了~

在写回调函数与实践处理程序时,使用函数式编程可以使Java程序员不再纠缠于匿名内部类的冗繁和可读性,函数式编程让事件处理系统变得更加简单。


二、Lambda 相关

来,跟我读:拉姆达~

“Lambda 表达式”(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的函数。Lambda表达式可以表示闭包(注意和数学传统意义上的不同)。——百度百科

在社区中,很多人说 Lambda 表达式不过是 Java 的语法糖,我认为这句话是有失偏驳的。这是语法糖么?是语法糖么?是!~(嘿嘿嘿)~

尽管 Lambda 是 Java 8 的语法糖,但是由于 Lambda 表达式的引入,Java 代码可以更加的优美,可以使原本用于匿名内部类的代码更加简介和易读。

下面,我们来看一个 Lambda 表达式的一个简单的例子

//这句代码很容易理解:在 BinaryOperator 中创建一个返回类型为 Long 的方法,方法名为 addExplicit,方法的内容为传入两个 Long 类型的参数进行求和,并将其值返回
BinaryOperator<Long> addExplicit = (Long x, Long y) -> x + y ;

这是一种显示声明 目标类型 参数类型的 Lambda 表达式写法
目标类型是指 Lambda 表达式所在上下文环境的类型。比如,将 Lambda 表达式赋值给一个局部变量或传递给一个方法作为参数,局部变量或者方法参数的类型就是 Lambda 表达式的目标类型。

在有些情况下,Lambda 表达式中可以不显示声明目标类型,而是依赖于上下文环境,由编译器推断出来。如

//上面代码的另一种写法
BinaryOperator<Long> addExplicit = (x, y) -> x + y;

在使用匿名内部类的时候,一定会遇到这样的情况:引用方法里的变量。这时,变量需要声明为final。否则,会提示报错

// 伪代码举例,相应方法未定义
public class UserTest {
  final String name = "Lee";
  public void 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值