java深度学习

java13新特征:文本块(Text Blocks)详解

2019-11-25  本文已影响0人  安静的猫咪先生

摘要:本文介绍了java13新特征文本块(Text Blocks)以及使用细节。文章难度:初级

java13来了

2019年9月,java13正式发布。文本块(预览功能)是新特征之一。这个特征很好理解,笔者不废话了,直接上代码:

System.out.println("""
    Hello,
    multiline
    text blocks!
    """);

输出结果:

Hello,
multiline
text blocks!

这种多行字符串文字功能很实用,尤其是写json或sql的时候:

String json = """
    {
        greeting: "hello",
        audience: "text blocks",
        punctuation: "!"
    }
    """;

文本块就这么简单。使用时需要注意一下几点:


语法

System.out.println("""
    Hello, multiline text blocks!""");
// 结果
// > Hello, multiline text blocks!

System.out.println("""
    Hello, multiline text blocks!
    """);
// 结果
// > Hello, multiline text blocks!
// >
String s1 = """
    Hello, text blocks!""";
String s2 = "Hello, text blocks!";
System.out.println("equal: " + s1.equals(s2)); // true
System.out.println("identical: " + (s1 == s2)); // true

缩进

java编译器会自动删除不需要的缩进:

System.out.println("""
    Hello,
    multiline
    text blocks!
    """);
// 结果
// > Hello,
// > multiline
// > text blocks!
// >

System.out.println("""
    Hello,
      multiline
    text blocks!
    """);
// 结果
// > Hello,
// >   multiline
// > text blocks!
// >
System.out.println("""
        Hello,
        multiline
        text blocks!
    """);
// 结果
// >     Hello,
// >     multiline
// >     text blocks!
// >

转义

使用文本块不用对换行符 \n 和双引号 \" 进行转移,但其他的转义仍需要

System.out.println("""
    {
        greeting: "hello",
        audience: "text blocks",
        punctuation: "!"
    }
    """);
// 结果
// > {
// >     greeting: "hello",
// >     audience: "text blocks",
// >     punctuation: "!"
// > }
// > 

如果要转移""" 使用\"""

String s= """
    one: "
    two: ""
    three: \"""
    """;

行结尾

Windows和基于UNIX的操作系统具有不同的字符来表示行结尾。
Windows使用回车符 \r 和换行符 \n ,而基于Unix的系统仅使用换行符 \n
文本块中的所有行结尾将统一为换行符 \n

格式化

java13给String对象提供了一个新的格式化方法formatted:

// 以前的format方法
String.format(" Hello \n %s \n text blocks!", "multiline");

// 新的formatted方法
String s = """
    Hello
    %s
    text blocks!
    """.formatted("multiline");

预览功能

文本块目前还是java13的预览功能

预览语言或VM功能是Java SE平台的一项新功能,该功能已完全指定,完全实现且非常无常。它在JDK功能版本中提供,可根据实际使用情况激发开发人员的反馈; 这可能会导致它在未来的Java SE平台中成为永久性的。

在下一个JDK功能发布之前,将评估该功能的“真实世界”优势和劣势,以确定该功能是否在Java SE平台中具有长期作用,如果是,则是否需要优化。因此,该特征可以被授予最终和永久状态(有或没有改进),或者经历进一步的预览时段(有或没有改进),或者被移除。

所以,文本块特征在JDK13中提供,但默认情况下不启用。需要明确允许使用它们。maven开启预览功能的配置如下:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.0</version>
    <configuration>
        <release>13</release>
        <compilerArgs>--enable-preview</compilerArgs>
        </configuration>
</plugin>

总结:

(完)

非常感谢您的阅读!您的留言、打赏、点赞、关注、分享,是对笔者最大的鼓励:P

上一篇 下一篇

猜你喜欢

热点阅读