语法话题
本期的语法话题为:
Java 15中,文本块有哪些优势?
文本块的声明
文本块是Java 15新增的语法特性(Java 13与Java 14作为预览特性,这里我们以正式引入的版本为准),用来声明(表示)String对象。在Java 15之前,String对象使用双引号(单个)来界定,而文本块使用三个双引号来界定,语法格式如下:
// """表示文本块的开始,后面可以接零或多个空白符,然后接一个行终止符。
Sting s = """
此处是文本块的第一行内容。
此处是文本块的第二行内容。
... 更多文本内容。
// """表示文本块的结束。
""";
文本块的优势
我们可能需要在Java程序中定义一些SQL,HTML,JSON等长文本内容,而为了程序的可读性,这些字符串通常是多行显示的。在Java 15之前,需要通过大量的“+”运算符来完成拼接,通过繁琐的“\n”来实现换行,但从Java 15起,就可以通过声明文本块来方便的表示。相对于之前的声明方式,文本块具有如下优势:
- 文本块中,行终止符无需使用转义,这样我们就可以声明多行的String对象,从而提高程序的可读性。
- 文本块中,用于界定字符串常量的双引号,可以直接出现,无需转义。
package test;
public class Test {
public static void main(String[] args) {
// Java 15之前的声明方式。
// 需要控制双引号与换行的转义,非常繁琐。
String html = "<p class=\"cn\">\n\t<a href=\"a.html\">\n\t\t点击\n\t</a>\n</p>";
// 为了程序的可读性,可以使用+来拼接,但操作依然不便,改善有限。
String html2 = "<p class=\"cn\">"
+ "\n\t<a href=\"a.html\">"
+ "\n\t\t点击\n\t"
+ "</a>\n</p>";
// Java 15(或以后)的声明方式。
// String对象可以跨行编写,无需使用+拼接,也无需对双引号转义。
String html3 = """
<p class="cn">
<a href="a.html">
点击
</a>
</p>""";