亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

關于JDK15的新特性之TextBlocks文本塊的引入和使用

 更新時間:2023年07月20日 08:43:13   作者:Blue92120  
這篇文章主要介紹了關于JDK15的新特性之文本塊的引入和使用,如果具有一種語言學機制,可以比多行文字更直觀地表示字符串,而且可以跨越多行,而且不會出現轉義的視覺混亂,那么這將提高廣泛Java類程序的可讀性和可寫性,需要的朋友可以參考下

Text Blocks

Text Blocks首次是在JDK 13中以預覽功能出現的,然后在JDK 14中又預覽了一次,終于在JDK 15中被確定下來,可放心使用了。

文本塊是一種多行字符串文字,它避免了大多數轉義序列的需要,以一種可預測的方式自動設置字符串的格式,并在需要時使開發(fā)人員可以控制格式,簡化編寫 Java 程序的任務。

文本塊建議的目標是提高 Java 程序中的字符串的可讀性,這些字符串表示以非 Java 語言編寫的代碼。

另一個目標是支持從字符串文本遷移,規(guī)定任何新構造都可以表達與字符串文本相同的字符串集,解釋相同的轉義序列,并且以與字符串文本相同的方式進行操作。OpenJDK 開發(fā)人員希望添加轉義序列來管理顯式空白和換行控件。

在Java中,在字符串文字中嵌入HTML,XML,SQL或JSON片段,通常需要先進行轉義和串聯的大量編輯,然后才能編譯包含該片段的代碼。該代碼段通常難以閱讀且難以維護,因此,如果具有一種語言學機制,可以比多行文字更直觀地表示字符串,而且可以跨越多行,而且不會出現轉義的視覺混亂,那么這將提高廣泛Java類程序的可讀性和可寫性。從JDK13到JDK14開始文本塊新特性的提出,提高了Java程序書寫大段字符串文本的可讀性和方便性。

文本塊作為預覽特性首次引入Java 13后收到了眾多最終用戶的反饋?,F在,文本塊得到了增強,再次作為預覽特性出現在Java 14中,目標成為未來JDK版本的標準特性。使用文本塊可以輕松表達跨多行源代碼的字符串。它提高了Java程序中以非Java語言編寫的代碼的字符串的可讀性;它約定,任何新構造的文本塊都可以用字符串相同的字符集表示,解釋相同的轉義序列并以與字符串相同的方式進行操作。

Text Blocks特點

下面看文本塊的引入方法和字符串的區(qū)別和不同:

使用“一維”字符串引入Hello, world 文字

String html = "<html>\n" +
              "    <body>\n" +
              "        <p>Hello, world</p>\n" +
              "    </body>\n" +
              "</html>\n";

使用“二維”文本塊引入Hello, world 文字

String html = """
              <html>
                  <body>
                      <p>Hello, world</p>
                  </body>
              </html>
              """;
System.out.println("""
    Hello,
    itheima
    text blocks!
    """);

文本塊是Java語言的新語法,可以用來表示任何字符串,具有更高的表達能力和更少的復雜度。文本塊的開頭定界符是由三個雙引號 """ 開始,從新的一行開始字符串的內容。這里的新起的這行不屬于字符串,只表示內容開始,是語法的一部分。以 """結束。 """可以緊跟字符串內容,也可以另起一行。另起一行時,字符串內容最后會留有一新行。

line 1
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"""

等效于字符串文字:

"line 1\nline 2\nline 3"

文本塊可以表示空字符串,盡管不建議這樣做,因為它需要兩行源代碼:

String empty = """
""";

錯誤演示

以下是一些格式錯誤的文本塊的示例:

