1.lambda的基础语法:在java8中引入了一个新的操作符"->" 我们可以把它叫做箭头操作符或者lambda操作符。它的作用就是将lambda拆成两个部分。
左侧:lambda的参数列表
右侧:我们要执行的操作,也叫作lambda体
举几个列子,lambda的参数类型可以省略不写,因为jvm编译器可以通过上下文推断,当然你写了也没关系。
格式一:无参数,无返回值 ()->System.out.println("今天是周日");
格式二:有一个参数,无返回值 (x)->System.out.println(x); 如果只有一个参数箭头左边的小括号也可以省去 x->System.out.println(x);
格式三:有两个参数,有返回值,并且lambda体中只有一条语句: (x,y)->;
格式四:有两个参数,有返回值,并且lambda体中有多条语句,这时候需要用{}将lambda体包起来: (x,y)->{};
代码演示:
public class lambda {
//无参,无返回值写法
@Test
public void Test01() {
//没有使用lambda表达式
Runnable runnable = new Runnable() {
@Override
public void run() {
System.out.println("今天是周日");
}
};
runnable.run();
//使用lambda
Runnable runnable1 = () -> {
System.out.println("今天是周日");
};
runnable1.run();
}
//有一个参数,无返回值
@Test
public void Test02() {
//注意这里x对应accept()接收的参数;Consumer是一个消费型的函数式接口,关于函数式接口后面会总结。
Consumer<String> consume = x -> System.out.println(x);
consume.accept("今天是周日");
}
//两个参数,有返回值
@Test
public void Test03() {
Comparator<Integer> consume = (x, y) -> Integer.compare(x, y);
}
//两个参数,有返回值
@Test
public void Test04() {
Comparator<Integer> consume = (x, y) -> {
System.out.println("比较大小");
return Integer.compare(x, y);
};
}
}