Java Lambda 表达式讲解

本文详细介绍了Java 8的Lambda表达式,包括基础语法和四种主要的语法格式,如无参数、单参数、多参数的情况,以及类型推断。同时,文章还探讨了Lambda表达式需要依赖于函数式接口,特别是Java8内置的四大核心函数式接口——Consumer、Supplier、Function和Predicate,分别用于消费数据、提供数据、处理数据和断言数据条件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Lambda 表达式

Lambda 表达式的基础语法

Java8 中引入了一个新的操作符:-> 该操作符称为箭头操作符或者 Lambda 操作符


Lambda 操作符将表达式拆分成两部分:

  • 左侧:Lambda 表达式的参数列表
  • 右侧: Lambda 表达式的"函数体" --> Lambda 体

语法格式 1:无参数,无返回值,且 Lambda 体中只有一条语句

() -> lambda 体

代码示例:
// 使用匿名内部类的方式
Runnable run = new Runnable() {
    @Override
    public void run() {
        System.out.println("Hello world!");
    }
}
r.run();

System.out.println("---------------------")

// 使用 Lambda 的方式
Runnable runa = () -> System.out.println("Hello runnable!");
runa.run();

语法格式 2:有一个参数,无返回值,且 Lambda 体中只有一条语句

(x) -> Lambda 体

代码示例:
Consumer<String> consumer = (str) -> System.out.println(str);
consumer.accept("Hello world!");

语法格式 3:如果只有一个参数,无返回值,且 Lambda 体中只有一条语句,小括号可以省略不写

x -> Lambda 体

代码示例:
Consumer<String> consumer = str -> System.out.println(str);
consumer.accept("Hello world!");

语法格式 4:如果有两个及以上的参数,有返回值,且 Lambda 体中有多条语句

(x, y) -> { 表达式 1; 表达式 2; ...; return y - x; }

代码示例:
Comparator<Integer> comparator = (x, y) -> {
    System.out.println("x = " + x);
    System.out.println("y = " + y);
    return y - x;
}

语法格式 5:如果有两个及以上的参数,但是 Lambda 体中只有返回值一条语句,则 return 和 {} 都可以不写

(x, y) -> y - x

代码示例:
Comparator<Integer> comparator = (x, y) -> y - x;

语法格式 6: Lambda 表达式的参数列表的数据类型可以省略不写,因为 JVM 编译器会通过上下文进行推断,即“类型推断”


Lambda 表达式需要“函数式”接口的支持

函数式接口:接口中只有一个抽象方法的接口,称为函数式接口,可以使用 @FunctionalInterface 注解来进行标注

Java8 内置的四大核心函数式接口

Consumer :消费型接口 --> 一般用于消费传入的数据

void accept(T t);

Supplier : 供给型接口 --> 一般用于提供数据

T get();

Function<T, R> : 函数型接口 --> 一般用于对传入的数据进行处理,并返回处理后的结果

R apply(T t);

Predicate : 断言型接口 --> 一般用于判断传入的数据是否符合条件

boolean test(T t);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值