lambda表达式其实就是指一个匿名函数,它支持Java也能进行简单的“函数式编程”,是一个匿名函数,即没有函数名的函数。
而能够使用lambda表达式的一个前提要求是,该变量必须实现某个函数式接口。
基本语法:
(parameters) -> expression 或 (parameters) ->{ statements; }
即: 参数 -> 带返回值的表达式/无返回值的陈述
例子:
传统写法:
public static void runSomeThing(){
Runnable runnable =new Runnable() {
@Override
public void run() {
System.out.println("old run!");
}
};
new Thread(runnable).start();
}
lambda表达式:
public static void runNew(){
new Thread(() ->System.out.println("new run!")).start();
}
上述代码中:() ->System.out.println("new run!")就是lambda表达式
可以看出,它代替了new Runnable(){}这个匿名内部类。
还有集合中:
List<String> list =
Arrays.asList("y","name","is","ber","and","uc");
for (int i = 0; i < list.size(); i++) {
System.out.print(list.get(i));
}
System.out.println();
list.forEach(str->System.out.print(str));
好处
显而易见的,好处就是代码量大大减少,程序逻辑清晰明了。
其缺点就是可读性较差,不容易理解。