成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Java 中的 3 個雙引號是什么語法?Java 15 刷新你的認知!

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

[[348424]]

一、前言

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

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

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

二、示例

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

  1. String html1 = "<html>\n" + 
  2.               "    <body>\n" + 
  3.               "        <p>Hi, Java技術棧</p>\n" + 
  4.               "        <p>歡迎關注,分享更多干貨</p>\n" + 
  5.               "    </body>\n" + 
  6.               "</html>\n"

 

使用 Text Blocks:

  1. String html2 = ""
  2.               <html> 
  3.                   <body> 
  4.                       <p>Hi, Java技術棧</p> 
  5.                       <p>歡迎關注,分享更多干貨</p> 
  6.                   </body> 
  7.               </html> 
  8.               """; 

 

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

再來看下字節碼:

 

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

三、詳細介紹

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

1、Line terminators(換行符)

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

  1. ""
  2. Java 
  3. line 2 
  4. line 3 
  5. ""

就等同于:

  1. "line 1\nline 2\nline 3\n" 

或者:

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

如果最后一行不需要換行,可以這么寫:

  1. ""
  2. line 1 
  3. line 2 
  4. line 3""

還可以定義一個空的文本塊:

  1. String empty = ""
  2. """; 

一個空字符串也需要兩行代碼,所以這個方式是不推薦使用的。

2、Incidental white space(空格編排)

繼續看上面那段代碼:

 

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

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

 


 

 

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

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

3、Escape sequences(轉義字符)

如下面代碼所示:

 

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

結果輸出:

  1. <html> 
  2.     <body> 
  3.         <p>Hi,  "Java技術棧"</p> 
  4.  
  5.  
  6.         <p>歡迎關注,\分享"更多"干貨</p> 
  7.     </body> 
  8.    </html> 

 

實際工作中可能出現的 SQL 語句的拼寫就有救了!

不使用 Text Blocks:

  1. String query = "SELECT \"EMP_ID\", \"LAST_NAME\" FROM \"EMPLOYEE_TB\"\n" + 
  2.                "WHERE \"CITY\" = 'INDIANAPOLIS'\n" + 
  3.                "ORDER BY \"EMP_ID\", \"LAST_NAME\";\n"

使用 Text Blocks:

  1. String query = ""
  2.                SELECT "EMP_ID""LAST_NAME" FROM "EMPLOYEE_TB" 
  3.                WHERE "CITY" = 'INDIANAPOLIS' 
  4.                ORDER BY "EMP_ID""LAST_NAME"
  5.                """; 

當然,拼接 SQL 要注意別造成 SQL 注入漏洞了,這里只是介紹使用。

另外,Java 15 新增了一個 String.translateEscapes 轉義方法,可以直接對字符串內容進行轉義。

4、格式化參數

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

 

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

  1. String query = ""
  2.                SELECT "EMP_ID""LAST_NAME" FROM "EMPLOYEE_TB" 
  3.                WHERE "CITY" = '%s' AND author = '%s' 
  4.                ORDER BY "EMP_ID""LAST_NAME"
  5.                """; 
  6.         System.out.println(query.formatted("深圳""棧長")); 

結果輸出:

  1. SELECT "EMP_ID""LAST_NAME" FROM "EMPLOYEE_TB" 
  2. WHERE "CITY" = '深圳' AND author = '棧長' 
  3. ORDER BY "EMP_ID""LAST_NAME"

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

四、結語

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

對文本塊感興趣的、想深入了解更多文本塊細節的同學,可以參考官方說明:

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

官方介紹文本塊用了 3 萬多字……可想而知解讀它的難度。

本文轉載自微信公眾號「Java技術棧」,可以通過以下二維碼關注。轉載本文請聯系Java技術棧公眾號。 

 

責任編輯:武曉燕 來源: Java技術棧
相關推薦

2020-09-17 13:10:54

Java1編程語言新特性

2020-09-21 11:00:48

技術資訊

2011-05-19 13:45:15

PHP單引號雙引號

2025-02-25 13:00:00

JavaScript開發前端

2022-11-14 14:51:23

單引號雙引號Linux

2021-10-14 06:51:55

Shell 單引號雙引號

2019-08-23 09:17:11

Python腳本語言字符串

2021-05-09 15:31:59

認知自動化

2022-03-23 14:04:32

SQL字符串數據類型

2022-05-19 23:40:34

SQL語句引號

2017-05-22 08:35:07

MySQL雙引號錯位

2021-02-01 10:42:47

MySQL雙引號數據庫

2020-05-11 15:01:16

JavaJKD 15工具

2019-05-23 11:42:04

Java語法糖編程語言

2014-03-14 10:56:59

語法高亮代碼高亮

2018-11-22 15:50:27

MySQL數據庫雙引號

2023-10-11 08:29:54

volatileJava原子性

2013-09-09 09:50:27

代碼語法工具

2010-07-13 11:25:42

Perl雙引號

2024-03-15 08:45:31

Vue 3setup語法
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 免费在线观看毛片 | 2019中文字幕视频 | 久久国产精品久久久久久 | 免费看一区二区三区 | 91操操操| 欧美激情在线一区二区三区 | 国产ts一区 | 亚洲欧洲在线视频 | 日韩中字幕 | 男女免费在线观看视频 | 国产精品免费一区二区三区四区 | 久久免费小视频 | 亚洲午夜电影 | 一级在线观看 | 欧美精品一区二区在线观看 | 亚洲视频在线一区 | 国产成人精品亚洲日本在线观看 | avtt国产 | 国产精品一区二 | www九色 | 成人久久久久久久久 | 日韩免费在线视频 | 自拍中文字幕 | 涩涩鲁亚洲精品一区二区 | 蜜桃在线播放 | 久久影音先锋 | 亚洲视频在线一区 | 日韩久久中文字幕 | 亚洲一区二区av | 中文字幕在线观看视频网站 | 久久久www成人免费精品张筱雨 | 女同久久另类99精品国产 | 国产亚洲精品精品国产亚洲综合 | 亚洲天堂精品一区 | 国产又色又爽又黄又免费 | 中文字幕欧美一区 | 国精久久| 一区二区三区国产好 | 麻豆久久久9性大片 | 中文字幕一区二区三区不卡 | 午夜视频在线观看视频 |