一篇搞定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体(其实就是重写的抽象方法的方法体)
@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表达式](https://img.it610.com/image/info8/517eee4f6ba942ebb0c4baea7873d149.png)
文章图片
语法格式二: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表达式](https://img.it610.com/image/info8/8cd1ceea282745b9935d6683fcf30baf.png)
文章图片
语法格式三:数据类型可以省略,因为可由编译器推断出,称为“类型推断”
@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表达式](https://img.it610.com/image/info8/a2e6a641d26049c0b53a844d131c4795.png)
文章图片
语法格式四: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表达式](https://img.it610.com/image/info8/7c48b1c857dc46339ba6696a8ff960ae.png)
文章图片
语法格式五: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表达式](https://img.it610.com/image/info8/ff94ab6b8e88420bae4ef3bf801c7c9b.png)
文章图片
语法格式六:当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表达式](https://img.it610.com/image/info8/fe8eda162cae4a329de8aba47bc88309.png)
文章图片
以上代码你请细细品,是不是感觉Lambda表达式Just so so
进一步了解之Java四大核心函数表达式
推荐阅读
- 由伐木工引发的陈述
- 随笔一篇
- 我为什么写不出一篇读书分享稿()
- 2018-06-29|2018-06-29 这是我的第一篇文章 markdown
- 《如何写出一篇好文章》之赠送礼物的训练
- 为了女儿,我尝试画画——DIY绘本之《一支铅笔的梦想》(绘画小白的第一篇作品)
- 自得其乐
- 开工平安
- 用|用 Python 写网络编程(二)
- 只需5步,写出让人眼前一亮的软文