java9新特性
3.jShell命令
4.接口中声明私有方法
接口中默认权限修饰符为public,在Java9后也可显式地定义为private
5.钻石操作符使用升级
但下述在Java8中不会出错
6.语法改进:try语句
Java8:把需要关闭的资源写入try后的小括号中即可实现自动关闭
Java9:
后续操作与Java8中相同
7.String存储结构变更
将char[]改为byte[]
StringBuffer和StringBuilder也进行了相应的变化
8.集合工厂方法
创建一个只读不能改的集合
Java8:使用unmodifiableList方法
Java9:使用of方法
InputStream的加强
10.增强的StreamAPI
1.Java的Steam API是java标准库最好的改进之一,让开发者能够快速运算,从而能够有效的利用数据并行计算。Java8提供的steam 能够利用多核架构实现声明式的数据处理。
2.在Java 9中,Stream API变得更好,stream接口中添加了4个新的方法:takeWhile, dropWhile, ofNullable,还有个iterate方法的新重载方法,可以让你提供一个Predicate (判断条件)来指定什么时候结束迭代。
3.除了对stream本身的扩展,Optional和l stream之间的结合也得到了改进。现在可以通过 optional的新方法 stream()将一个Optional对象转换为一个(可能是空的) stream对象。
takeWhile()的使用
用于从stream中获取一部分数据,接收一个 Predicate来进行选择。在有序的Stream中,takeWhile返回从开头开始的尽量多的元素
List<Integer> list = Arrays.asList(45,43,76,87,42,77,90,73,67,88);
list.stream().takewhille(x -> x 〈 50).forEach(System.out: : println);
System.out.println();
list = Arrays.asList(1,2,3,4,5,6,7,8);
list.stream().takewhile(x -> x 〈 5).forEach(System.out: :println);
还有很多可在javaguide中进行查看
of方法的使用
of()方法中不能只是null值,但是可以是多个null值
iterator()
11.Optional获取Stream的方法
12.Javascript引擎升级:Nashorn
1,Nashorn项目在JDK9中得到改进,它为Java提供轻量级的Javascript运行时。Nashorn 项目跟随 Netscape的 Rhino 项目,目的是为了在Java中实现一个高性能但轻量级的 Javascript运行时。Nashorn项目使得 Java应用能够嵌入Javascript。它在JDK8中为Java提供一个Javascript引擎。
2.JDK 9包含一个用来解析Nashorn的 ECMAScript语法树的API。这个API使得IDE和服务端框架不需要依赖Nashorn项目的内部实现类,就能够分析ECMAScript代码。
Java10新特性
1.局部变量类型推断
\
类型推断的代码举例
//能用局部变量的类型推断的例子
public class java10Test {
@Test
public void test(){
//声明变量时,根据所附的值,推断变量的类型
var num = 10;
/*1.不赋值无法类型推断
var num;
2.lambda表达式中,左边的函数式接口不能声明为var
Supplier<Double> sup = ()->Math.random();正确的
var sup1 = ()->Math.random();错误的
3.方法引用中
Consumer<String>con=System.out::println;正确的
var con=System.out::println;错误的
4.数组的静态初始化
int[] arr = new int[]{1,2,3,4};正确的
var arr = {1,2,3,4};错误的
*/
var list = new ArrayList<Integer>();
list.add(123);
for(var i:list){
System.out.println(i);//123
System.out.println(i.getClass());//class java.lang.Integer
}