Java在1.8版本引入了Lambda表达式,它属于函数式编程思想。它和面向对象的思想有很大的不同。面向对象的思想提倡:创建对象,调用方法,解决问题。而函数时编程思想注重的是方法,不关注过程,只注重结果。
当要实现的方法比较简单,或是只要被调用一次时,若使用面向对象的的思想,会增加代码量。如果这时候使用Lambda表达式,可以大大减少代码量,一定程度上提高代码编写效率。以下代码可以实现与上方相同的功能。
Lmabda表达式的语法
(parameter) ->{statements;}括号中的值为参数,->为Lambda表达式的运算符,{}用来描述方法体。
Lambda表达式对接口的要求
Lambda 表达式主要用来定义行内执行的方法类型接口,例如,一个简单方法接口。
Lambda规定接口中只能由一个需要被实现的方法(不是规定接口中只有一个方法)。
Lambda表达式的简化
作为一个本来就是求简的工具,编写代码时也可以省略很多地方
```java
public static void main(String[] args) {
//完整的Lambda表达式
print((int x) -> {
return 2*x;
},10);
//省略类型声明,但必须所有参数都不写
print((x) -> {
return 2*x;
},10);
//如果只有一个参数,则可以省略参数小括号
print(x -> {
return 2*x;
},10);
//如果只有一条执行语句,且是返回语句,则可以省略大括号和return
Mymath m = x -> 2*x;
print(m,10);
}
public static void print(Mymath m,int x){
int num = m.multiplication(x);
System.out.println(num);
}
static interface Mymath{
int multiplication(int x);
}
```输出结果
20
20
20
20
Lambda表达式的优缺点
优点:1. 代码简洁,开发迅速
2. 方便函数式编程
3. 非常容易进行并行计算
缺点:1.可读性很差
2.不容易调试
3. 若不用并行计算,很多时候计算速度没有比传统的 for 循环快。