提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
一、什么是Lambda表达式?
Lambda是一个匿名函数,我们可以把Lambda表达式理解为是一段可以传递的代码(将代码像数据一样传递),更加简洁。
二、Lambda表达式如何使用
举例:(o1,o2)->Integer.compare(o1,o2);
格式:
- -> : lambda操作符 箭头操作符
- 左边:lambda形参列表(其实就是接口中的抽象方法的形参列表)
- 右边:lambda体(其实就是重写的抽象方法的方法体)
使用总结:
->左边:lambda形参列表的参数类型可以省略(类型推断)
->右边:lambda体应该使用一对{}包裹,若只有一句 可省
实质:作为接口的实例 (该接口只能有一个抽象方法)
import org.junit.Test;
import java.util.Comparator;
import java.util.function.Consumer;
/**
* @Author: mei_ming
* @DateTime: 2022/6/3 9:15
* @Description: 演示6个语法
*/
public class LambdaDemo1 {
//语法一:无参,无返回值
@Test
public void test1(){
Runnable r1 = new Runnable() {
@Override
public void run() {
System.out.println("我爱天安门");
}
};
r1.run();
System.out.println("-------------------");
Runnable r2 =()->{
System.out.println("我爱故宫");
};
r2.run();
}
//语法二:有1个参,无返回值
@Test
public void test2(){
Consumer<String> con = new Consumer<String>() {
@Override
public void accept(String s) {
System.out.println(s);
}
};
con.accept("西红柿和番茄的区别是什么?");
System.out.println("--------------");
Consumer<String> con2 = (String s)->{
System.out.println(s);
};
con2.accept("没区别");
}
//语法三:数据类型可以省略,因为可由编译器推断得出,称为“类型推断”
@Test
public void test3(){
Consumer<String> con1 = (String s)->{
System.out.println(s);
};
con1.accept("没区别");
System.out.println("--------------");
Consumer<String> con2 = (s)->{
System.out.println(s);
};
con2.accept("没区别");
}
//语法四:lambda若只需要一个参数时,参数的小括号可以省
@Test
public void test4(){
Consumer<String> con1 = (s)->{
System.out.println(s);
};
con1.accept("没区别");
System.out.println("--------------");
Consumer<String> con2 = s->{
System.out.println(s);
};
con2.accept("没区别");
}
//语法五:lambda需要两个或以上的参数时,多条执行语句,并且有返回值
@Test
public void test5(){
Comparator<Integer> com1 = new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
System.out.println(o1);
System.out.println(o2);
return o1.compareTo(o2);
}
};
System.out.println(com1.compare(12,24));
System.out.println("--------------");
Comparator<Integer> com2 = (o1,o2) ->{
System.out.println(o1);
System.out.println(o2);
return o1.compareTo(o2);
};
System.out.println(com2.compare(12,6));
}
//语法六:lambda体只有一条执行语句,return可省
@Test
public void test6(){
Comparator<Integer> com1 = (o1,o2) ->{
return o1.compareTo(o2);
};
System.out.println(com1.compare(12,24));
System.out.println("--------------");
Comparator<Integer> com2 = (o1,o2) ->o1.compareTo(o2);
System.out.println(com2.compare(12,6));
}
}
个人学习笔记,欢迎纠错