/**
* @author TXY
* Lambda表达式的使用
* 1.举例 : (o1,o2) -> Integer.compare(o1,o2)
* 2.格式:
* -> lambda操作符 或 箭头操作符
* -> 左边: lambda形参列表 (其实就是接口中 抽象方法的 形参列表)
* -> 右边: lambda体 (其实就是 重写的抽象方法的 方法体)
* 3.lambda表达式的使用: (分为6种情况来介绍)
* 总结:
* -> 左边: lambda形参列表的参数类型可以省略(类型推断);如果lambda 形参列表只有一个参数,
* 其一对()也可以省略;
*
* -> 右边: lambda体应该使用一对{}包裹;如果lambda体只有一条执行语句(可能是return语句),
* 可以省略之恶一对{}和 return关键字;
* 4.lambda表达式的本质: 作为函数式接口的实例
*
*/
public class LambdaTest1 {
/**
* 语法格式一: 无参 无返回值
*/
@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();
}
/**
* 语法格式二: lambda 需要一个参数,但是没有返回值
*/
@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> con1 = ((String s) -> {System.out.println(s);});
con1.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> con2 = (s) -> {System.out.println(s);};
con2.accept("一个是听的人信了,一个是说的人信了!");
System.out.println("================================================");
Consumer<String> con3 = s -> {System.out.println(s);};
con3.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, 21));
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,6));
System.out.println("=====================================");
Comparator<Integer> com2 = (o1,o2) -> o1.compareTo(o2);
System.out.println(com2.compare(12,13));
}
}
源自尚硅谷Java基础教学视频