Lambda 表达式:在 java8 语言中引入的一种新的语法元素和操作符。这个操作符为 ->,该操作符被称为 Lambda 操作符或箭头操作符。他将 Lambda 分为了两个部分。
- 左侧:指定了 Lambda 表达式需要的参数列表。
- 右侧:指定了 Lambda 体,是抽象方法的实现逻辑,即 Lambda 表达式要执行的功能。
语法格式:
- 无参,无返回值。
无参的话,表达式的左侧即为一个空的括号,右侧写在代码块中写要执行的语句即可:
// 使用lambda表达式前
Runnable r1 = new Runnable(){
@Override
public void run(){
System.out.println("我是要成为海贼王的男人");
};
};
r1.run();
// 使用lambda表达式后
Runnable r2 = ()->{
System.out.println("我是要成为海贼王的男人");
}
r2.run();
- 有一个参数,但是没有返回值。
参数的数据类型可省略。
只有一个参数时,左侧的括号也可省略;
@Test
public void test2(){
//未使用Lambda表达式
Consumer<String> con = new Consumer<String>() {
@Override
public void accept(String s) {
System.out.println(s);
}
};
con.accept("雪玫瑰的花语是什么?");
System.out.println("*******************");
//使用Lambda表达式
Consumer<String> con1 = (String s) -> { // 这是,括号里的String可以省略,成为类型推断
System.out.println(s);
};
//Lambda也可以写成如下形式:
Consumer<String> con1 = s -> {
System.out.println(s);
};
con1.accept("只能远远的看着你");
}
- 有两个以上的参数,多条执行语句,并且可以有返回值;
// 使用表达式前:
Comparator<Integer> com1 = new Comparator<integer>(){
@Override
public int compare(Integer o1 , Integer o2 ){
System.out.println(o1);
System.out.println(o2);
return o1.comparaTo(o2);
}
};
// 使用表达式后
Comparator<Integer> com2 = (o1 ,o2 )-> {
System.out.println(o1);
System.out.println(o2);
return o1.comparaTo(o2);
}
}
- 若 lambda 体只有一条用于 return 的语句时,可以将 return 和大括号都省略。
Comparator<Integer> com = (o1 , o2 ) -> o1.comparaTo(o2);
10万+

被折叠的 条评论
为什么被折叠?



