java 11的新特性主要体现在:
函数式接口、Lambda表达式、方法引用/构造器引用、StreamAPI、接口的增强
1、Lambda表达式
Lambda表达式是一个匿名函数,我们可以把lambda表达式理解为是一段可以传递的代码。使用lambda表达式 可以写出更简洁 更灵活的代码。
1.1 Lambda 表达式的语法
(s1,s2) -> s1.compareTo(s2)
语法中:
-
-> 称为lambda操作符或箭头操作符
-
左边 指定了lambda表达式的参数列表
-
右边 指定lambda体。是抽象方法的实现逻辑 。也是lambda表达式的实现的功能
语法一: 无参无返回值
Runnable r2 = ()-> System.out.println("hello world-----");
语法二:有一个参数 但是没有返回值
@Test
public void lambdaTest3(){
Consumer<String> c = new Consumer<String>() {
@Override
public void accept(String s) {
System.out.println(s);
}
};
// lambda表达式的写法 由泛型推断出参数的类型--称为类型推断
Consumer<String> c1 = s->System.out.println(s);
c.accept("aaaaaaaa");
}
语法三:有多个参数 多条执行语句 并且可以有返回值
@Test
public void lambdaTest4(){
Comparator<Integer> com = new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
System.out.println("比较两个整数的大小");
int res = o1.compareTo(o2);
return res;
}
};
//lambda表达式 当有多条语句时 大括号不能省略
Comparator<Integer> comp = (o1, o2)->{
System.out.println("比较两个整数的大小");
int res = o1.compareTo(o2);
return res