java8的新特性:
- Lambda表达式
- 函数式接口
- 方法引用和构造器调用
- Steam API
- 接口中默认方法和静态方法
- 新时间日期API
一、Lambda表达式的基础语法
java 8中引入了一个新的操作符,“->”,该操作符称为箭头操作符或Lambda操作符,(看着有点像C++)的指针
箭头操作符将Lambda表达式分为了两个部分
左侧:Lambda表达式的参数列表
右侧:Lambda表达式所需执行的功能,即Lambda体
语法格式一: 无参数,并且无返回值
()->System.out.print("Hello Lambda!");
语法格式二:有一个参数,无返回值
(x)->System.out.print(x);
语法格式三:若只有一个参数,小括号可以省略不写
x->System.out.print(x);
语法格式四:若有两个以上的参数,有返回值,并且Lambda体中有多条语句
(x,y)->Compartor<Integer> com=(x,y)->{
System.out.print("函数式接口");
return Integer.compare(x,y);
};
语法格式五: 若Lambda体中只有一条语句,return 和大括号都可以省略不写
Comparator(Integer) com=(x,y)->Integer.compare(x,y)
语法格式六: Lambda表达式的参数列表的数据类型可以省略不写,因为JVM编译器可以通过上下文推断出数据类型,即“数据推断”
(Integer x,Integer y)->Integer.compare(x,y);
二 Lambda表达式需要“函数式接口”的支持
函数式接口,接口中只有一个抽象方法,成为函数式接口。可以使用@FunctionInteface 修饰 可以检查是否是函数式接口,如果是函数式接口,若定义两个抽象方法,则出现编译错误。