Lambda表达式
函数式编程(Functional programming)是一种思想特点
面向对象:先找对象,让对象做事情
函数式编程思想:忽略面向对象的复杂语法,强调做什么,而不是谁去做
Lambda表达式就是函数式思想的体现
Lambda表达式的标准格式
Lambda表达式是JDK 8开始后的一种新语法格式
() -> {
}
()对应着方法的形参->固定格式{}对应着方法的方法体
//改写
Arrays.sort(arr, (Integer o1, Integer o2) -> {
return o1 - o2; //升序排列
//return o2 - o1; //降序排列
}
);
注意点:
- Lambda表达式可以用来简化匿名内部类的书写
- Lambda表达式只能简化函数式接口的匿名内部类的写法
- 函数式接口
- 有且只有一个抽象方法的接口叫做函数式接口
- 接口上方可以加
@FunctionalInterface注解
- 接口上方可以加
- 有且只有一个抽象方法的接口叫做函数式接口
Lambda的好处
Lambda是一个匿名函数,我们可以把Lambda表达式理解为一段可以传递的代码,它可以写出更简洁、更灵活的代码,作为一种更紧凑的代码风格,使Java语言表达能力得到了提升
Lambda表达式的省略写法
-
省略核心
- 可推导,可省略
-
省略规则
- 参数类型可以省略不写
- 如果只有一个参数,参数类型可以省略,同时
()也可以省略 - 如果Lambda表达式的方法体只有一行,大括号、分号、return可以省略不写,需要同时省略
//改写
Arrays.sort(arr, (o1,o2) -> o1 - o2);