Java17新特性之Text Blocks文本塊的使用
Java 17 引入了 Text Blocks(文本塊) 特性,這是 Java 語言中一種新的字符串表示方式,旨在簡化多行字符串的創(chuàng)建和處理。它通過減少轉(zhuǎn)義字符的需求,使代碼更加簡潔、易讀。
Text Blocks 的基本用法
Text Blocks 使用三個雙引號 ??"""?? 來界定字符串內(nèi)容。與普通字符串不同,Text Blocks 可以跨多行,并且保留字符串中的換行符和縮進(jìn)。
示例:
String json = """
{
"name": "Alice",
"age": 25,
"city": "New York"
}
""";
System.out.println(json);
輸出:
{
"name": "Alice",
"age": 25,
"city": "New York"
}
Text Blocks 的特點
- 自動處理換行符: Text Blocks 會保留字符串中的換行符,無需手動插入 ?
?\n??。
String text = """
Line 1
Line 2
Line 3
""";
System.out.println(text);
輸出:
Line 1
Line 2
Line 3
- 減少轉(zhuǎn)義字符: 在普通字符串中,雙引號需要使用反斜杠 ?
?\?? 轉(zhuǎn)義,而 Text Blocks 不需要。
// 普通字符串
String html = "<html>\n" +
" <body>\n" +
" <p>Hello, World!</p>\n" +
" </body>\n" +
"</html>";
// 使用 Text Blocks
String htmlBlock = """
<html>
<body>
<p>Hello, World!</p>
</body>
</html>
""";
- 自動去除縮進(jìn): Text Blocks 會根據(jù)最左邊非空字符的位置自動調(diào)整縮進(jìn)。這使得代碼格式化更靈活。
String query = """
SELECT *
FROM users
WHERE id = 1
""";
System.out.println(query);
輸出:
SELECT *
FROM users
WHERE id = 1
- 支持表達(dá)式嵌入: 和普通字符串一樣,Text Blocks 支持嵌入表達(dá)式,使用 ?
?%d?? 格式。
int age = 25;
String message = """
Hello, my name is Alice.
I am %d years old.
""".formatted(age);
System.out.println(message);
輸出:
Hello, my name is Alice.
I am 25 years old.
注意事項
- 結(jié)束符必須單獨一行: 結(jié)束的三引號 ?
?"""?? 必須獨占一行,不能與內(nèi)容在同一行。錯誤示例:
String text = """
This is a text block""";
正確示例:
String text = """
This is a text block
""";
- 保留換行符: 如果你希望去掉某行的換行符,可以在該行末尾添加反斜杠 ?
?\??。
String text = """
Line 1 \
Line 2
""";
System.out.println(text);
輸出:
Line 1 Line 2
- 縮進(jìn)規(guī)則: Text Blocks 會根據(jù)最左邊非空字符的位置自動調(diào)整縮進(jìn),但你可以通過工具類(如 ?
?String.stripIndent()??? 或 ??String.translateEscapes()??)手動控制縮進(jìn)。
適用場景
- JSON 和 XML 數(shù)據(jù):Text Blocks 非常適合用來定義 JSON、XML 等多行數(shù)據(jù)格式。
- SQL 查詢:可以輕松編寫復(fù)雜的 SQL 查詢語句。
- HTML 和 CSS:用于生成 HTML 頁面或 CSS 樣式表。
- 多行日志消息:在日志記錄中生成格式化的多行消息。
總結(jié)
Text Blocks 是 Java 17 中一個非常實用的特性,特別適用于處理多行字符串。它減少了轉(zhuǎn)義字符的使用,提升了代碼的可讀性和維護(hù)性。
到此這篇關(guān)于Java17新特性之Text Blocks文本塊的使用的文章就介紹到這了,更多相關(guān)Java17新特性Text Blocks內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot多環(huán)境切換的配置實現(xiàn)
在日常的開發(fā)中,一般都會分好幾種環(huán)境,本文就來介紹一下SpringBoot多環(huán)境切換的配置實現(xiàn),具有一定的參考價值,感興趣的可以了解一下2024-03-03
java如何實時動態(tài)獲取properties文件的內(nèi)容
這篇文章主要介紹了java如何實時動態(tài)獲取properties文件的內(nèi)容,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09
SpringBoot使用Validation實現(xiàn)接口校驗的超全使用指南
這篇文章主要為大家詳細(xì)介紹了SpringBoot使用Validation實現(xiàn)接口校驗的相關(guān)知識,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2026-03-03
Spring中的@Qualifier注解和@Resource注解區(qū)別解析
這篇文章主要介紹了Spring中的@Qualifier注解和@Resource注解區(qū)別解析,@Qualifier注解的用處是當(dāng)一個接口有多個實現(xiàn)的時候,為了指名具體調(diào)用哪個類的實現(xiàn),@Resource注解可以通過 byName命名和byType類型的方式注入,需要的朋友可以參考下2023-11-11
SpringBoot整合MybatisPlus的基本應(yīng)用詳解
MyBatis-Plus (簡稱 MP)是一個 MyBatis的增強(qiáng)工具,在 MyBatis 的基礎(chǔ)上只做增強(qiáng)不做改變,為 簡化開發(fā)、提高效率而生,本文將給大家介紹一下SpringBoot整合MybatisPlus的基本應(yīng)用,需要的朋友可以參考下2024-05-05
spring boot中內(nèi)嵌redis的使用方法示例
這篇文章主要給大家介紹了關(guān)于spring boot中內(nèi)嵌redis使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-06-06
PowerJob的TransportServiceAware工作流程源碼解讀
這篇文章主要介紹了PowerJob的TransportServiceAware工作流程源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01

