一篇搞定Java8-Lambda表达式


文章目录

  • 一、Lambda表达式
  • 二、语法格式
  • 三、Lambda表达式的使用:(分为6种情况)
    • 语法格式一:无参,无返回值
    • 语法格式二:Lambda需要一个参数,但是没有返回值
    • 语法格式三:数据类型可以省略,因为可由编译器推断出,称为“类型推断”
    • 语法格式四:Lambda若只需要一个参数时,参数的小括号可以省略
    • 语法格式五:Lambda 需要两个或以上的参数,多条执行语句,并且可以有返回值
    • 语法格式六:当Lambda体只有一条语句时,return 与大括号若有,都可以省略

一、Lambda表达式 Lambda 表达式,也可称为闭包,它是推动 Java 8 发布的最重要新特性。Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。使用 Lambda 表达式可以使代码变的更加简洁紧凑。总的来说你可以不要用,但必须得懂。
二、语法格式 1.举例: (o1,o2)-> Integer.compara(o1,o2);
2.格式:
  • -> :Lambda操作符 或 箭头操作符
  • ->左边 :Lambda形参列表(其实就是接口中抽象方法的形参列表)
  • ->右边 :Lambda体(其实就是重写的抽象方法的方法体)
三、Lambda表达式的使用:(分为6种情况) 语法格式一:无参,无返回值 示例代码:
@Test publicvoid 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(); }

输出结果:
一篇搞定Java8-Lambda表达式
文章图片

语法格式二:Lambda需要一个参数,但是没有返回值 示例代码
@Test publicvoid test2(){ Consumer> con = new Consumer>() { @Override public void accept(String s) { System.out.println(s); } }; con.accept("Hello World!"); System.out.println("-------Lambda格式----------"); Consumer> con1 = (String s) -> System.out.println(s); con1.accept("Hello World!..."); }

输出结果
一篇搞定Java8-Lambda表达式
文章图片

语法格式三:数据类型可以省略,因为可由编译器推断出,称为“类型推断”
@Test publicvoid test3(){ Consumer> con = new Consumer>() { @Override public void accept(String s) { System.out.println(s); } }; con.accept("Hello World!"); System.out.println("-------Lambda格式----------"); //类型省略 Consumer> con1 = (s) -> System.out.println(s); con1.accept("Hello World!..."); }

输出结果
一篇搞定Java8-Lambda表达式
文章图片

语法格式四:Lambda若只需要一个参数时,参数的小括号可以省略 示例代码
@Test publicvoid test5(){ Consumer> con1 = (s) -> { System.out.println(s); }; con1.accept("I love Java!"); System.out.println("---------Lambda格式---------"); //省略括号 Consumer> con2 = s -> System.out.println(s); con2.accept("Talk is cheap,show me the code!"); }

输出结果
一篇搞定Java8-Lambda表达式
文章图片

语法格式五:Lambda 需要两个或以上的参数,多条执行语句,并且可以有返回值 示例代码
@Test publicvoid test6(){ Comparator com1 = new Comparator() { @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 com2 = (o1,o2) ->{ System.out.println(o1); System.out.println(o2); return Integer.compare(o1, o2); }; System.out.println(com1.compare(41, 21)); }

输出结果
一篇搞定Java8-Lambda表达式
文章图片

语法格式六:当Lambda体只有一条语句时,return 与大括号若有,都可以省略 示例代码
@Test publicvoid test7(){ Comparator com1 = new Comparator() { @Override public int compare(Integer o1, Integer o2) { return Integer.compare(o1, o2); } }; System.out.println(com1.compare(12, 21)); System.out.println("----------------------"); Comparator com2 = (o1,o2) -> Integer.compare(o1, o2); System.out.println(com1.compare(41, 21)); }

【一篇搞定Java8-Lambda表达式】输出结果
一篇搞定Java8-Lambda表达式
文章图片

以上代码你请细细品,是不是感觉Lambda表达式Just so so
进一步了解之Java四大核心函数表达式

    推荐阅读