一篇搞定Java8-Lambda表达式

一、Lambda表达式

Lambda 表达式,也可称为闭包,它是推动 Java 8 发布的最重要新特性。Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。使用 Lambda 表达式可以使代码变的更加简洁紧凑。总的来说你可以不要用,但必须得懂。

二、语法格式

1.举例: (o1,o2)-> Integer.compara(o1,o2);
2.格式:

  • -> :Lambda操作符 或 箭头操作符
  • ->左边 :Lambda形参列表(其实就是接口中抽象方法的形参列表)
  • ->右边 :Lambda体(其实就是重写的抽象方法的方法体)

三、Lambda表达式的使用:(分为6种情况)

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

示例代码:

@Test
    public  void test1(){
        Runnable r1 = new Runnable() {
            @Override
            public void run() {
                System.out.println("Hello World!");
            }
        };
        r1.run();
        System.out.println("----------Lambda格式-----------");
        //Lambda表达式
        Runnable r2 = () -> System.out.println("Hello World!");
        r2.run();
    }

输出结果:
输出结果:

语法格式二:Lambda需要一个参数,但是没有返回值

示例代码

@Test
    public  void test2(){
        Consumer<String> con = new Consumer<String>() {
            @Override
            public void accept(String s) {
                System.out.println(s);
            }
        };
        con.accept("Hello World!");
        System.out.println("-------Lambda格式----------");

        Consumer<String> con1 = (String s) -> System.out.println(s);
        con1.accept("Hello World!...");

    }

输出结果
在这里插入图片描述

语法格式三:数据类型可以省略,因为可由编译器推断出,称为“类型推断”

@Test
    public  void test3(){
        Consumer<String> con = new Consumer<String>() {
            @Override
            public void accept(String s) {
                System.out.println(s);
            }
        };
        con.accept("Hello World!");
        System.out.println("-------Lambda格式----------");
        //类型省略
        Consumer<String> con1 = (s) -> System.out.println(s);
        con1.accept("Hello World!...");
    }

输出结果
在这里插入图片描述

语法格式四:Lambda若只需要一个参数时,参数的小括号可以省略

示例代码

 @Test
    public  void test5(){
        Consumer<String> con1 = (s) -> {
            System.out.println(s);
        };
        con1.accept("I love Java!");

        System.out.println("---------Lambda格式---------");
		//省略括号
        Consumer<String> con2 = s -> System.out.println(s);
        con2.accept("Talk is cheap,show me the code!");
    }

输出结果
在这里插入图片描述

语法格式五:Lambda 需要两个或以上的参数,多条执行语句,并且可以有返回值

示例代码

@Test
    public  void test6(){
        Comparator<Integer> com1 = new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                System.out.println(o1);
                System.out.println(o2);
                return Integer.compare(o1, o2);
            }
        };

        System.out.println(com1.compare(12, 21));
        System.out.println("----------------------");

        Comparator<Integer> com2 = (o1,o2) ->{
            System.out.println(o1);
            System.out.println(o2);
            return Integer.compare(o1, o2);
        };
        System.out.println(com1.compare(41, 21));
    }

输出结果
在这里插入图片描述

语法格式六:当Lambda体只有一条语句时,return 与大括号若有,都可以省略

示例代码

@Test
    public  void test7(){
        Comparator<Integer> com1 = new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return Integer.compare(o1, o2);
            }
        };
        System.out.println(com1.compare(12, 21));
        System.out.println("----------------------");

        Comparator<Integer> com2 = (o1,o2) -> Integer.compare(o1, o2);
        System.out.println(com1.compare(41, 21));
    }

输出结果
在这里插入图片描述
以上代码你请细细品,是不是感觉Lambda表达式Just so so
进一步了解之Java四大核心函数表达式

发布了9 篇原创文章 · 获赞 19 · 访问量 1608

猜你喜欢

转载自blog.csdn.net/weixin_42190209/article/details/104437386
今日推荐