从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