最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

關(guān)于JDK15的新特性之TextBlocks文本塊的引入和使用

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

Text Blocks

Text Blocks首次是在JDK 13中以預(yù)覽功能出現(xiàn)的,然后在JDK 14中又預(yù)覽了一次,終于在JDK 15中被確定下來(lái),可放心使用了。

文本塊是一種多行字符串文字,它避免了大多數(shù)轉(zhuǎn)義序列的需要,以一種可預(yù)測(cè)的方式自動(dòng)設(shè)置字符串的格式,并在需要時(shí)使開(kāi)發(fā)人員可以控制格式,簡(jiǎn)化編寫(xiě) Java 程序的任務(wù)。

文本塊建議的目標(biāo)是提高 Java 程序中的字符串的可讀性,這些字符串表示以非 Java 語(yǔ)言編寫(xiě)的代碼。

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

在Java中,在字符串文字中嵌入HTML,XML,SQL或JSON片段,通常需要先進(jìn)行轉(zhuǎn)義和串聯(lián)的大量編輯,然后才能編譯包含該片段的代碼。該代碼段通常難以閱讀且難以維護(hù),因此,如果具有一種語(yǔ)言學(xué)機(jī)制,可以比多行文字更直觀地表示字符串,而且可以跨越多行,而且不會(huì)出現(xiàn)轉(zhuǎn)義的視覺(jué)混亂,那么這將提高廣泛Java類(lèi)程序的可讀性和可寫(xiě)性。從JDK13到JDK14開(kāi)始文本塊新特性的提出,提高了Java程序書(shū)寫(xiě)大段字符串文本的可讀性和方便性。

文本塊作為預(yù)覽特性首次引入Java 13后收到了眾多最終用戶的反饋?,F(xiàn)在,文本塊得到了增強(qiáng),再次作為預(yù)覽特性出現(xiàn)在Java 14中,目標(biāo)成為未來(lái)JDK版本的標(biāo)準(zhǔn)特性。使用文本塊可以輕松表達(dá)跨多行源代碼的字符串。它提高了Java程序中以非Java語(yǔ)言編寫(xiě)的代碼的字符串的可讀性;它約定,任何新構(gòu)造的文本塊都可以用字符串相同的字符集表示,解釋相同的轉(zhuǎn)義序列并以與字符串相同的方式進(jìn)行操作。

Text Blocks特點(diǎn)

下面看文本塊的引入方法和字符串的區(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語(yǔ)言的新語(yǔ)法,可以用來(lái)表示任何字符串,具有更高的表達(dá)能力和更少的復(fù)雜度。文本塊的開(kāi)頭定界符是由三個(gè)雙引號(hào) """ 開(kāi)始,從新的一行開(kāi)始字符串的內(nèi)容。這里的新起的這行不屬于字符串,只表示內(nèi)容開(kāi)始,是語(yǔ)法的一部分。以 """結(jié)束。 """可以緊跟字符串內(nèi)容,也可以另起一行。另起一行時(shí),字符串內(nèi)容最后會(huì)留有一新行。

line 1
line 2
line 3

等效于字符串文字:

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

或字符串文字的串聯(lián):

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

如果在字符串的末尾不需要行終止符,則可以將結(jié)束定界符放在內(nèi)容的最后一行。例如,文本塊:

line 1
line 2
line 3"""

等效于字符串文字:

"line 1\nline 2\nline 3"

文本塊可以表示空字符串,盡管不建議這樣做,因?yàn)樗枰獌尚性创a:

String empty = """
""";

錯(cuò)誤演示

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

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)

使用原始字符串語(yǔ)法:

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

使用文本塊文本塊語(yǔ)法:

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

多語(yǔ)言示例

使用原始的字符串語(yǔ)法:

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

使用文本塊語(yǔ)法:

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

java編譯器會(huì)自動(dòng)刪除不需要的縮進(jìn):

- 每行結(jié)尾的空格都會(huì)刪除

- 每行開(kāi)始的共有的空格會(huì)自動(dòng)刪除

- 只保留相對(duì)縮進(jìn)。

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

