JAVA新特性系列(二)文字块

133 阅读1分钟

接上一篇JShell,这篇介绍下文字块。

  • 文字块这个特性,首先在JDK 13中以预览版的形式发布。在JDK 14中,改进的文字块再次以预览版的形式发布。最后,文字块在JDK 15正式发布。

文字块的概念

  • 文字块的概念很简单,它是一个由多行文字构成的字符串。

为啥需要文字块呢?

  • 在java中编写复杂的字符数是一件痛苦的事情,比如我在程序中定义一个json字符串:
//代码里充满里转移符,可读性和可编辑性极差
      String json = "\n" +
            "{\n" +
            "    "key":"myKey",\n" +
            "    "value":"myValue"\n" +
            "}";

所见及所得的文字块

  • 看下如果使用文字块,同一个json串:
//可读性、可编辑性大大增强
      String jsonNew = """
            {
               "key":"myKey",
               "value":"myValue"
            }
            """;

文字块和字符串的区别是啥?

不同于传统字符串的是,在编译期,文字块要顺序通过如下三个不同的编译步骤:

  • 1.为了降低不同平台间换行符的表达差异,编译器把文字内容里的换行符统一转换成 LF(u000A);
  • 2.为了能够处理Java源代码里的缩进空格,要删除所有文字内容行和结束分隔符共享的前导空格,以及所有文字内容行的尾部空格;
  • 3.最后处理转义字符,这样开发人员编写的转义序列就不会在第一步和第二步被修改或删除。

我的理解文字块就是java语言对字符串在编译期的优化。

你们是怎么看的呢?欢迎留言讨论。

下一篇:java新特性(三)档案类