java17 新特性(实用)

  前言👀~

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

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

12b46cd836b7495695ce3560ea45749c.jpeg

个人主页:N_0050-CSDN博客

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


Var

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

    public static void main(String[] args) {

        // 引入的这个var这个类型 在声明泛型的时候,特别方便编译写那么长串
        var name = "java";
        var number = 1;
        var map = new HashMap<>();
        map.put("1", 17);
        for (Map.Entry<Object, Object> m1 : map.entrySet()) {
            System.out.println(m1.getValue());
        }
        System.out.println(name);//结果会输出java
        System.out.println(number);//结果会打印1
        System.out.println(map);//会打印整个map对象,map中又是以键值对存储的,所以会打印{1=17}
}

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

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

注意事项:

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

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

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

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


Sealed

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

// 密封类 相比 final(完全封闭,不允许其他类继承) 其他类可以继承 必须要有子类,默认情况是所有类都可以继承,如果要有限制,使用permits关键字,这样这个Person只能被B继承
sealed class Person permits B {

}

// 有三种写法 这是第一种 但是这种还是要有子类
//sealed class A extends Person {
//
//}

//这是第二种 表⽰不限制,任何类都可以继承。
non-sealed class B extends Person {

}

//这是第三种 此时C会报错,因为没给C开权限 可以理解为你不是人民币玩家
//final class C extends Person {
//
//}

结论:

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

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

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


yield

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

        int a = 3;
        int result = switch (a) {
            case 1:
                yield 1;
            case 2:
                yield 2;
            case 3:
                yield 17;
            default:
                yield -1;
        };
        System.out.println(result);

instance of

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

        if (obj instanceof String) {//之前的写法
            String str = (String) obj;

        }

        if (obj instanceof String str) {// obj是否为String类型,如果是创建临时变量str
            
        }

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

  • 20
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
Java 8、9、10、11、12、13、14、15、16、17新特性如下: Java 8: - Lambda表达式 - Stream API - 接口默认方法 - 方法引用 - 新的日期和时间API - Optional类 - Nashorn JavaScript引擎 - PermGen空间被移除 - 函数式接口 - CompletableFuture类 Java 9: - 模块化系统 - JShell交互式编程工具 - 私有接口方法 - 集合工厂方法 - HTTP/2标准支持 - 改进的try-with-resources - 改进的钻石操作符 - 改进的Stream API - 改进的Optional类 Java 10: - 局部变量类型推断 - 应用程序类数据共享 - G1垃圾收集器的并行全垃圾回收 - 改进的Optional类 - 新的Time-Based版本的Stream操作 - 针对容器的并行全垃圾回收 Java 11: - HTTP客户端API - 支持Unicode 10.0 - 局部变量语法扩展 - Epsilon GC:一种实验性垃圾收集器 - ZGC:一种实验性垃圾收集器 - Flight Recorder:一种事件流记录器 - 在字符串中添加新的实用方法 Java 12: - switch语句表达式 - 改进的字符串操作 - 新的垃圾收集器(Shenandoah) Java 13: - Text Blocks - 改进的Switch语句 Java 14: - Records - Switch表达式增强 - G1垃圾收集器改进 - 垃圾收集器ZGC和Shenandoah的改进 Java 15: - Sealed Classes - Pattern Matching for instanceof - Records增强 - ZGC垃圾收集器增强 Java 16: - Records增强 - instanceof模式匹配增强 - Vector API:一种实验性API,用于执行SIMD(单指令多数据)计算 - JEP 390:向macOS上的Aarch64添加支持 Java 17: - 垃圾收集器ZGC的增强 - Sealed Classes和Pattern Matching for instanceof增强 - Switch语句增强 - 改进的弱密钥算法 - 静态嵌套类和匿名类可以实现接口 - 弃用Applet API

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值