免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Java入門到精通Java 15中的 3 個雙引號語法

Java 中的 3 個雙引號 """ 是什么語法?

這是 Java 15 新出的,刷新你的認知!

一、前言

Java 15 的推出的時候,Text Blocks 正式轉(zhuǎn)正,我叫它 “文本塊” 好了,棧長也做了簡單介紹,沒看過的可以點擊這里看下。

文本塊,是一個多行字符串,它可以避免使用大多數(shù)轉(zhuǎn)義符號,自動以可預(yù)測的方式格式化字符串,并讓開發(fā)人員在需要時可以控制格式。

文本塊最早準備在 JDK 12 添加的,但最終撤消了,然后在 JDK 13 中作為預(yù)覽特性進行了添加,然后又在 JDK 14 中再次預(yù)覽,在 JDK 15 中,文本塊終于轉(zhuǎn)正,暫不再做進一步的更改。

二、示例

來看下這個 HTML 語言示例你就懂了:

不使用 Text Blocks::

String html1 = "\n" +

              "    \n" +

              "        

Hi, Java技術(shù)棧

\n" +

              "        

歡迎關(guān)注,分享更多干貨

\n" +

              "    \n" +

              "\n";

使用 Text Blocks:

String html2 = """

Hi, Java技術(shù)棧

歡迎關(guān)注,分享更多干貨

              """;

文本塊需要用三個雙引號包起來,熟悉 Python 的都知道,三個雙引號表示多行注釋,沒想到 Java 竟然用作了多行字符串……

再來看下字節(jié)碼:

看到了吧?文本塊編譯后會自動添加換行符,和原始的拼接寫法編譯結(jié)果一致,再也不用再拼接字符串了。

三、詳細介紹

其實文本塊的作用遠不止換行符這么簡單,下面棧長詳細介紹下。

1、Line terminators(換行符)

如上面介紹,編譯期自動增加換行符可以用來增強用非 Java 語言編寫的代碼的字符串的可讀性,比如我們經(jīng)常要拼接 HTML、XML、SQL 語言代碼等,代碼非常難看。

"""

Java

line 2

line 3

"""

就等同于:

"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(空格編排)

繼續(xù)看上面那段代碼:

注意這根線沒有,線前面有一排空格,意味著是不會被編譯進去的,只是用來縮進格式化方便閱讀,所以我叫它空格編排。

如果 """ 在最后單獨占一排,則以它左對齊,否則以最靠左的一列左對齊。

IDEA 真是強大啊,對 JDK 15 都支持這么好了。如果你說沒激活碼,這都不是事,可以關(guān)注公眾號Java技術(shù)棧,回復(fù):idea,棧長教你免費獲取正版。

另外,Java 15 中新增了 String.stripIndent 實例方法,可以直接刪除每一行的開頭和結(jié)尾空白字符。

3、Escape sequences(轉(zhuǎn)義字符)

如下面代碼所示:

我在代碼中又增加了 \s、\n、\t 之類的轉(zhuǎn)義字符,可以直接拿來用,雙引號也不需要轉(zhuǎn)義。

結(jié)果輸出:

Hi,  "Java技術(shù)棧"

歡迎關(guān)注,\分享"更多"干貨

實際工作中可能出現(xiàn)的 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 轉(zhuǎn)義方法,可以直接對字符串內(nèi)容進行轉(zhuǎn)義。

4、格式化參數(shù)

Java 15 之前格式化字符串中的參數(shù)需要使用 String.format 靜態(tài)方法,感覺不是很方便,而在 Java 15 中新增了直接格式化字符串的方法:

對上面的 SQL 語句進行擴展下,參數(shù)使用占位符進行格式化:

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("深圳", "棧長"));

結(jié)果輸出:

SELECT "EMP_ID", "LAST_NAME" FROM "EMPLOYEE_TB"

WHERE "CITY" = '深圳' AND author = '棧長'

ORDER BY "EMP_ID", "LAST_NAME";

直接使用字符串對象的 formatted 實例方法感覺更方便了!

四、結(jié)語

解讀 Text Blocks(文本塊)遠比想象中要難很多,沒想到一個文本塊這么多細節(jié),文中只是對文本塊作了一個部分總結(jié),并不是文本塊的全部內(nèi)容,反正暫時也用不到,大家簡單了解即可。

文章來源:網(wǎng)絡(luò)  版權(quán)歸原作者所

上文內(nèi)容不用于商業(yè)目的,如涉及知識產(chǎn)權(quán)問題,請權(quán)利人聯(lián)系小編,我們將立即處理

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Oracle中的單引號和雙引號
2.2.3 字符型和字符串常量值
Python中如何進行字符串定義?
Excel:Excel中對特殊字符的轉(zhuǎn)義和處理
Excel小技巧83:在Excel公式中插入雙引號
Java教程:Java語言中常見的轉(zhuǎn)義字符
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服