第一句子大全,网罗天下好句子,好文章尽在本站!

Java中的3个双引号是什么语法?Java15刷新你的认知

时间:2017-07-21

文本块,是一个多行字符串,它可以避免使用大多数转义符号,自动以可预测的方式格式化字符串,并让开发人员在需要时可以控制格式

友情提示:本文共有 2414 个字,阅读大概需要 5 分钟。

Java 中的 3 个双引号 """ 是什么语法?

这是 Java 15 新出的,刷新你的认知!

一、前言

在 Java 15 的推出的时候,Text Blocks 正式转正,我叫它 “文本块” 好了,站长也做了简单介绍,没看过的可以点击这里看下。

文本块,是一个多行字符串,它可以避免使用大多数转义符号,自动以可预测的方式格式化字符串,并让开发人员在需要时可以控制格式。

文本块最早准备在 JDK 12 添加的,但最终撤消了,然后在 JDK 13 中作为预览特性进行了添加,然后又在 JDK 14 中再次预览,在 JDK 15 中,文本块终于转正,暂不再做进一步的更改。

二、示例

来看下这个 HTML 语言示例你就懂了:

不使用 Text Blocks::

使用 Text Blocks:

文本块需要用三个双引号包起来,熟悉 Python 的都知道,三个双引号表示多行注释,没想到 Java 竟然用作了多行字符串……

再来看下字节码:

看到了吧?文本块编译后会自动添加换行符,和原始的拼接写法编译结果一致,再也不用再拼接字符串了。

三、详细介绍

其实文本块的作用远不止换行符这么简单,下面栈长详细介绍下。

1、Line terminators(换行符)

如上面介绍,编译器自动增加换行符可以用来增强用非 Java 语言编写的代码的字符串的可读性,比如我们经常要拼接 HTML、XML、SQL 语言代码等,代码非常难看。

就等同于:

"line 1nline 2nline 3n"或者:

"line 1n" +"line 2n" +"line 3n"如果最后一行不需要换行,可以这么写:

"""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 Blocks:

String query = "SELECT "EMP_ID", "LAST_NAME" FROM "EMPLOYEE_TB"n" + "WHERE "CITY" = "INDIANAPOLIS"n" + "ORDER BY "EMP_ID", "LAST_NAME";n";使用 Text Blocks:

String query = """ SELECT "EMP_ID", "LAST_NAME" FROM "EMPLOYEE_TB" WHERE "CITY" = "INDIANAPOLIS" ORDER 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_TB" WHERE "CITY" = "%s" AND author = "%s" ORDER BY "EMP_ID", "LAST_NAME"; """; System.out.println(query.formatted("深圳", "栈长"));结果输出:

SELECT "EMP_ID", "LAST_NAME" FROM "EMPLOYEE_TB"WHERE "CITY" = "深圳" AND author = "栈长"ORDER BY "EMP_ID", "LAST_NAME";直接使用字符串对象的 formatted 实例方法感觉更方便了!

四、结语

解读 Text Blocks(文本块)远比想象中要难很多,没想到一个文本块这么多细节,文中只是对文本块作了一个部分总结,并不是文本块的全部内容,反正暂时也用不到,大家简单了解即可。

对文本块感兴趣的、想深入了解更多文本块细节的同学,可以参考官方说明:

https://openjdk.java.net/jeps/378

作者:Java技术栈

来源:https://mp.weixin.qq.com/s/Ge-Y7yXSu3MtkG4IGWoZpg

本文如果对你有帮助,请点赞收藏《Java中的3个双引号是什么语法?Java15刷新你的认知》,同时在此感谢原作者。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。
相关阅读
Java程序员看过来 快速了解Python语言

Java程序员看过来 快速了解Python语言

...输出变量内容,Python在使用变量名输出变量内容时,用单引号将内容括起来,即它输出的是该变量的字符串表示,而不是字符串本身。用sys库对象函数输出“Hello World”Python的sys库类似Java的System库,提供标准的输入与输出、获取...

2011-12-04 #经典句子

python基础语法一:print函数

python基础语法一:print函数

内容导读print()函数-无引号print()函数-单引号print()函数-双引号print()函数-三引号print()函数-无引号计算机只能识别数字,把文字都当作天书,而可以直接做数字和数字运算。print()函数-单引号1. 对于计算机不能够直接识别的内容,...

2024-01-06 #经典句子

一起学JAVA——流程控制语句

一起学JAVA——流程控制语句

...“流程控制语句”。就像学英语一样我们要学单词也要学语法,单词根据语法规则可以组成各种句子及文章。我们前面介绍的java有51个关键字以及我们自定义的变量这些就是java的单词。今天要介绍的语句就是语法。有了语法我...

2022-11-13 #经典句子

java1.7 AutoCloseable接口和try-with-resources语法示例

java1.7 AutoCloseable接口和try-with-resources语法示例

AutoCloseable接口。AutoCloseable接口非常简单,只定义了一个close方法:public interface AutoCloseable {void close() Exception;}该接口是JDK 1.7 才新增的一个接口,方法文档注释该方法在try-with-resources语句中会被自动调用,用于自动释放资源。try-...

2016-12-06 #经典句子

深入 Java 源码剖析之字符串常量|CSDN 博文精选

深入 Java 源码剖析之字符串常量|CSDN 博文精选

...串驻留当相同的字符串常量被多次创建时,注意是使用双引号(" ")显式声明时,字符串常量对象会被保存在常量池中,且只会创建一个对象,这就是字符串驻留,这个名词的产生就是为了提升性能。简单提一下,字符串中有一个...

2023-10-09 #经典句子

Java流程控制之switch多分支语句!

Java流程控制之switch多分支语句!

...就能以一个较简单明了的方式来实现“多选一”的选择。语法:witch(表达式){case 常量1:语句1[break;]case 常量2:语句2[break;]…case 常量n:语句n[break;]default:默认处理语句;[break;]}表达式:这是必要的参数,它的结果用于判断执行的case...

2023-07-15 #经典句子

「每天三分钟跟我学Java」之条件语句和循环结构

「每天三分钟跟我学Java」之条件语句和循环结构

...for循环,Java5中还引入了增强版的for循环,使用更方便。语法结构如下,for(声明语句 : 表达式){}2、while 循环while 循环只要满足布尔表达式的条件,就会一直循环下去。3、do…while 循环do……while 循环的特点是至少会执行一次,执...

2023-09-10 #经典句子

跟随孔明的谋划来一步步学习 Python 的语法!(数据类型)

跟随孔明的谋划来一步步学习 Python 的语法!(数据类型)

...在屏幕上打印出来。字符串我们在上一关学到,内容要用引号包裹起来。这个用引号包裹起来的内容,它有个专业的名字——字符串。计算机的本质其实就是一台计算的机器,它的主要任务是处理数据。数据是构成编程世界的重...

2023-06-06 #经典句子