文章目录
一、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四大核心函数表达式