• java17 新特性(实用)


      前言👀~

    在更新下一章数据库相关知识前,先分享一下java17的一些新特性,有些新特性狠实用!!!

    如果各位对文章的内容感兴趣的话,请点点小赞,关注一手不迷路,如果内容有什么问题的话,欢迎各位评论纠正 🤞🤞🤞

    12b46cd836b7495695ce3560ea45749c.jpeg

    个人主页N_0050-CSDN博客

    相关专栏:java SE_N_0050的博客-CSDN博客 java数据结构_N_0050的博客-CSDN博客


    Var

    首先java17引入了一个新的关键字var,它可以代替很多类型名,特别体现在泛型上,接下来看一段代码大家就知道了

    1. public static void main(String[] args) {
    2. // 引入的这个var这个类型 在声明泛型的时候,特别方便编译写那么长串
    3. var name = "java";
    4. var number = 1;
    5. var map = new HashMap<>();
    6. map.put("1", 17);
    7. for (Map.Entry<Object, Object> m1 : map.entrySet()) {
    8. System.out.println(m1.getValue());
    9. }
    10. System.out.println(name);//结果会输出java
    11. System.out.println(number);//结果会打印1
    12. System.out.println(map);//会打印整个map对象,map中又是以键值对存储的,所以会打印{1=17}
    13. }

    这样大家应该能看的懂吧,这里再补充一下为什么最后一个map打印的是{1=17}

    因为HashMap有一个toString方法,会返回这个键以及对应的值

    注意事项:

    1.var关键字不能用于方法的返回类型

    2.var关键字不能来声明字段

    3.var关键字声明变量的时候必须初始化,不能初始化成null

    4.var关键字不能作为声明方法的参数,就是我们方法中的形参


    Sealed

    java17引入了一个新的类,密封类,顾名思义就是密封跟final的作用类似,但是呢又不完全类似,因为final修饰的类不能被继承,此时提高了一个新的关键字Sealed用来修饰密封类,废话不多说,直接上代码

    1. // 密封类 相比 final(完全封闭,不允许其他类继承) 其他类可以继承 必须要有子类,默认情况是所有类都可以继承,如果要有限制,使用permits关键字,这样这个Person只能被B继承
    2. sealed class Person permits B {
    3. }
    4. // 有三种写法 这是第一种 但是这种还是要有子类
    5. //sealed class A extends Person {
    6. //
    7. //}
    8. //这是第二种 表⽰不限制,任何类都可以继承。
    9. non-sealed class B extends Person {
    10. }
    11. //这是第三种 此时C会报错,因为没给C开权限 可以理解为你不是人民币玩家
    12. //final class C extends Person {
    13. //
    14. //}

    结论:

    1.被sealed修饰的类,必须要有子类,其子类要么是final修饰、要么还是sealed修饰(还得有子类)、要么是non-sealed修饰

    2.使用permits可以设置权限,只能让你指定的子类继承

    3.被non-sealed修饰的类,表⽰不限制,任何类都可以继承


    yield

    java17引入了一个新的关键字​​​​​​​yield,用于在case的代码块中返回值用的,还是一样上代码一下就看出来了

    1. int a = 3;
    2. int result = switch (a) {
    3. case 1:
    4. yield 1;
    5. case 2:
    6. yield 2;
    7. case 3:
    8. yield 17;
    9. default:
    10. yield -1;
    11. };
    12. System.out.println(result);

    instance of

    ​​​​​​​java17对instance of进行了优化,在判断类型的时候,如果符合我们的条件直接创建一个符合类型的临时变量,老规矩看代码

    1. if (obj instanceof String) {//之前的写法
    2. String str = (String) obj;
    3. }
    4. if (obj instanceof String str) {// obj是否为String类型,如果是创建临时变量str
    5. }

    以上便是java17的一些实用特性,还有很多新特性等着大家一起去了解,如果有知道实用的一些新特性可以分享在评论区,下一章我会继续更新数据库的相关知识爱心💕

  • 相关阅读:
    GitLab搭建
    如何为视频添加旁白,有哪些操作技巧?
    会议高清直播录播系统
    09_上传漏洞_文件包含&二次渲染&代码逻辑漏洞
    运用线程的一些问题,基础篇
    MySQL | 查询接口性能调优、编码方式不一致导致索引失效
    百题千解计划【CSDN每日一练】收件邮箱(使用Python、Java、JavaScript解决)无敌的Python正则表达式、零宽负向断言
    《C和指针》笔记32:多维数组初始化
    精通Linux系列第三章:文件系统管理与权限设置(含目录结构思维导图)
    【教3妹学编程-算法题】区分黑球与白球
  • 原文地址:https://blog.csdn.net/N_0050/article/details/139424316