学习笔记-Java8新特性-第二节-Lambda表达式

Lambda表达式

Lambda表达式是什么

  • Lambda是一个匿名函数

  • 是一段可以传递的代码

  • 是一种语法糖

  • 使用Lambda可以写出更简洁、更灵活的代码

  • 如果要使用Lambda表达式,需要函数式接口的支持

Lambda的语法格式

基础语法

  • Java8中引入了一个新的操作符->

    • 称为箭头操作符或Lambda操作符

    • 箭头左侧

      • Lambda表达式的参数列表
    • 箭头右侧

      • Lambda要实现的功能

      • 称为Lambda体

语法格式一:无参数无返回值

() -> ?;

示例:

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

    public void test1() {
        Runnable r1 = () -> System.out.println("Hello Lambda!");
        r1.run();
    }

语法格式二:只有一条语句

(a) -> ?;

lambda体可以不用大括号

示例:

    public void test2() {
        Consumer<String> con = (x) -> System.out.println(x);
        con.accept("Lambda");
    }

语法格式三:若只有一个参数,则小括号可以省略不写

a -> ?;

示例:

    public void test3() {
        Consumer<String> con = x -> System.out.println(x);
        con.accept("Lambda");
    }

语法格式四:有多条语句

有多条语句时,lambda体必须用大括号

        Comparator<Integer> com = (x, y) -> {
            System.out.println("函数式接口");
            return Integer.compare(x, y);
        };

语法格式五:只有一条语句,需要返回值时

大括号和return都可以不写

Comparator<Integer> com = (x, y) -> Integer.compare(x, y);

语法格式六:Lambda表达式的参数列表的数据类型可省略

JVM可以通过上下文来推断出数据类型,称为类型推断

口诀

左右遇一括号省

左侧推断类型省

函数式接口

  • 若接口中只有一个抽象方法的接口,称为函数式接口

  • 可以使用@FunctionInterface进行修饰

  • 如果要使用Lambda表达式,需要函数式接口的支持

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

  • Consumer<T> : 消费型接口

    • void accept(T t);
  • Supplier<T> : 供给型接口

    • T get();
  • Function<T, R> : 函数式接口

    • R apply(T t);
  • Predicate<T> : 断言型接口

    • boolean test(T t);

还有一些其他接口,用于满足其他需求

posted @   0Andl0  阅读(13)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示