- 新行"""結(jié)束時(shí),將"""向左調(diào)整,則可以給所有行前加相應(yīng)數(shù)量的空格。將"""向右調(diào)整,沒(méi)有作用。

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

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

相關(guān)文章

  • log4j2異步Logger(詳解)

    log4j2異步Logger(詳解)

    下面小編就為大家?guī)?lái)一篇log4j2異步Logger(詳解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-10-10
  • 深入解析Jdk8中Stream流的使用讓你脫離for循環(huán)

    深入解析Jdk8中Stream流的使用讓你脫離for循環(huán)

    這篇文章主要介紹了Jdk8中Stream流的使用,讓你脫離for循環(huán),本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-02-02
  • 詳解SpringBoot中使用RabbitMQ的RPC功能

    詳解SpringBoot中使用RabbitMQ的RPC功能

    這篇文章主要介紹了詳解SpringBoot中使用RabbitMQ的RPC功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-11-11
  • mybatis-plus 實(shí)現(xiàn)分頁(yè)查詢的示例代碼

    mybatis-plus 實(shí)現(xiàn)分頁(yè)查詢的示例代碼

    本文介紹了在MyBatis-Plus中實(shí)現(xiàn)分頁(yè)查詢,包括引入依賴、配置分頁(yè)插件、使用分頁(yè)查詢以及在控制器中調(diào)用分頁(yè)查詢的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-11-11
  • 解決Spring導(dǎo)出可以運(yùn)行的jar包問(wèn)題

    解決Spring導(dǎo)出可以運(yùn)行的jar包問(wèn)題

    最近需要解決Maven項(xiàng)目導(dǎo)入可執(zhí)行的jar包的問(wèn)題,如果項(xiàng)目不包含Spring,那么使用mvn assembly:assembly即可,這篇文章主要介紹了Spring導(dǎo)出可以運(yùn)行的jar包,需要的朋友可以參考下
    2023-03-03
  • SpringSecurit鹽值加密的密碼驗(yàn)證以及強(qiáng)密碼驗(yàn)證過(guò)程

    SpringSecurit鹽值加密的密碼驗(yàn)證以及強(qiáng)密碼驗(yàn)證過(guò)程

    在密碼加密過(guò)程中,鹽值的使用可以增強(qiáng)密碼的安全性,如果忘記存儲(chǔ)鹽值,將無(wú)法驗(yàn)證密碼,強(qiáng)密碼應(yīng)包含數(shù)字、字母和特殊字符,長(zhǎng)度應(yīng)在8到30位之間,以提高賬戶安全
    2023-03-03
  • springmvc級(jí)聯(lián)屬性處理無(wú)法轉(zhuǎn)換異常問(wèn)題解決

    springmvc級(jí)聯(lián)屬性處理無(wú)法轉(zhuǎn)換異常問(wèn)題解決

    這篇文章主要介紹了springmvc級(jí)聯(lián)屬性處理無(wú)法轉(zhuǎn)換異常問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • Java探索之Feign入門(mén)使用詳解

    Java探索之Feign入門(mén)使用詳解

    這篇文章主要介紹了Java探索之Feign入門(mén)使用詳解,關(guān)于feign,我也是第一次遇到,于是在網(wǎng)上搜集了相關(guān)文章,這篇比較詳細(xì),介紹了其簡(jiǎn)介,選擇feign的原因以及其他相關(guān)內(nèi)容,需要的朋友可以參考下。
    2017-10-10
  • 詳解Java的JDBC API中事務(wù)的提交和回滾

    詳解Java的JDBC API中事務(wù)的提交和回滾

    這篇文章主要介紹了Java的JDBC API中事務(wù)的提交和回滾,JDBC是Java用于和數(shù)據(jù)庫(kù)軟件連接的API,需要的朋友可以參考下
    2015-12-12
  • java程序運(yùn)行時(shí)內(nèi)存分配詳解

    java程序運(yùn)行時(shí)內(nèi)存分配詳解

    這篇文章主要介紹了java程序運(yùn)行時(shí)內(nèi)存分配詳解 ,需要的朋友可以參考下
    2016-07-07

最新評(píng)論

巴东县| 枝江市| 伊金霍洛旗| 上犹县| 什邡市| 安丘市| 耿马| 岱山县| 古丈县| 巩义市| 惠水县| 精河县| 昭通市| 鹤庆县| 岑溪市| 班戈县| 晴隆县| 溧水县| 屯昌县| 徐汇区| 临城县| 团风县| 沁源县| 肥城市| 旺苍县| 乌鲁木齐县| 永安市| 青海省| 大关县| 兰坪| 湖北省| 无极县| 梨树县| 新巴尔虎左旗| 六安市| 松潘县| 呼和浩特市| 北票市| 抚松县| 容城县| 新竹县|