Java 什么是;“文本”;在JLS 3.1 Unicode中,请参阅?
JLS的一节规定: Java编程语言使用UTF-16编码以16位代码单元的序列表示文本 “文本”指的是什么 我想知道它是不是指Java 什么是;“文本”;在JLS 3.1 Unicode中,请参阅?,java,jls,Java,Jls,JLS的一节规定: Java编程语言使用UTF-16编码以16位代码单元的序列表示文本 “文本”指的是什么 我想知道它是不是指 存储在String对象中的内容 将源代码作为一个整体传递给编译器,这意味着这是编译器的一条指令,它要做的第一件事是在进一步处理源代码之前将源代码内部转换为UTF-16 这句话是指Java程序如何表示文本数据;i、 e.字符串和相关类型 然而,我们需要小心,不要过多地解读这一点 它真正的意思是,文本数据被建模为UTF-16代码点序列。这实际上是关于JLS如何处理与文本处
- 存储在
对象中的内容String
- 将源代码作为一个整体传递给编译器,这意味着这是编译器的一条指令,它要做的第一件事是在进一步处理源代码之前将源代码内部转换为UTF-16
字符串
和相关类型
然而,我们需要小心,不要过多地解读这一点
字符串
API。这是由javadocs指定的:一个单独的文档。实际上,JLS只指定(或暗示)字符串具有某些属性
String
对象表示为UTF-16不再是字面上正确的。由于Java 9,String
类对字符串值使用混合表示。字符串现在在内部使用字节[]
表示,而不是字符[]
。如果字符串仅由拉丁语-1代码点组成,则每个代码单元用一个字节进行编码。如果字符串包含拉丁-1范围之外的任何代码单位,则以UTF-16编码
简而言之,字符串
由javadocs建模为UTF-16代码单元序列和Unicode代码点序列。内部表示更为复杂
String
或相关类。(显然,如果应用程序选择不使用String
等等,有些事情会更复杂。例如,Java的字符串文字语法只生成String
对象,而许多其他API需要String
值。)
Java编译器以与大多数其他Java程序相同的方式在内部表示(Java源代码)文本;i、 e.使用
字符串
和相关类型。然而,这是一个实现细节。只要编译器正确支持Java源代码中的Unicode,它在编译时如何表示并不重要
(“适当支撑”指符合JLS规定的任何要求。)