Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 什么是;“文本”;在JLS 3.1 Unicode中,请参阅?_Java_Jls - Fatal编程技术网

Java 什么是;“文本”;在JLS 3.1 Unicode中,请参阅?

Java 什么是;“文本”;在JLS 3.1 Unicode中,请参阅?,java,jls,Java,Jls,JLS的一节规定: Java编程语言使用UTF-16编码以16位代码单元的序列表示文本 “文本”指的是什么 我想知道它是不是指 存储在String对象中的内容 将源代码作为一个整体传递给编译器,这意味着这是编译器的一条指令,它要做的第一件事是在进一步处理源代码之前将源代码内部转换为UTF-16 这句话是指Java程序如何表示文本数据;i、 e.字符串和相关类型 然而,我们需要小心,不要过多地解读这一点 它真正的意思是,文本数据被建模为UTF-16代码点序列。这实际上是关于JLS如何处理与文本处

JLS的一节规定:

Java编程语言使用UTF-16编码以16位代码单元的序列表示文本

“文本”指的是什么

我想知道它是不是指

  • 存储在
    String
    对象中的内容
  • 将源代码作为一个整体传递给编译器,这意味着这是编译器的一条指令,它要做的第一件事是在进一步处理源代码之前将源代码内部转换为UTF-16

这句话是指Java程序如何表示文本数据;i、 e.
字符串
和相关类型

然而,我们需要小心,不要过多地解读这一点

  • 它真正的意思是,文本数据被建模为UTF-16代码点序列。这实际上是关于JLS如何处理与文本处理相关的Java语言方面的问题;i、 e.字符串文本的建模方式。JLS本身没有指定
    字符串
    API。这是由javadocs指定的:一个单独的文档。实际上,JLS只指定(或暗示)字符串具有某些属性

  • Java
    String
    对象表示为UTF-16不再是字面上正确的。由于Java 9,
    String
    类对字符串值使用混合表示。字符串现在在内部使用
    字节[]
    表示,而不是
    字符[]
    。如果字符串仅由拉丁语-1代码点组成,则每个代码单元用一个
    字节进行编码。如果字符串包含拉丁-1范围之外的任何代码单位,则以UTF-16编码

    简而言之,
    字符串
    由javadocs建模为UTF-16代码单元序列和Unicode代码点序列。内部表示更为复杂

  • Java应用程序实际上可以选择以任何方式建模和表示文本;i、 e.对应用程序有意义的任何方式。它不必使用
    String
    或相关类。(显然,如果应用程序选择不使用
    String
    等等,有些事情会更复杂。例如,Java的字符串文字语法只生成
    String
    对象,而许多其他API需要
    String
    值。)

  • 如果你把这些注意事项放在一起,那么我们谈论的特定句子最好是解释性的,而不是规定性的


    Java编译器以与大多数其他Java程序相同的方式在内部表示(Java源代码)文本;i、 e.使用
    字符串
    和相关类型。然而,这是一个实现细节。只要编译器正确支持Java源代码中的Unicode,它在编译时如何表示并不重要

    (“适当支撑”指符合JLS规定的任何要求。)