jdk13快来了,jdk8的这几点应该看看!

Stream

用Optional取代null

新的日志和时间

CompletableFuture

去除了永久代(PermGen) 被元空间(Metaspace)代替

我们来看看阿里规范里面涉及到jdk8相关内容:

jdk13快来了,jdk8的这几点应该看看!

jdk13快来了,jdk8的这几点应该看看!

jdk13快来了,jdk8的这几点应该看看!

jdk13快来了,jdk8的这几点应该看看!

jdk13快来了,jdk8的这几点应该看看!

jdk13快来了,jdk8的这几点应该看看!

jdk8开篇

https://www.oracle.com/technetwork/java/javase/8-whats-new-2157071.html

jdk13快来了,jdk8的这几点应该看看!

主要有:

1:lambda表达式:一种新的语言特性,能够把函数作为方法的参数或将代码作为数据。lambda表达式使你在表示函数接口(具有单个方法的接口)的实例更加紧凑。

2:方法引用 是lambda表达式的一个简化写法,所引用的方法其实是lambda表达式的方法体实现,这样使代码更容易阅读

3:默认方法:Java 8引入default method,或者叫virtual extension method,目的是为了让接口可以事后添加新方法而无需强迫所有实现该接口的类都提供新方法的实现。也就是说它的主要使用场景可能会涉及代码演进。

4: Stream 不是 集合元素,也不是数据结构,它相当于一个 高级版本的 Iterator,不可以重复遍历里面的数据,像水一样,流过了就一去不复返。它和普通的 Iterator 不同的是,它可以并行遍历,普通的 Iterator 只能是串行,在一个线程中执行。操作包括:中间操作 和 最终操作(只能操作一遍) 串行流操作在一个线程中依次完成。并行流在多个线程中完成,主要利用了 JDK7 的 Fork/Join 框架来拆分任务和加速处理。相比串行流,并行流可以很大程度提高程序的效率

5:用Optional取代null

6:新的日志和时间,可以使用Instant代替Date LocalDateTime代替Calendar DateTimeFormatter代替SimpleDateFormat

7:CompletableFuture:CompletableFuture提供了非常强大的Future的扩展功能,可以帮助我们简化异步编程的复杂性,并且提供了函数式编程的能力,可以通过回调的方式处理计算结果,也提供了转换和组合 CompletableFuture 的方法。

8:去除了永久代(PermGen) 被元空间(Metaspace)代替 配置:-XX:MetaspaceSize=8m -XX:MaxMetaspaceSize=80m 代替 -XX:PermSize=10m -XX:MaxPermSize=10m

lambda

JDK8最大的特性应该非lambda莫属!

jdk13快来了,jdk8的这几点应该看看!

IDEA工具自动提示:

jdk13快来了,jdk8的这几点应该看看!

lambda语法结构 :
完整的Lambda表达式由三部分组成:参数列表、箭头、声明语句;

(Type1 param1, Type2 param2, ..., TypeN paramN) -> { statment1; statment2; //............. return statmentM;}

绝大多数情况,编译器都可以从上下文环境中推断出lambda表达式的参数类型,所以参数可以省略:

(param1,param2, ..., paramN) -> { statment1; statment2; //............. return statmentM;}

当lambda表达式的参数个数只有一个,可以省略小括号:

param1 -> { statment1; statment2; //............. return statmentM;}

当lambda表达式只包含一条语句时,可以省略大括号、return和语句结尾的分号:

param1 -> statment

在那里以及如何使用Lambda????

你可以在函数式接口上面使用Lambda表达式。

jdk13快来了,jdk8的这几点应该看看!

备注: JDK定义了很多现在的函数接口,实际自己也可以定义接口去做为表达式的返回,只是大多数情况下JDK定义的直接拿来就可以用了。

Java SE 7中已经存在的函数式接口:

java.lang.Runnable

java.util.concurrent.Callable

java.security.PrivilegedAction

java.util.Comparator

java.util.concurrent.Callable

java.io.FileFilter

java.beans.PropertyChangeListener

除此之外,Java SE 8中增加了一个新的包:java.util.function,它里面包含了常用的函数式接口,例如:

Predicate<T>——接收T对象并返回boolean

Consumer<T>——接收T对象,不返回值

Function<T, R>——接收T对象,返回R对象

Supplier<T>——提供T对象(例如工厂),不接收值

随便看几个:

jdk13快来了,jdk8的这几点应该看看!

jdk13快来了,jdk8的这几点应该看看!

默认方法

Java 8 引入了新的语言特性——默认方法(Default Methods)。

Default methods enable new functionality to be added to the interfaces of libraries and ensure binary compatibility with code written for older versions of those interfaces.

默认方法允许您添加新的功能到现有库的接口中,并能确保与采用旧版本接口编写的代码的二进制兼容性。

默认方法是在接口中的方法签名前加上了 default 关键字的实现方法。

为什么要有默认方法

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpwjyz.html