String a = """""";   // no line terminator after opening delimiter
String b = """ """;  // no line terminator after opening delimiter
String c = """
           ";        // no closing delimiter (text block continues to EOF)
String d = """
           abc \ def
           """;      // unescaped backslash (see below for escape processing)

使用原始字符串語法:

String html = "<html>\n" +
              "    <body>\n" +
              "        <p>Hello, world</p>\n" +
              "    </body>\n" +
              "</html>\n";

使用文本塊文本塊語法:

String html = """
              <html>
                  <body>
                      <p>Hello, world</p>
                  </body>
              </html>
              """;

多語言示例

使用原始的字符串語法:

ScriptEngine engine = new ScriptEngineManager().getEngineByName("js");
Object obj = engine.eval("function hello() {\n" +
                         "    print('\"Hello, world\"');\n" +
                         "}\n" +
                         "\n" +
                         "hello();\n");

使用文本塊語法:

ScriptEngine engine = new ScriptEngineManager().getEngineByName("js");
Object obj = engine.eval("""
                         function hello() {
                             print('"Hello, world"');
                         }
                         hello();
                         """);

java編譯器會自動刪除不需要的縮進:

- 每行結尾的空格都會刪除

- 每行開始的共有的空格會自動刪除

- 只保留相對縮進。

System.out.println("""
    Hello,
    itheima
    text blocks!
    """);
// 結果
// > Hello,
// > itheima
// > text blocks!
// >
System.out.println("""
    Hello,
      itheima
    text blocks!
    """);
// 結果
// > Hello,
// >   itheima
// > text blocks!
// >

- 新行"""結束時,將"""向左調整,則可以給所有行前加相應數量的空格。將"""向右調整,沒有作用。

System.out.println("""
        Hello,
        multiline
        text blocks!
    """);
// 結果
// >     Hello,
// >     multiline
// >     text blocks!

到此這篇關于關于JDK15的新特性之TextBlocks文本塊的引入和使用的文章就介紹到這了,更多相關文本塊的引入和使用內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • springboot跨域過濾器fetch react Response to preflight request doesn‘t pass access control check問題

    springboot跨域過濾器fetch react Response to p

    這篇文章主要介紹了springboot跨域過濾器fetch react Response to preflight request doesn‘t pass access control check問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • 用Java實現24點游戲

    用Java實現24點游戲

    喜歡玩游戲的有福啦,文中有非常詳細的開發(fā)框架,按著框架來實現就好啦.而且24點游戲是經典的紙牌益智游戲.,需要的朋友可以參考下
    2021-05-05
  • JAVA Map架構和API介紹

    JAVA Map架構和API介紹

    JAVA Map架構和API介紹:Map、Map.Entry、AbstractMap、SortedMap、 NavigableMap、Dictionary。
    2013-11-11
  • 詳解Java 中泛型的實現原理

    詳解Java 中泛型的實現原理

    這篇文章主要介紹了詳解Java 中泛型的實現原理,幫助大家更好的理解和學習使用Java,感興趣的朋友可以了解下
    2021-03-03
  • Mybatis傳遞多個參數的解決辦法(三種)

    Mybatis傳遞多個參數的解決辦法(三種)

    這篇文章主要介紹了Mybatis傳遞多個參數的解決辦法(三種),個人覺得第三種解決辦法比較好用,有需要的朋友一起學習吧
    2016-05-05
  • 深入理解什么是Mybatis懶加載(延遲加載)

    深入理解什么是Mybatis懶加載(延遲加載)

    這篇文章主要介紹了深入理解什么是Mybatis懶加載(延遲加載),mybatis的懶加載,也稱為延遲加載,是指在進行關聯查詢的時候,按照設置延遲規(guī)則推遲對關聯對象的select查詢,延遲加載可以有效的減少數據庫壓力,需要的朋友可以參考下
    2023-10-10
  • Java基于自定義類加載器實現熱部署過程解析

    Java基于自定義類加載器實現熱部署過程解析

    這篇文章主要介紹了Java基于自定義類加載器實現熱部署過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-03-03
  • JAVA線程同步實例教程

    JAVA線程同步實例教程

    這篇文章主要介紹了JAVA線程同步實例教程,在Java程序設計中有著非常廣泛的應用,需要的朋友可以參考下
    2014-08-08
  • JavaWeb中使用JavaMail實現發(fā)送郵件功能實例詳解

    JavaWeb中使用JavaMail實現發(fā)送郵件功能實例詳解

    這篇文章主要介紹了JavaWeb中使用JavaMail實現發(fā)送郵件功能的實例代碼,非常不錯具有參考借鑒價值,感興趣的朋友一起看看吧
    2016-05-05
  • 詳解Java中的增強 for 循環(huán) foreach

    詳解Java中的增強 for 循環(huán) foreach

    foreach 是 Java 中的一種語法糖,幾乎每一種語言都有一些這樣的語法糖來方便程序員進行開發(fā),編譯期間以特定的字節(jié)碼或特定的方式來對這些語法進行處理。能夠提高性能,并減少代碼出錯的幾率。
    2017-05-05

最新評論