温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java Lambda表达式是什么

发布时间:2026-09-12 03:00:49 来源:亿速云 阅读:96 作者:小樊 栏目:编程语言

在 Java 中,Lambda 表达式是一种**简洁表示“可传递的匿名函数”的语法,用于简化函数式接口(只有一个抽象方法的接口)**的实现。


一、为什么需要 Lambda?

在 Java 8 之前,如果你想使用接口(比如 Runnable),通常需要写匿名内部类:

new Thread(new Runnable() {
    @Override
    public void run() {
        System.out.println("线程执行");
    }
}).start();

Lambda 可以让上面的代码更简洁:

new Thread(() -> System.out.println("线程执行")).start();

二、Lambda 表达式的基本语法

(参数列表) -> { 方法体 }

1️⃣ 无参数

() -> System.out.println("Hello");

2️⃣ 一个参数(类型可省略)

x -> x * x

3️⃣ 多个参数

(a, b) -> a + b

4️⃣ 多行代码(需要大括号和 return)

(a, b) -> {
    int sum = a + b;
    return sum;
}

三、Lambda 的使用前提:函数式接口

函数式接口:只有一个抽象方法的接口
常用注解:@FunctionalInterface

@FunctionalInterface
interface MyInterface {
    void show();
}

使用 Lambda:

MyInterface m = () -> System.out.println("Hello");
m.show();

四、常见使用场景

1️⃣ 集合遍历(Stream / forEach)

List<String> list = Arrays.asList("a", "b", "c");
list.forEach(s -> System.out.println(s));

2️⃣ 线程

Runnable r = () -> System.out.println("run");
new Thread(r).start();

3️⃣ 排序

List<Integer> nums = Arrays.asList(3, 1, 2);
nums.sort((a, b) -> a - b);

五、方法引用(Lambda 的简化写法)

list.forEach(System.out::println);

等价于:

list.forEach(s -> System.out.println(s));

六、Lambda 的本质

  • ❌ 不是匿名内部类的语法糖
  • ✅ 在运行时通过 invokedynamic 实现
  • ✅ 更轻量、性能更好

七、一句话总结

Lambda 表达式 = 简化函数式接口实现的语法糖,让 Java 更像“函数式编程语言”。

如果你愿意,我也可以帮你:

  • 对比 Lambda 和匿名内部类
  • 讲 Stream + Lambda 实战
  • 解释变量捕获(闭包问题)
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手