Java入门到精通Java 15中的 3 个双引号语法 Java 中的 3 个双引号 是什么语法这是 Java 15 新出的刷新你的认知前言在 Java 15 的推出的时候Text Blocks 正式转正我叫它 “文本块” 好了栈长也做了简单介绍没看过的可以点击这里看下。文本块是一个多行字符串它可以避免使用大多数转义符号自动以可预测的方式格式化字符串并让开发人员在需要时可以控制格式。文本块最早准备在 JDK 12 添加的但最终撤消了然后在 JDK 13 中作为预览特性进行了添加然后又在 JDK 14 中再次预览在 JDK 15 中文本块终于转正暂不再做进一步的更改。示例来看下这个 HTML 语言示例你就懂了不使用 Text BlocksString html1 \n \n Hi, Java技术栈\n 欢迎关注分享更多干货\n \n \n;使用 Text BlocksString html2 Hi, Java技术栈欢迎关注分享更多干货;文本块需要用三个双引号包起来熟悉 Python 的都知道三个双引号表示多行注释没想到 Java 竟然用作了多行字符串…再来看下字节码看到了吧文本块编译后会自动添加换行符和原始的拼接写法编译结果一致再也不用再拼接字符串了。三、详细介绍其实文本块的作用远不止换行符这么简单下面栈长详细介绍下。1、Line terminators换行符如上面介绍编译期自动增加换行符可以用来增强用非 Java 语言编写的代码的字符串的可读性比如我们经常要拼接 HTML、XML、SQL 语言代码等代码非常难看。Javaline 2line 3就等同于line 1\nline 2\nline 3\n或者line 1\n line 2\n line 3\n如果最后一行不需要换行可以这么写line 1line 2line 3还可以定义一个空的文本块String empty ;一个空字符串也需要两行代码所以这个方式是不推荐使用的。2、Incidental white space空格编排继续看上面那段代码注意这根线没有线前面有一排空格意味着是不会被编译进去的只是用来缩进格式化方便阅读所以我叫它空格编排。如果 在最后单独占一排则以它左对齐否则以最靠左的一列左对齐。IDEA 真是强大啊对 JDK 15 都支持这么好了。如果你说没激活码这都不是事可以关注公众号Java技术栈回复idea栈长教你免费获取正版。另外Java 15 中新增了 String.stripIndent 实例方法可以直接删除每一行的开头和结尾空白字符。3、Escape sequences转义字符如下面代码所示我在代码中又增加了 \s、\n、\t 之类的转义字符可以直接拿来用双引号也不需要转义。结果输出Hi, Java技术栈欢迎关注\分享更多干货实际工作中可能出现的 SQL 语句的拼写就有救了不使用 Text BlocksString query SELECT \EMP_ID\, \LAST_NAME\ FROM \EMPLOYEE_TB\\n WHERE \CITY\ INDIANAPOLIS\n ORDER BY \EMP_ID\, \LAST_NAME\;\n;使用 Text BlocksString query SELECT EMP_ID, LAST_NAME FROM EMPLOYEE_TBWHERE CITY INDIANAPOLISORDER BY EMP_ID, LAST_NAME;;当然拼接 SQL 要注意别造成 SQL 注入漏洞了这里只是介绍使用。另外Java 15 新增了一个 String.translateEscapes 转义方法可以直接对字符串内容进行转义。4、格式化参数Java 15 之前格式化字符串中的参数需要使用 String.format 静态方法感觉不是很方便而在 Java 15 中新增了直接格式化字符串的方法对上面的 SQL 语句进行扩展下参数使用占位符进行格式化String query SELECT EMP_ID, LAST_NAME FROM EMPLOYEE_TBWHERE CITY %s AND author %sORDER BY EMP_ID, LAST_NAME;;System.out.println(query.formatted(深圳, 栈长));结果输出SELECT EMP_ID, LAST_NAME FROM EMPLOYEE_TBWHERE CITY 深圳 AND author 栈长ORDER BY EMP_ID, LAST_NAME;直接使用字符串对象的 formatted 实例方法感觉更方便了四、结语解读 Text Blocks文本块远比想象中要难很多没想到一个文本块这么多细节文中只是对文本块作了一个部分总结并不是文本块的全部内容反正暂时也用不到大家简单了解即可。文章来源网络 版权归原作者所有上文内容不用于商业目的如涉及知识产权问题请权利人联系小编我们将立即处理