千家信息网

Java14中Text块怎么用

发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,这篇文章主要介绍了Java14中Text块怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。在Java中,文本块是多行字符串文字。这
千家信息网最后更新 2025年01月23日Java14中Text块怎么用

这篇文章主要介绍了Java14中Text块怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

在Java中,文本块多行字符串文字。这意味着我们不需要陷入显式的行终止符,字符串连接以及分隔符的混乱局面,而这些分隔符通常用于编写普通的字符串文字。

Java 文本块在Java 13中可用( JEP 355 )和Java 14( JEP 368 )作为预览函数。它计划成为Java 15的标准函数( JEP 378 ) 。

要启用此预览函数,我们必须使用 -enable-preview-source 14 (两个连字符)标志。

文本块语法

  • 文本块包含多行文本,并使用三个双引号字符(""")作为其开始和结束定界符

  • 开头的三个双引号字符后总是一个行终止符。

  • 我们不能在一行上包含定界符和文本块。分隔符必须在自己的行上。内容只能从下一行开始。

  • 如果文本内容包含单引号或双引号,则无需将其转义。

String dbSchema =        """                        CREATE TABLE 'TEST'.'EMPLOYEE'                        (                          'ID' INT NOT NULL DEFAULT 0 ,                          'FIRST_NAME' VARCHAR(100) NOT NULL ,                          'LAST_NAME' VARCHAR(100) NULL ,                          'STAT_CD' TINYINT NOT NULL DEFAULT 0                         );                                        """;

尽管上面的文本块看起来非常简单,但仍然有很多事情发生在幕后。让我们来探索。

类似字符串

  • 从文本块生成的实例的类型为 java.lang.String ,其特征与传统的双引号字符串相同。这包括对象表示和插入字符串池

  • 我们可以使用文本块作为 String 类型的方法参数传递。

  • 文本块可以在可以使用字符串文字的任何地方使用。例如,我们可以将其用于字符串连接。

String string = "Hello";String textBlock = """                                        World""";String joinedString =  string + textBlock;System.out.println(joinedString);

程序输出。

HelloWorld

文本块缩进

文本块保留其内容的缩进,让我们参考第一个示例。

String dbSchema =    """                        CREATE TABLE 'TEST'.'EMPLOYEE'                        (                          'ID' INT NOT NULL DEFAULT 0 ,                          'FIRST_NAME' VARCHAR(100) NOT NULL ,                          'LAST_NAME' VARCHAR(100) NULL ,                          'STAT_CD' TINYINT NOT NULL DEFAULT 0                         );                                        """;System.out.println(dbSchema);

程序输出:

|CREATE TABLE 'TEST'.'EMPLOYEE'|(|  'ID' INT NOT NULL DEFAULT 0 ,|  'FIRST_NAME' VARCHAR(100) NOT NULL ,|  'LAST_NAME' VARCHAR(100) NULL ,|  'STAT_CD' TINYINT NOT NULL DEFAULT 0|);

在这里,我们有两种缩进类型:

第一个缩进是从行首到所有行中的" CREATE" 字。可能会根据各种因素(例如格式化插件或开发者的选择)而增加或减少。

第二次缩进是从字符'(''到'ID'的开始。在大多数情况下,缩进时间为4或8个空格。

添加一些缩进

假设我们想在上面的示例中为所有行在左侧添加2个制表符缩进。为此,我们可以仔细定位右三引号,以将两个制表符精确地向左移动。推杆位于应从其基本缩进处开始的完全相同的位置。

String dbSchema =       """                        CREATE TABLE 'TEST'.'EMPLOYEE'                        (                              'ID' INT NOT NULL DEFAULT 0 ,                              'FIRST_NAME' VARCHAR(100) NOT NULL ,                              'LAST_NAME' VARCHAR(100) NULL ,                              'STAT_CD' TINYINT NOT NULL DEFAULT 0                         );        """;System.out.println(dbSchema);

程序输出:

|           CREATE TABLE 'TEST'.'EMPLOYEE'|               (|                     'ID' INT NOT NULL DEFAULT 0 ,|                     'FIRST_NAME' VARCHAR(100) NOT NULL ,|                     'LAST_NAME' VARCHAR(100) NULL ,|                     'STAT_CD' TINYINT NOT NULL DEFAULT 0|               );

另外,请注意,Java编译器还会删除文本块中每一行上的尾随空格

行终止符

不同的平台具有不同的行终止符。 Java不参与平台检测,而是将文本块中的所有行终止符标准化为\n

如果需要平台行终止符,则可以使用 String::replaceAll("\n",System.lineSeparator())

String string = "Hello";String textBlock = """                                        World""";String joinedString =  string + textBlock;joinedString = joinedString.replaceAll("\n", System.lineSeparator());System.out.println(joinedString);

转义序列

很多时候,我们只想将内容写到程序的多行中,但实际上它们只是一个字符串内容。在这种情况下,我们可以使用换行符换码符,即单个反斜杠'\'。它禁止包含隐式换行符。

String dbSchema = """        CREATE TABLE 'TEST'.'EMPLOYEE'\        (\        'ID' INT NOT NULL DEFAULT 0 ,\        'FIRST_NAME' VARCHAR(100) NOT NULL ,        'LAST_NAME' VARCHAR(100) NULL ,\        'STAT_CD' TINYINT NOT NULL DEFAULT 0 \        );        """;System.out.println(dbSchema);

程序输出:

|CREATE TABLE 'TEST'.'EMPLOYEE'('ID' INT NOT NULL DEFAULT 0 ,'FIRST_NAME' VARCHAR(100) NOT NULL ,'LAST_NAME' VARCHAR(100) NULL ,'STAT_CD' TINYINT NOT NULL DEFAULT 0 );

如果由于某种原因我们不希望删除缩进,可以使用'\s'(ASCII字符32,空格)转义序列。在任何行的末尾使用它可以保证该行将具有所有空格字符,直到遇到'\s'

String dbSchema =         """        CREATE TABLE 'TEST'.'EMPLOYEE'          \s        (                                       \s          'ID' INT NOT NULL DEFAULT 0 ,         \s           'FIRST_NAME' VARCHAR(100) NOT NULL , \s          'LAST_NAME' VARCHAR(100) NULL ,       \s          'STAT_CD' TINYINT NOT NULL DEFAULT 0  \s        );                                      \s        """;System.out.println(dbSchema.replaceAll("\s", "."));

程序输出。 在此程序输出中,我将所有空格字符替换为点'.' 让您了解其效果。

CREATE.TABLE.'TEST'.'EMPLOYEE'...........(..........................................'ID'.INT.NOT.NULL.DEFAULT.0.,.............'FIRST_NAME'.VARCHAR(100).NOT.NULL.,....'LAST_NAME'.VARCHAR(100).NULL.,..........'STAT_CD'.TINYINT.NOT.NULL.DEFAULT.0...);.......................................

感谢你能够认真阅读完这篇文章,希望小编分享的"Java14中Text块怎么用"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

0