一次性学会拉姆达表达式(Java)

Lambda表达式是Java8引入的新特性,用于简化函数式编程,它是一种匿名函数,可以替代简单的函数接口实现。函数式编程注重计算结果而非执行过程。Lambda表达式具有可选类型声明、参数括号、大括号和返回关键字等特点,简化了代码编写。它可以用于集合操作和多线程等场景,提升代码可读性和效率。
摘要由CSDN通过智能技术生成

LambdaExpress

一 . 理论

1.1 是什么

Java Lambda表达式是Java 8引入的一种新的语言特性,用于简化函数式编程和匿名内部类的使用。Lambda表达式可以看作是一个匿名函数,它没有名称,但具备参数列表、函数体和返回值。

1.2 函数式编程思想

在数学中,函数就是有输入量、输出量的一套计算方案,也就是“拿什么东西做什么事情”。编程中的函数,也有类似的概念,你调用我的时候,给我实参为形参赋值,然后通过运行方法体,给你返回一个结果。对于调用者来做,关注这个方法具备什么样的功能。相对而言,面向对象过分强调“必须通过对象的形式来做事情”,而函数式思想则尽量忽略面向对象的复杂语法——强调做什么,而不是以什么形式做。

  • 面向对象的思想:
    做一件事情,找一个能解决这个事情的对象,调用对象的方法,完成事情.

  • 函数式编程思想:
    只要能获取到结果,谁去做的,怎么做的都不重要,重视的是结果,不重视过程
    Java8引入了Lambda表达式之后,Java也开始支持函数式编程。

Lambda表达式不是Java最早使用的,很多语言就支持Lambda表达式,例如:C++,C#,Python,Scala等。如果有Python或者Javascript的语言基础,对理解Lambda表达式有很大帮助,可以这么说lambda表达式其实就是实现SAM接口的语法糖,使得Java也算是支持函数式编程的语言。Lambda写的好可以极大的。

lambda表达式的重要特征
  • 可选类型声明:不需要声明参数类型,编译器可以统一识别参数值。
  • 可选的参数圆括号:一个参数无需定义圆括号,但多个参数需要定义圆括号。
  • 可选的大括号:如果主体包含了一个语句,就不需要使用大括号。
  • 可选的返回关键字:如果主体只有一个表达式返回值则编译器会自动返回值,大括号需要指定表达式返回了一个数值。

Lambda表达式的基本语法如下:

(parameter_list) -> {
    // 函数体
    // 可以是一行代码或者多行代码
    // 也可以是一个返回值表达式
}

其中,parameter_list表示参数列表,可以包含零个或多个参数。箭头->用于分隔参数列表和函数体。函数体可以是一行代码或多行代码,可以包含任意Java语句和表达式。
下面是几个Lambda表达式的示例:

  1. 无参数的Lambda表达式:
() -> System.out.println("Hello, Lambda!");
  1. 带一个参数的Lambda表达式:
(x) -> System.out.println("Hello, " + x);
  1. 带多个参数的Lambda表达式:
(x, y) -> {
    int sum = x + y;
    System.out.println("Sum: " + sum);
    return sum;
};

Lambda表达式可以用于替代使用函数接口(Functional Interface)的匿名内部类。函数接口是只有一个抽象方法的接口,可以使用@FunctionalInterface注解标记。
以下是使用Lambda表达式实现函数接口的示例:

// 定义函数接口
@FunctionalInterface
interface Calculator {
    int calculate(int x, int y);
}

// 使用Lambda表达式创建函数接口的实例
Calculator add = (x, y) -> x + y;
Calculator subtract = (x, y) -> x - y;

// 调用函数接口的方法
int sum = add.calculate(3, 5);         // 结果为8
int difference = subtract.calculate(9, 4); // 结果为5

使用 Lambda 表达式需要注意以下两点:

  1. Lambda表达式主要用来定义行内执行的方法类型接口,例如,一个简单方法接口。在上面例子中,我们使用各种类型的Lambda表达式来定义MathOperation接口的方法。然后我们定义了sayMessage的执行。
  2. Lambda 表达式免去了使用匿名方法的麻烦,并且给予Java简单但是强大的函数化的编程能力。

Lambda表达式在Java中广泛用于集合框架和多线程编程等场景,它简化了代码的编写并提升了可读性。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值