jdk9
1. 目录结构改变
2. 模块化系统
使用junit也必须要先在module-info.java下先requires一下
3. jshell命令
/vars
列出所有变量
/methods
列出所有定义的方法
/list
列出到目前为止[定义的]数据的列表
/edit
调出编辑框
jshell中再次定义一个变量是可以的, 比如之前已经定义了int m =10;相当于一个覆盖
没有受检异常是指, 没有编译时异常throws xxException或tryCatch
4. 语法改进: 接口的私有方法
5. 钻石操作符(<>即泛型)的语法升级
在jdk8中 匿名内部类不可以使用<>泛型的自动推断 但是在jdk9中可以使用
在后面的<>中加上Object才不会报错
jdk9中可以自动推断
6. try语句升级
7. String存储结构变更
从char[] 变成了byte[] , 并加了编码标记
同时StringBuffer StringBuilder的底层也使用了byte数组
8. 集合工厂方法: 快速创建只读集合
jdk8中创建只读集合:
jdk9中集合工厂创建只读集合
9. InputStream的加强
10. 增强的Stream API
takeWhile()从头开始找满足要求的, 一旦出现不满足要求的就停止
dropWhile()从头开始找满足要求的丢弃, 直到出现不满足要求的, 以及它后面的数据才会被保留下来
11. Optional类中stream()的使用
12. Javascript引擎升级: Nashorn
jdk10
1. 局部变量类型自动推断
2. 新增创建不可变集合的方法
jdk11
1. 新增字符串处理方法
2. Optional再加强
3. 局部变量类型推断升级
4. 全新的http客户端的API
java.net包需要通过模块化引入进来
5. 更简化的编译运行程序
直接用 java xxx.java 编译和运行
6. 废弃Nashorn引擎
7. ZGC
8. 其他新特性
在当前的JDK中看不到什么?