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

JDK 14的新特性:文本塊Text Blocks的使用

 更新時間:2020年05月09日 08:57:37   作者:flydean  
這篇文章主要介紹了JDK 14的新特性:文本塊Text Blocks的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

說起來,Text Blocks是在JDK13中以第一次預覽版本引入的?,F(xiàn)在在JDK14中是第二次預覽版本 JEP 368: Text Blocks。

在我們?nèi)粘5墓ぷ髦?,有時候需要用到一大段的字符串,這些字符串需要換行,需要排版,需要轉(zhuǎn)義。在一個文本編輯器中,這當然是非常容易的事情。但是在java代碼中,就是一個噩夢了。

雖然IDE可以自動幫我們加上換行甚至可以對字符串進行拼接。但在java程序眼中,添加的諸多額外的代碼破壞了代碼的美感。是任何一個有潔癖的程序員都無法忍受的。

怎么辦? Text Blocks就是來解救大家的。

舉個例子

我們先來個直觀的例子,然后再分析Text Blocks的特點。

還是舉HTML的例子,如果我們想要打印出帶縮減,有格式的html,傳統(tǒng)方法可以這樣做:

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>
       """;

是不是清爽很多,想要立即給文本塊點個贊。

別慌點贊,我們還有更多的東西要討論。

Indentation編排

可能有人又有問題了,文本塊好用是好用,你這輸出結(jié)果中,字段前面的空格都去哪了了呀?

這里就要介紹這個概念了:英文名字叫Indentation,中文我把它翻譯為編排。

再看一下上面的代碼,這一次我們把代碼前面的空格以點來表示:

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

Indentation的規(guī)則就是以最下面的“”“為界,對每一行都移除相同數(shù)量的空格。

上面的代碼輸出:

<html>
    <body>
        <p>Hello, world</p>
    </body>
</html>

上面的例子,最下面的”“”剛好在最左邊的位置,如果把“”“向右移動4個空格會發(fā)生什么呢?

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

輸出結(jié)果:

<html>
    <body>
        <p>Hello, world</p>
    </body>
</html>

我們看到輸出結(jié)果是不變的,這樣我們又得到一條結(jié)論:如果”“”向右移動,則以text block中最左的那一行記錄為準。

如果我們把“”“向左移動四位,就會發(fā)現(xiàn)最終的輸出結(jié)果每行前面都有四個空格。

這個功能是和String添加的新的String::stripIndent()對于的。

Escaping轉(zhuǎn)義

還是看一個直觀的例子:

  @Test
  public void useEscape(){
    String code =
        """
        "
        ""
        \s\s\s\s\s保留這行前面的空白
        String text = \"""
          這里展示的是escape的用法!
        \""";
        跟大家說個密碼,這一行很長,我準備分行\(zhòng)
        來寫,哈哈!
        """;
    log.info("{}",code);
  }

輸出結(jié)果:


""
     保留這行前面的空白
String text = """
    這里展示的是escape的用法!
""";

跟大家說個密碼,這一行很長,我準備分行來寫,哈哈!

首先可以看到一個雙引號和兩個雙引號都是不用轉(zhuǎn)義的,直接寫就行了。三個雙引號就需要轉(zhuǎn)義了。

另外s表示的是一個空格。在需要的時候可以使用。

在一行結(jié)尾直接插入,表示這一行太長了,還沒結(jié)束。

注意在Text Block中,不管是windows的回車,換行符還是linux的換行符都會轉(zhuǎn)義成為換行符。
這個轉(zhuǎn)義功能也對于了String的新方法translateEscapes()。

formatted格式化

最后介紹一下Text block的格式化,和String的格式化是一樣的,舉個SQL的例子:

  @Test
  public void useMethod(){
    String query1 = """
        SELECT `EMP_ID`, `LAST_NAME` FROM `EMPLOYEE_TB`
        WHERE `CITY` = '%s'
        ORDER BY `EMP_ID`, `LAST_NAME`;
        """;

    log.info(query1.formatted("我是一個參數(shù)"));
  }

輸出結(jié)果:

SELECT `EMP_ID`, `LAST_NAME` FROM `EMPLOYEE_TB`
WHERE `CITY` = '我是一個參數(shù)'
ORDER BY `EMP_ID`, `LAST_NAME`;

上面的例子中,我們使用%s來定義占位符。

總結(jié)

雖然Text Block好用,但可惜還是預覽版本,正式版本可能要等JDK15了。

