Lambda 表达式的基础语法:Java 8中引入了新的操作符 ” -> ” ;该操作符称为箭头操作符或Lambda操作符;
箭头操作符将Lambda表达式拆分为两部分:
- 左侧:Lambda表达式的参数列表
- 右侧:Lambda表达式中所需要执行的功能,即Lambda 体
所谓的Lambda就是对接口的实现;
所谓的Lambda表达式左侧的参数列表对应的就是接口中抽象方法的参数列表;
箭头操作符的右侧,需要对抽象方法实现的功能;对抽象方法的实现;
Lambda需要函数式接口的支持;
语法格式一:无参数,无返回值
() -> System.out.println("Hello Lambda!");
输出:
局部匿名内部类;
语法格式二:有一个参数,并且无返回值;
(x) -> System.out.println(x);
语法格式三:若只有一个参数,小括号可以省略不写;
x -> System.out.println(x);
语法格式四:有两个以上的参数,有返回值,并且Lambda体中有多条语句
有多条语句,Lambda 必须使用 { }
语法格式五:若Lambda体中只有一条语句,return 和 大括号都可以省略不写;
相比较于语法格式四;
语法格式六:Lambda 表达式的参数列表的数据类型可以省略不写;
因为JYM编译器可以通过上下文推断出数据类型,即“类型推断”;
(Integer x,Integer y) -> Integer.compare(x,y);
类型推断:JDK 1.8才可以使用,1.7不行;
总结:
左右遇一括号省;
左侧推断类型省;
Lambda 表达式需要“函数式接口”的支持
函数式接口:接口中只有一个抽象方法方法的接口,称为函数式接口;
可以使用注解 @FunctionalInterface 修饰
- 可以检查是否是函数式接口;
测试:
定义一个接口;
测试类:
输出:
Lambda 练习
一
输出:
二
-!!!
三
-!!!
输出:
学习总结自百度视频《尚硅谷Java视频Java8新特性视频教程》
视频地址: