JDK17上手,新特性让你起飞-创新互联

Java8从14年发布以来已经经历了8年的厮杀,最终拼杀了Java50%的市场,可谓打遍天下无敌手。但是,随着JDK17的发布,Spring6的更新,Java8受到极大的挑战。这里我引用oracle官网的一张版本支持的线路图

创新互联公司主营鄠邑网站建设的网络公司,主营网站建设方案,app开发定制,鄠邑h5微信小程序搭建,鄠邑网站营销推广欢迎鄠邑等地区企业咨询

Oracle Java SE支持路线图

  我们可以看到,JDK17也是官方提供的LTS版本,支持到2026。并且随着Spring6、SpringBoot3的更新,JDK17在未来肯定会一点点侵蚀Java8到市场。现在就让我们一起来了解一下JDK17一些实用的新特性。

  • 新增var关键字

  var是Java10新增的关键字,可以更简洁的方式声明局部变量,它可以自动推导变量类型

public class VarTest {

    public static void main(String[] args) {
        var str = "1";
        System.out.println("var出来的string:"+ str); // var出来的string:1
        var num = 1;
        System.out.println("var出来的int:" + num); // var出来的int:1
        var arr = new int[]{1, 2, 3};
        System.out.println("var出来的array:"+ Arrays.toString(arr)); // var出来的array:[1, 2, 3]
        var list = getList();
        System.out.println("使用var接受方法返回值:" + list); // 使用var接受方法返回值:[1, 2, 3]
    }

    private static ListgetList() {
        Listlist = new ArrayList<>();
        for (int i = 1; i<= 3; i++) {
            list.add(i);
        }
        return list;
    }
}
  • switch加强

switch表达式先后经过Java1.5、Java1.7两个版本的增强,到Java8的时候,支持byte、short、char、int、枚举类型、String类型,但是我们每一个case都要 break或者return,不然switch会依次执行每一个case。相信很多小伙伴在刚接触的时候心里都发慌。好在JDK14帮我们解决了这个问题,我们不用使用break或者return也可以了。

public class SwitchTest {

    public static void main(String[] args) {
        var type = 8;
        switchTest(type);
    }

    private static void switchTest(int type) {
        switch (type) {
            case 1 ->System.out.println("星期1");
            case 2 ->System.out.println("星期2");
            case 3 ->System.out.println("星期3");
            case 4 ->System.out.println("星期4");
            case 5 ->System.out.println("星期5");
            case 6, 7 ->System.out.println("周末");
            default ->System.out.println("输入错误");
        }
    }
}
  • 字符串加强

  字符串加强是JDK15提供的功能,意在简化json、标签的书写成本

public class StringTest {

    public static void main(String[] args) {

        String str = "{\"id\":1,\"name\":\"泉泉\"}";
        System.out.println("普通字符串:" + str);
        String jdk15JsonStr = """
                {
                    "id":1,
                    "name":"泉泉"
                }
                """;
        System.out.println("jdk15字符串加强:" + jdk15JsonStr);
    }
}
  • instanceof加强

instanceof加强是JDK16提供的特性,可以省去类型的转化

public class InstanceofTest {

    public static void main(String[] args) {
        var data = getData();
        Object key1 = data.get("key1");
        Object key2 = data.get("key2");

        // 传统写法
        if (key1 instanceof String) {
            String str = (String) key1;
            System.out.println("key1是字符串:" + str);
        }
        if (key2 instanceof Integer) {
            Integer num = (Integer) key2;
            System.out.println("key2是Integer:" + num);
        }

        // jdk16简化写法
        if (key1 instanceof String str) {
            System.out.println("key1是字符串:" + str);
        }
        if (key2 instanceof Integer num) {
            System.out.println("key2是Integer:" + num);
        }
    }

    private static MapgetData() {
        Mapdata = new HashMap<>();
        data.put("key1", "aaa");
        data.put("key2", 111);
        return data;
    }
}

JDK17带来的更新远不止这些,以上只是我们常用的一些特性,JDK17还有更多性能方面的提升,比如JVM和GC,当然还有强大的ZGC,随着JDK17的普及,后面我们一起深入探讨。

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


文章标题:JDK17上手,新特性让你起飞-创新互联
网站链接:http://azwzsj.com/article/pphpg.html