从Java 8到 Java 17–Java 10

/ 0评 / 0

从Java 10 开始,Java的迭代周期缩短为半年,半年发布一个版本。Java10它号称有109项新特性,包含12个JEP。

特性列表

1.局部变量的类型推断 var关键字

这个新功能将为Java增加一些语法糖 - 简化它并改善开发者体验。新的语法将减少与编写Java相关的冗长度,同时保持对静态类型安全性的承诺。

这可能是Java10给开发者带来的最大的一个新特性。下面主要看例子:

        //在Java 6时初始化一个Map需要我们这样来声明:
        Map<String, String> map_java6 = new HashMap<String,String>();
        //事实上泛型方法的参数可以通过上下文推导出来,所以在Java 7 中简化为:
        Map<String, String> map_java7 = new HashMap<>();
        //到了Java 10 进一步升华了类型推断,我们看一个例子:
        var map_java10 = Map.of("hello","world");
        System.out.println("map_java10:"+map_java10);

注意:下面几点使用限制

  1. 局部变量初始化
  2. for循环内部索引变量
  3. 传统的for循环声明变量
        //局部变量初始化
        var list = List.of("hello,world!");
        //for循环内部索引变量
        for (var s : list) {
            System.out.println(s);
        }
        //传统的for循环声明变量
        for (var i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }

下面这几种情况,都是不能使用var

  1. 方法参数
  2. 全局变量
public static var list = new ArrayList<String>(); //编译报错
public static List<String> ll = new ArrayList<>(); //正常编译通过

2.GC改进和内存管理 并行全垃圾回收器 G1

JDK 10中有2个JEP专门用于改进当前的垃圾收集元素。
Java 10的第二个JEP是针对G1的并行完全GC(JEP 307),其重点在于通过完全GC并行来改善G1最坏情况的等待时间。G1是Java 9中的默认GC,并且此JEP的目标是使G1平行。

3.新增API:List、Map、Set

这3个接口都增加了一个新的静态方法,copyOf(Collection)。这些函数按照其迭代顺序返回一个不可修改的列表、映射或包含给定集合的元素的集合。

复制一个集合为不可变集合:

        //局部变量初始化
        var list = List.of("hello,world!");

        // 复制list
        List<String> copyList  = List.copyOf(list);
        System.out.println("copyList:"+copyList);

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注