1:switch 表达式增加 yield
用于返回值
String x = “3”;
int i = switch (x) {
case “1” -> 1;
case “2” -> 2;
default -> {
yield 3;
}
};
System.out.println(i);
2:文本块
对于一些 html 文本或则 sql 语句,拼接四问题
//原来的html拼接
String html = “\n” +
“ \n” +
“
Hello, World
\n” +“ \n” +
“\n”;
//原本的SQL
String query = “select employee_id,last_name,salary,department_id\n” +
“from employees\n” +
“where department_id in (40,50,60)\n” +
“order by department_id asc”;
//JDK13html拼接
String html1 = “””
Hello, world
“””;
//JDK13的SQL拼接
String newQuery = “””
select employee_id,last_name,salary,department_id
from employees
where department_id in (40,50,60)
order by department_id asc
“””;
开始分隔符是由三个双引号字符(”””),后面可以跟零个或多个空格,最终以行终止符结束。文本块内容 以开始分隔符的行终止符后的第一个字符开始。 结束分隔符也是由三个双引号字符(”””)表示,文本块内容以结束分隔符的第一个双引号之前的最后一个 字符结束。
注意:
编译器在编译时会删除掉这些多余的空格。不过行前有没有空格在于终止符的位置
转义字符
//错误
String d = “””
abc \ def
“””; // 含有未转义的反斜线
文本框连接
String code = “””
public void print(“”” + type + “””
o) {
System.out.println(Objects.toString(o));
}
“””;
更简洁的替代方法是使用 String :: replace 或 String :: format,比如:
String code = “””
public void print($type o) {
System.out.println(Objects.toString(o));
}
“””.replace(“$type”, type);
String code = String.format(“””
public void print(%s o) {
System.out.println(Objects.toString(o));
}
“””, type);
另一个方法是使用 String :: formatted,这是一个新方法,比如:
String source = “””
public void print(%s object) {
System.out.println(Objects.toString(object));
}
“””.formatted(type);