前言
本项目使用的 IDE 为 IDEA 2023.3.3(社区版)。
文本块
java17之前的写法,双引号需要转义,换行需要 ,需要加号拼接
讯享网java17的写法,可读性更好,一目了然。
讯享网
像传统的字符串一样,文本块是字符串的一种常量表达式。不同于传统字符串的是,在编译期,文本块要顺序通过如下三个不同的编译步骤:
- 为了降低不同平台间换行符的表达差异,编译器把文本内容里的换行符统一转换成 LF( );
- 为了能够处理Java源代码里的缩进空格,要删除所有文本内容行和结束分隔符共享的前导空格,以及所有文本内容行的尾部空格;
- 最后处理转义字符,这样开发人员编写的转义序列就不会在第一步和第二步被修改或删除。
通过反编译可以看到,文本块本质上也是语法糖。
switch表达式
java17之前的写法,必须要加break
java17的写法,switch必须覆盖所有可能的情况,如果是枚举,就必须包含所有值
讯享网
本质上也是编译器的语法糖
record类
会帮我们生成构造器,toString()方法,equals()方法,对象不可变,没有 setter 及标准的 getter,功能不如 lombok 强大。
密封类
在这之前一个类要么是可以被extends的,要么是final的,只有这两种选项。密封类可以控制有哪些类可以对超类进行继承。子类需要指明它是final,non-sealed或sealed的,父类不能控制子类是否可以被继承。

instanceof模式匹配
java17之前必须手动进行类转换
java17可以简java基础教程17写
空指针异常打印增强
java17之前的异常信息如下,仅显示发生异常的行号,但不知道具体哪个方法调用时产生的异常,必须通过调试的方式找到。
java17的异常信息如下,会显示出现异常的精确位置。
Stream增强
java17之前
java17增加了一个 toList() 方法
矢量运算
报错如下
添加编译参数
还报错
添加运行时VM参数
运行结果为
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/3215.html