JDK新版本特性
JDK8新特性
Java 8 发布于 2014 年 3 月份,可以说是 Java 6 之后最重要的版本更新,深受开发者的喜爱。
- 函数式编程和 Lambda 表达式
- Stream 流
- 参考:https://mp.weixin.qq.com/s/7hNUjjmqKcHDtymsfG_Gtw
- 单从“Stream”这个单词上来看,它似乎和 java.io 包下的 InputStream 和 OutputStream 有些关系。实际上呢,没毛关系。Java 8 新增的 Stream 是为了解放程序员操作集合(Collection)时的生产力,之所以能解放,很大一部分原因可以归功于同时出现的 Lambda 表达式——极大的提高了编程效率和程序可读性。Stream 就好像一个高级的迭代器,但只能遍历一次,就好像一江春水向东流;在流的过程中,对流中的元素执行一些操作,比如“过滤掉长度大于 10 的字符串”、“获取每个字符串的首字母”等。
流的操作可以分为两种类型:
1)中间操作,可以有多个,每次返回一个新的流,可进行链式操作。
2)终端操作,只能有一个,每次执行完,这个流也就用光光了,无法执行下一个操作,因此只能放在最后。
- 创建流:如果是数组的话,可以使用
Arrays.stream()
或者Stream.of()
创建流;如果是集合的话,可以直接使用stream()
方法创建流,因为该方法已经添加到 Collection 接口中。 - 操作流:1)过滤,filter(),可以从流中筛选出我们想要的元素;2)映射,如果想通过某种操作把一个流中的元素转化成新的流中的元素,可以使用
map()
方法。3)匹配,Stream 类提供了三个方法可供进行元素匹配,它们分别是:anyMatch()
,只要有一个元素匹配传入的条件,就返回 true;allMatch()
,只有有一个元素不匹配传入的条件,就返回 false;如果全部匹配,则返回 true。noneMatch()
,只要有一个元素匹配传入的条件,就返回 false;如果全部匹配,则返回 true。4)组合,reduce()
方法的主要作用是把 Stream 中的元素组合起来。 - 转换流:既然可以把集合或者数组转成流,那么也应该有对应的方法,将流转换回去——
collect()
方法就满足了这种需求。
- Java Date Time API
- 接口中可以使用默认方法和静态方法
JDK9新特性
Java 9 更新的重要功能有:
- 模块系统
- 不可变的 List、Set、Map 的工厂方法
- 接口中可以有私有方法
- 垃圾收集器改进
JDK10新特性
Java 10 更新的重要功能有:
- 局部变量类型推断,举个例子,
var list = new ArrayList();
,可以使用 var 来作为变量类型,Java 编译器知道 list 的类型为字符串的 ArrayList。 - 增强
java.util.Locale
。 - 提供了一组默认的根证书颁发机构(CA)。
JDK10新特性
Java 11 更新的重要功能有:
- 可以直接使用
java
命令运行 Java 程序,源代码将会隐式编译和运行。 - String 类新增了一些方法,比如说
isBlank()
、lines()
、strip()
等等。 - Files 类新增了两个读写方法,
readString()
和writeString()
。 - 可以在 Lambda 表达式中使用 var 作为变量类型。
JDK11新特性
Java 11 是继 Java 8 之后的第二个商用版本,如果你下载的是 Oracle JDK,则需要进行付费;如果想继续使用免费版本,需要下载 Open JDK。
Oracle JDK 中会有一些 Open JDK 没有的、商用闭源的功能。
Java 11 更新的重要功能有:
- 可以直接使用
java
命令运行 Java 程序,源代码将会隐式编译和运行。 - String 类新增了一些方法,比如说
isBlank()
、lines()
、strip()
等等。 - Files 类新增了两个读写方法,
readString()
和writeString()
。 - 可以在 Lambda 表达式中使用 var 作为变量类型。
JDK12新特性
Java 12 发布于 2019 年 3 月 19 日,更新的重要功能有:
- JVM 更新
File.mismatch()
方法- 紧凑型数字格式
- String 类新增了一些方法,比如说
indent()
JDK13新特性
Java 13 发布于 2019 年 9 月 17 日,更新的重要功能有:
- 文本块,预览功能
- switch 表达式,预览功能
- Java Socket 重新实现
FileSystems.newFileSystem()
方法- 支持 Unicode 12.1
- 可伸缩、低延迟的垃圾收集器改进,用于返回未使用的内存
JDK14新特性
Java 14 发布于 2020 年 3 月 17 日,更新的重要功能有:
- switch 表达式
- instanceof 增强表达式,预览功能
- 文本块,第二次预览
- Records,预览功能
刚好我之前写过一篇文章,关于 Java 14 的开箱体验,很香,读者朋友需要的话,可以点下面的链接看一看。