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

2023-11-09 17:16:19 浏览数 (1)

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

前言

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

什么是文本块

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

示例

简单的多行文本示例

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

System.out.println(s1);

执行结果

代码语言:text复制
This is a simple
text block demo.

直接输出""不需要转义

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

执行结果

代码语言:text复制
{
    "name": 'Tom'
    , "age": 16
}

可以直接使用nt等特殊字符

代码语言:java复制
/*
    可以直接使用nt等特殊字符
*/
String s3 = """
            <xml>
                <body>hellonTexttBlock</body>
            </xml>
            """;
System.out.println(s3);

执行结果

代码语言:text复制
<xml>
    <body>hello
Text	Block</body>
</xml>

可以输出缩进

代码语言:java复制
/*
    可以输出缩进
*/
String s4 = """
            SELECT 
                *
            FROM 
                stu
            WHERE 1=1
                AND age > 16
                AND name = 'Tom'
            """;
System.out.println(s4);

执行结果

代码语言:text复制
SELECT
    *
FROM
    stu
WHERE 1=1
    AND age > 16
    AND name = 'Tom'

反编译的class文件代码

代码语言:java复制
String s1 = "This is a simplentext block demo.";
System.out.println(s1);
String s2 = "{n    "name": 'Tom'n    , "age": 16n}n";
System.out.println(s2);
String s3 = "<xml>n    <body>hellonTexttBlock</body>n</xml>n";
System.out.println(s3);
String s4 = "SELECTn    *nFROMn    stunWHERE 1=1n    AND age > 16n    AND name = 'Tom'n";
System.out.println(s4);

总结

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

我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

0 人点赞