Java 15 新特性 文本块(Text Blocks)使用示例

257 阅读2分钟

Java 15 新特性 文本块(Text Blocks)使用示例

前言

  Java程序猿经常需要使用字符串定义JSON,SQL和HTML。这类信息的输出如果不通过换行和缩进整理格式,是非常不易于阅读和理解的。Java 15中的新特性“文本块(Text Blocks)”让程序员从引号和特殊字符串的泥潭里面解脱出来。

什么是文本块

  文本块(Text Blocks)是一种在Java中定义多行字符串的解决方案,旨在简化多行字符串的实现方式,并提高其可读性。它们将多行字符串的创建和处理变得更加容易、直接和灵活。文本块采用 """ 分隔符,并保留所输入文本的格式,包括嵌入的空白符。

示例

简单的多行文本示例

/*
    使用一对"""(注意:开始的"""需要换行,否则编译报错)
*/
String s1 = """
        This is a simple 
        text block demo.""";

System.out.println(s1);

执行结果

This is a simple
text block demo.

直接输出""不需要转义

/*
    可以直接输出""不需要转义,可以拼接字符串
*/
String s2 = """
        {
           "name": 'Tom'
            , "age": 16 
        }
        """;
System.out.println(s2);

执行结果

{
    "name": 'Tom'
    , "age": 16
}

可以直接使用\n\t等特殊字符

/*
    可以直接使用\n\t等特殊字符
*/
String s3 = """
            <xml>
                <body>hello\nText\tBlock</body>
            </xml>
            """;
System.out.println(s3);

执行结果

<xml>
    <body>hello
Text	Block</body>
</xml>

可以输出缩进

/*
    可以输出缩进
*/
String s4 = """
            SELECT 
                *
            FROM 
                stu
            WHERE 1=1
                AND age > 16
                AND name = 'Tom'
            """;
System.out.println(s4);

执行结果

SELECT
    *
FROM
    stu
WHERE 1=1
    AND age > 16
    AND name = 'Tom'

反编译的class文件代码

String s1 = "This is a simple\ntext block demo.";
System.out.println(s1);
String s2 = "{\n    \"name\": 'Tom'\n    , \"age\": 16\n}\n";
System.out.println(s2);
String s3 = "<xml>\n    <body>hello\nText\tBlock</body>\n</xml>\n";
System.out.println(s3);
String s4 = "SELECT\n    *\nFROM\n    stu\nWHERE 1=1\n    AND age > 16\n    AND name = 'Tom'\n";
System.out.println(s4);

总结

  通过以上示例可以轻松的体会到文本块的方便之处。可以直接使用特殊字符,保留了换行和缩进,所见即所得。通过class文件返编译的结果我们可以知道文本块"""是对原有字符串表达式的封装的语法糖,方便开发,提高可读性,降低了代码出错的几率。