本文的例子https://github.com/ddean2009/learn-java-base-9-to-20

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

相關(guān)文章

  • Java實現(xiàn)企業(yè)微信消息推送功能的詳細步驟

    Java實現(xiàn)企業(yè)微信消息推送功能的詳細步驟

    這篇文章主要介紹了Java實現(xiàn)企業(yè)微信消息推送功能,本文圖文實例代碼相結(jié)合給大家介紹的非常詳細,需要的朋友可以參考下
    2022-04-04
  • 詳解@ConditionalOnMissingBean注解的作用

    詳解@ConditionalOnMissingBean注解的作用

    這篇文章主要介紹了詳解@ConditionalOnMissingBean注解的作用,@ConditionalOnMissingBean,它是修飾bean的一個注解,主要實現(xiàn)的是,當你的bean被注冊之后,如果而注冊相同類型的bean,就不會成功,它會保證你的bean只有一個,需要的朋友可以參考下
    2023-10-10
  • SpringCloud Zuul網(wǎng)關(guān)功能實現(xiàn)解析

    SpringCloud Zuul網(wǎng)關(guān)功能實現(xiàn)解析

    這篇文章主要介紹了SpringCloud Zuul網(wǎng)關(guān)功能實現(xiàn)解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-03-03
  • java輸入多個數(shù)據(jù)(不確定),排序,并求最大值的方法

    java輸入多個數(shù)據(jù)(不確定),排序,并求最大值的方法

    今天小編就為大家分享一篇java輸入多個數(shù)據(jù)(不確定),排序,并求最大值的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • SpringBoot實現(xiàn)轉(zhuǎn)頁功能

    SpringBoot實現(xiàn)轉(zhuǎn)頁功能

    這篇文章主要介紹了SpringBoot實現(xiàn)轉(zhuǎn)頁功能,頁面的跳轉(zhuǎn)在web開發(fā)中是經(jīng)常用的基礎功能,感興趣想要詳細了解可以閱讀下文,對大家的學習或工作具有一定的參考借鑒價值
    2023-05-05
  • Junit測試多線程無法得到結(jié)果的問題解決

    Junit測試多線程無法得到結(jié)果的問題解決

    在測試一個文件轉(zhuǎn)換工具類的時候,發(fā)生一個有趣的現(xiàn)象,同樣的輸入,使用Main函數(shù)可以正確解析,得到結(jié)果,使用Junit卻無法得到結(jié)果,神奇的是,即使捕獲Throwable,也無法捕獲到仍和異常。
    2021-05-05
  • java9的JShell小工具和編譯器兩種自動優(yōu)化方法

    java9的JShell小工具和編譯器兩種自動優(yōu)化方法

    這篇文章主要介紹了java9的JShell小工具和編譯器兩種自動優(yōu)化方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-07-07
  • MyBatis-Plus結(jié)合Layui實現(xiàn)分頁方法

    MyBatis-Plus結(jié)合Layui實現(xiàn)分頁方法

    MyBatis-Plus 使用簡單,本文主要介紹使用 service 中的 page 方法結(jié)合 Layui 前端框架實現(xiàn)分頁效果,具有一定的參考價值,感興趣的可以了解一下
    2021-08-08
  • JAVA數(shù)組練習題實例講解

    JAVA數(shù)組練習題實例講解

    這篇文章主要給大家介紹了關(guān)于JAVA數(shù)組練習題的相關(guān)資料,這是個人總結(jié)的一些關(guān)于java數(shù)組的練習題,文中通過代碼實例介紹的非常詳細,需要的朋友可以參考下
    2023-08-08
  • 關(guān)于ThreadLocal對request和response的用法說明

    關(guān)于ThreadLocal對request和response的用法說明

    這篇文章主要介紹了關(guān)于ThreadLocal對request和response的用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08

最新評論

常山县| 扶沟县| 潞西市| 栾川县| 壶关县| 株洲县| 神池县| 古丈县| 岢岚县| 海盐县| 深圳市| 马公市| 江陵县| 博乐市| 巴东县| 宜州市| 灵璧县| 辰溪县| 临猗县| 静乐县| 吴桥县| 大同县| 康马县| 河池市| 栖霞市| 鄱阳县| 牙克石市| 丰原市| 虹口区| 信阳市| 福清市| 呼和浩特市| 天镇县| 临桂县| 辉县市| 会理县| 五家渠市| 唐河县| 高清| 丹巴县| 东丰县|