跳至主要內容

JDK10新特性

xw大约 2 分钟JAVAJAVA


局部变量类型推断var

JDK10 可以使⽤var作为局部变量类型推断标识符。 Local-Variable Type Inference(局部变量类型推断),顾名思义只能⽤做为局部变量 。

注意:

  • 仅适⽤于局部变量增强for循环的索引,传统for循环局部变量
  • 不能使⽤于⽅法形参、构造函数形参、⽅法返回类型或任何其他类型的变量声明
  • 标识符var不是关键字,⽽是⼀个保留类型名称,⽽且不⽀持类或接⼝叫var,也不符合命名规范
package jdk10;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.stream.Stream;

/**
 * @author by xw
 * @Description JDK10新特性 之 var
 */
public class VarDemo {

    public static void main(String[] args) {
        //根据推断为 字符串类型
        var strVar = "springboot";
        // true
        System.out.println(strVar instanceof String); 

        //根据10L 推断long 类型
        var longVar = 10L;
        //根据 true推断 boolean 类型
        var flag = true;
        //var flag = Boolean.valueOf("true");
        //System.out.println(flag instanceof Boolean);
        // 推断 ArrayList<String>
        var listVar = new ArrayList<String>();
        // true
        System.out.println(listVar instanceof ArrayList);

        // 推断 Stream<String>
        var streamVar = Stream.of("aa", "bb", "cc");
        //true 
        System.out.println(streamVar instanceof Stream);
        if(flag){
            System.out.println("这个是 flag 变量,值为true");
        }
        for (var i = 0; i < 10; i++) {
            System.out.println(i);
        }

        
    }
}

并行、完整的 G1 垃圾收集器

G1垃圾收集器的设计目的是避免,但是当并发收集无法以足够快的速度回收内存时,就会发生回退的完全 GC旧的 G1 FULL GC 实现使用单线程标记-扫描-压缩算法。 在JDK10中,FULL GC 被并行化。

其他

  • 将 JDK 的多个存储库合并成一个,简化开发。目前的代码库被分解成了多个库,容易出现源代码的管理问题。

  • 应用程序数据共享,通过跨进程共享通用类的元数据,减少空间占用及启动时长。

  • 线程本地握手,不执行全局 VM 安全点也能对线程执行回调,同时实现单线程停止回调。

  • JDK 提供了一组默认证书,开源 Java SE 的 CA程序,对开发人员更具吸引力。