Java8新特性

今天我们来聊一聊Java8新特性,Java 8 (又称为 jdk 1.8) 是 Java 语言开发的一个主要版本。它支持函数式编程,新的 JavaScript 引擎,新的日期 API,新的Stream API 等。
Lambda表达式:也可称为闭包,它是推动 Java 8 发布的最重要新特性。Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。Lambda是数学中的一个函数. Java中使用方法来代替函数,方法总是作为类或对象的一部分存在的。
可以把Lambda看作是一个匿名方法, 拥有更简洁的语法。
Lambda语法:(参数列表) -> {语句;}
Lambda表达式由参数列表和一个Lambda体组成, 通过箭头连接。
注意:当只有一个参数时, 参数列表的小括弧可以省略:x -> { System.out.println(x); }
参数列表中参数的数据类型可以省略:( x,y ) -> {x.compareTo(y);}
如果Lambda体只有一条语句,大括弧也可以省略:x -> { return x + 2 ; }
如果Lambda体中只有一条return语句, return关键字可以省略:(x,y) -> x+y
Java8方法引用:方法引用可以让你重复使用现有的方法定义, 并像Lambda一样传递它们,例如:
list.forEach( x -> System.out.println(x) );
也可以使用这样方法引用:list.forEach( System.out::println );
方法引用可以看作是仅仅调用特定方法的Lambda表达式的一种快捷写法。
注意:需要使用方法引用时, 目标引用放在分隔符::前面, 方法名放在::的后面, 注意,只需要方法名不需要小括弧。
例如:    (Student stu) -> stu.getScore() 改为方法引用: Student::getScore
            () ->Thread.currentThread().dumpStack() 改为方法引用: Thread.currentThread()::dumpStack
            (Str, i) -> Str.substring(i) 改为方法引用: String::substring
            a -> System.out.println(a) 改为方法引用: System.out::prinltn
方法引用主要有三类:
1.指向静态方法的方法引用
2.指向任意类型的实例方法的引用
3.指向现有对象的实例方法的引用
Java8接口默认方法:接口中方法默认使用public abstract修饰, 接口中字段默认使用public static final修饰。在JDK8中对接口进行增强, 可以定义default修饰的方法,也可以定义static修饰的方法。
default修饰的方法,和static修饰的方法主要用于接口功能增强时,如果接口已经定义完成,并且也有若干的实现类实现了该接口.根据业务需求,需要在接口中再增强其他的功能,后面增强的功能可以使用default修饰. 之前定义好的实现类就不需要再进行修改。如下图
image.png

暂无评论