博客详情

JAVA17新特性 (原创)

作者: 朝如青丝暮成雪
发布时间:2026-01-04 15:47:05  文章分类:java编程   阅读(67)  评论(0)


关于Java17的新特性介绍,网上的资料很多,那么我们为什么要学习和升级java版本到17呢?

其实java17发布已经有很长一段时间了(2021年9月发布),也不算是一个很新的事物, 只不过由于很多企业项目因为历史遗留等的原因java代码版本还停留在JDK8、11的时代。

我们简单回顾下JDK的版本历史: 

JDK8   LTS版本  2014年3月发布

JDK11   LTS版本 2018年9月发布

JDK17  LTS版本  2021年9月发布

JDK21  LTS 版本  2023年9月发布

...


其实目前业界的很多新出框架版本最低的JDK版本要求都是17了 ,比如:

SpringFramework6.x 最低支持JDK版本:17 !

SpringBoot3.x 最低支持JDK版本:17!

SpringCloud2022.x 、2023.x 最低支持JDK版本:17 !

SpringCloud-alibaba2022.x、2023.x 最低支持JDK版本:17 !

Nacos3.x 最低支持JDK版本:17!

Doris3.x 及以后版本 最低支持JDK版本:17 !

...


如果想要学习这些新的框架,那么首先至少需要将我们的JDK版本升级到17! 

接下来笔者着重介绍下JAVA17新特性,比较实用的几个点:


1、""" 文本块表达式(三个引号)

  //JAVA17 新特性: 文本块
    @Test
    public void test1(){

        //        String html = "<html>\n" +
//                "    <body>\n" +
//                "        <h1>Hello, World!</h1>\n" +
//                "    </body>\n" +
//                "</html>";
//        System.out.println(html);


        String html= """
               <html>
                    <body>
                        <h1>Hello, World!</h1>
                    </body>
               </html>
               """;
        System.out.println(html);
    }



以前我们写一段带换行的字符串(例如一段json或html内容)总是会写一堆恶心的"+"号及"\n换"行符号。现在我们用JAVA17直接用"""表示文本开始,"""表示文本结束即可,非常地直观便捷!


2、instanceof 模式匹配增强


    //JAVA17 新特性: instanceof 模式匹配增强
    @Test
    public void test2(){
//        Object obj = "hello";
//        if(obj instanceof  String){
//             String s =(String) obj;
//            System.out.println(s);
//        }

        //无需再进行强制类型转换
        Object obj = "hello";
        if (obj instanceof String s) {
            System.out.println(s);
        }
    }
  在JAVA17中instanceof 无需进行显示的强制类型转换了。



3、Switch Expressions 增强


 // JAVA17 新特性: Switch Expressions 增强
    @Test
    public void test3(){

//        int dayOfWeek = 3;
//        String dayName;
//        switch (dayOfWeek) {
//            case 1:
//                dayName = "Monday";
//                break;
//            case 2:
//                dayName = "Tuesday";
//                break;
//            case 3:
//                dayName = "Wednesday";
//                break;
//            default:
//                dayName = "Unknown";
//        }
//        System.out.println(dayName); // 输出: Wednesda


        int dayOfWeek = 3;
        String dayName = switch (dayOfWeek) {
            case 0,1 -> "Monday";
            case 2 -> "Tuesday";
            case 3 -> "Wednesday";
            default -> "Unknown";
        };

        System.out.println(dayName); // 输出: Wednesday


    }
JAVA17中,switch... case...的写法更丝滑流畅。 




还有更多的特性支持,比如密封类、记录类、空指针异常改进、ZGC垃圾回收器正式使用、新的伪随机数生成器RandomGenerator 等等就不一一介绍了。



关键字:  java  JDK

上一篇:nexus3的私服使用setting.xml配置

下一篇:没有了

评论信息
暂无评论
发表评论

亲,您还没有登陆,暂不能评论哦! 去 登陆 | 注册

博主信息
   
数据加载中,请稍候...
文章分类
   
数据加载中,请稍候...
阅读排行
 
数据加载中,请稍候...
评论排行
 
数据加载中,请稍候...

Copyright © 叮叮声的奶酪 版权所有
备案号:鄂ICP备17018671号-1

鄂公网安备 42011102000739号