IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Java中的3个双引号是什么语法?Java15刷新你的认知 -> 正文阅读

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

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 1\nline 2\nline 3\n"

Java中的3个双引号是什么语法?Java15刷新你的认知
2020-10-26 13:50·java互联网架构
Java 中的 3 个双引号 “”" 是什么语法?

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

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

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

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

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

不使用 Text Blocks::

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

Java中的3个双引号是什么语法?Java15刷新你的认知
文本块需要用三个双引号包起来,熟悉 Python 的都知道,三个双引号表示多行注释,没想到 Java 竟然用作了多行字符串……

再来看下字节码:

Java中的3个双引号是什么语法?Java15刷新你的认知
看到了吧?文本块编译后会自动添加换行符,和原始的拼接写法编译结果一致,再也不用再拼接字符串了。

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

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

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

“line 1\nline 2\nline 3\n”
或者:

"line 1\n" +
"line 2\n" +
"line 3\n"

如果最后一行不需要换行,可以这么写:

"""
line 1
line 2
line 3"""

还可以定义一个空的文本块:

String empty = """
""";

一个空字符串也需要两行代码,所以这个方式是不推荐使用的。

2、Incidental white space(空格编排)
继续看上面那段代码:
在这里插入图片描述
注意这根线没有,线前面有一排空格,意味着是不会被编译进去的,只是用来缩进格式化方便阅读,所以我叫它空格编排。

如果 “”" 在最后单独占一排,则以它左对齐,否则以最靠左的一列左对齐。
在这里插入图片描述
在这里插入图片描述
IDEA 真是强大啊,对 JDK 15 都支持这么好了。如果你说没激活码,这都不是事,可以关注公众号Java技术栈,回复:idea,栈长教你免费获取正版。

另外,Java 15 中新增了 String.stripIndent 实例方法,可以直接删除每一行的开头和结尾空白字符。

3、Escape sequences(转义字符)
如下面代码所示:
在这里插入图片描述
我在代码中又增加了 \s、\n、\t 之类的转义字符,可以直接拿来用,双引号也不需要转义。

结果输出:

<html>
    <body>
        <p>Hi,  "Java技术栈"</p>


        <p>欢迎关注,\分享"更多"干货</p>
    </body>
   </html>

实际工作中可能出现的 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(文本块)远比想象中要难很多,没想到一个文本块这么多细节,文中只是对文本块作了一个部分总结,并不是文本块的全部内容,反正暂时也用不到,大家简单了解即可。

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-09-23 11:19:04  更:2021-09-23 11:19:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 15:32:51-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码