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腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!