浅谈Java lambda表达式和函数式编程

312 阅读2分钟

「这是我参与2022首次更文挑战的第1天,活动详情查看:2022首次更文挑战

需要声明的是,我不是专家,而是一个初学者,最近在学习函数式编程,所以想融合网上的资料做一个简单的总结。

什么是Java lambda表达式?

写Java的小伙伴们可能知道lambda表达式,lambda简明的地将代码或方法作为参数传递进去执行,Lambda作为函数式编程中的基础部分,在其他编程语言中早已大展身手了,在java8到来的时候,Java也开始支持Lambda了。它极大增强了代码的表达能力,它的语法格式如下:

no.1 (parameters) -> expression
no.2 (parameters) ->{ statements; }

(形式参数) -> {代码块}

Lambda表达式的三要素:

  • 形式参数,箭头,代码块

Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。

下面是常用的几种情况:

() -> 7 //不需要参数 
(x, y) -> x – y   //返回俩个参数的差值

当然,每一个工具都有利有弊,Lambda表达式也不例外! 优点:

  1. 代码简洁紧凑,提高程序运行效率
  2. 减少匿名内部类的创建,节省资源
  3. 可以替代几乎所有的for循环

缺点:

  1. 对于不熟悉的开发者来说,不太容易看得懂
  2. 不容易调试
  3. 可读性差,不利于维护

函数式编程是啥?

函数式编程的起源,是一门叫做范畴论(Category Theory)的数学分支。

首先,函数式编程是种编程方式,它将电脑运算视为函数的计算。函数编程语言最重要的基础是λ演算(lambda calculus),而且λ演算的函数可以接受函数当作输入(参数)和输出(返回值)。--百度百科

假如把我们的真实世界抽象成事物事物之间的关系,我们的这个世界是不是就可以抽象的看作许多事物和事物之间的关系组成的一个大的模型吗?这就是函数式编程的思想。

简单来说呢,在函数式编程中,函数就是一个管道(pipe)。这头进去一个值,那头就会出来一个新的值,没有其他作用

lambda表达式是函数式编程的一种吗?

lambda表达式是遵循编程的思想的,它就是函数式编程诞生的产物。

Java8中有哪几种重要新特性被引入进来了?

  • Lambda表达式
  • 函数式接口
  • 方法引用与构造器引用
  • Stream API
  • 接口的默认方法与静态方法
  • 新时间日期API
  • Optional 类
  • 其他新特性

其中,引用最广泛的新特性是Lambda表达式和Stream API。