从Java 9开始,JDK引入模块(Module)。
JDK11中引入String.strip()
- String.trim() 可以去除字符串前后的“半角”空白字符
- String.strip() 可以去除字符串前后的“全角和半角”空白字符
- 在输入法中存在全角和半角字符的概念,比如说“逗号”存在“全角逗号和半角逗号”,体现在Unicode中就是两个不同的码位。通常全角字符占两个半角字符的位置,中文输入法下的“中文字符和标点符号”为全角字符,但空白字符默认仍然是半角字符,所以除非刻意使用全角空白符,否则一般都是半角空白符。
@ 全角半角和中文英文输入法没关系,中文下可以用半角,英文下也可以用全角。
@ 当然中文字符必须是全角,不然放不下;英文可以用全角,如f占两个字符
Java 13用"""…"""表示多行字符串
从Java 13开始,开始可以用"""…"""表示多行字符串(Text Blocks)了。举个例子:
public class Main {
public static void main(String[] args) {
String s = """
SELECT * FROM
users
WHERE id > 100
ORDER BY name DESC
""";
System.out.println(s);
}
}
//上述多行字符串实际上是5行,在最后一个DESC后面还有一个\n。如果我们不想在字符串末尾加一个\n,就需要这么写:
String s = """
SELECT * FROM
users
WHERE id > 100
ORDER BY name DESC""";
//还需要注意到,多行字符串前面共同的空格会被去掉,即:
String s = """
...........SELECT * FROM
........... users
...........WHERE id > 100
...........ORDER BY name DESC
...........""";
//用.标注的空格都会被去掉。
//如果多行字符串的排版不规则,那么,去掉的空格就会变成这样:
String s = """
......... SELECT * FROM
......... users
.........WHERE id > 100
......... ORDER BY name DESC
......... """;
//即总是以最短的行首空格为基准。
从Java 14开始,引入了新的Record类
可以非常方便地定义Data Class。除了用final
修饰class以及每个字段外,编译器还自动为我们创建了构造方法,和字段名同名的方法,以及覆写toString()
、equals()
和hashCode()
方法。
换句话说,使用record
关键字,可以一行写出一个不变类。
和enum
类似,我们自己不能直接从Record
派生,只能通过record
关键字由编译器实现继承。使用record
定义的是不变类
从Java 14开始,可查看NullPointerException的详细错误信息
可以启用Java 14的增强异常信息来查看NullPointerException
的详细错误信息,这种增强的NullPointerException
详细信息是Java 14新增的功能,但默认是关闭的,我们可以给JVM添加一个-XX:+ShowCodeDetailsInExceptionMessages
参数启用它:
java -XX:+ShowCodeDetailsInExceptionMessages Main.java