• JEP 368: Text Blocks


    JEP 368: Text Blocks (Second Preview) JDK 13后的第二个预览版)

    引入

    在Java中,在字符串文字中嵌入HTML,XML,SQL或JSON片段"..."通常需要先进行转义和串联的大量编辑,然后才能编译包含该片段的代码。该代码段通常难以阅读且难以维护,因此,如果具有一种语言学机制,可以比多行文字更直观地表示字符串,而且可以跨越多行,而且不会出现转义的视觉混乱,那么这将提高广泛Java类程序的可读性和可写性。从JDK 13到JDK 14开始文本块新特性的提出,提高了Java程序书写大段字符串文本的可读性和方便性。

    设计初衷

    JEP 368:文本块(Text Blocks,第二次预览版)— 文本块作为预览特性首次引入Java 13后收到了众多最终用户的反馈。现在,文本块得到了增强,再次作为预览特性出现在Java 14中,目标成为未来JDK版本的标准特性。使用文本块可以轻松表达跨多行源代码的字符串。它提高了Java程序中以非Java语言编写的代码的字符串的可读性;它约定,任何新构造的文本块都可以用字符串相同的字符集表示,解释相同的转义序列并以与字符串相同的方式进行操作

    HTML示例

    使用“一维”字符串文字*

     

     文本块是Java语言的新语法,可以用来表示任何字符串,具有更高的表达能力和更少的复杂度。文本块的开头定界符是由三个双引号 """ 开始,从新的一行开始字符串的内容。这里的新起的这行不属于字符串,只表示内容开始,是语法的一部分。以 """ 结束。 """ 可以紧跟字符串内容,也可以另起一行。另起一行时,字符串内容最后会留有一新行。

     

     如果在字符串的末尾不需要行终止符,则可以将结束定界符放在内容的最后一行。例如,文本块:

    """
    line 1
    line 2
    line 3"""
    

    等效于字符串文字:

    "line 1
    line 2
    line 3"
    

    文本块可以表示空字符串,尽管不建议这样做,因为它需要两行源代码:

    String empty = """
    """;
    

    以下是一些格式错误的文本块的示例:

    String a = """""";   // no line terminator after opening delimiter
    String b = """ """;  // no line terminator after opening delimiter
    String c = """
               ";        // no closing delimiter (text block continues to EOF)
    String d = """
               abc  def
               """;      // unescaped backslash (see below for escape processing)
    

    SQL

    使用原始的字符串语法:

     执行结果:

    多语言示例

    使用原始的字符串语法:

    缩进

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

    • 每行结尾的空格都会删除

    • 每行开始的共有的空格会自动删除

    • 只保留相对缩进。

    public static void main(String[] args){
                // 1、自动删除不必要的缩进。
                System.out.println("""
    			hello
    			dalianpai
    			text 
    			"""
                );
    
                // 2、会保留相对缩进
                System.out.println("""
    			hello
    				dalianpai
    			text 
    			"""
                );
    
                // 3.整体索进
                System.out.println("""
    					hello
    					dalianpai
    					text 
    			"""
                );
    
                // 4、结束行符在最后面的右边是无效的
                System.out.println("""
    				hello
    				dalianpai
    				text 
    						"""
                );
    

  • 相关阅读:
    云计算在未来发展中的重要性体现在哪里?
    四大优势凸显,云计算成大势所趋
    边缘计算的今天、明天和未来
    以太坊年底前这5件大事,能否带来大惊喜?
    量子计算是什么?它到底有什么用?
    加快边缘计算发展的十大趋势
    树结构练习——排序二叉树的中序遍历
    树结构练习——排序二叉树的中序遍历
    数据结构实验之二叉树的建立与遍历
    数据结构实验之二叉树的建立与遍历
  • 原文地址:https://www.cnblogs.com/dalianpai/p/12789549.html
Copyright © 2020-2023  润新知