简介
lambda表达式采用一种简洁的语法定义代码块,是一个可传递的代码块。
语法
第一种:() -> 表达式/代码块 ;
第二种:(参数类型 参数,…) -> 表达式/代码块 ;
第三种:参数 -> 表达式/代码块
说明:
- 括号里面为参数,参数个数范围为0~n个;
- 参数类型可以被编译器推导出来时可以省略参数类型声明;
- 当且仅当只有一个参数时并且参数类型可以被编译器推导出来不声明参数类型时,可以省略括号;
- 只有一条语体时为表达式;多条语体用“{}”括起来为代码块。
示例
public static void main(String[] args) {
// 1 () -> 表达式
Runnable runnable1 = () -> System.out.println("Hello World!");
runnable1.run();
// 2 () -> 代码块
Runnable runnable2 = () -> {
String str = "Hello lambda!";
System.out.println(str);
};
runnable2.run();
//3 (参数1,...) -> 表达式
String[] names = {"Jacob","Bob","Christopher","William"};
System.out.println(Arrays.toString(names));
Arrays.sort(names, (a,b) -> a.length()-b.length());
System.out.println(Arrays.toString(names));
//4 参数 -> 代码块
Predicate<Integer> predicate = a -> {
System.out.println("a = " + a);
return a>0;
};
predicate.test(1);
}
输出结果:
Hello World!
Hello lambda!
[Bob, Jacob, William, Christopher]
a = 1