JLS 3.1 Unicode 中的 "text" 指的是什么?
What does "text" in JLS 3.1 Unicode refer to?
JLS 的 3.1 Unicode 部分指出:
The Java programming language represents text in sequences of 16-bit code units, using the UTF-16 encoding.
“文字”指的是什么?
不知道是不是指
- 内容存储在
String
个对象中?
- 将源代码作为一个整体传递给编译器,这意味着这是对编译器的指令,它必须做的第一件事是在进一步处理之前在内部将源代码转换为 UTF-16 ?
该特定句子指的是 Java 程序如何表示文本数据;即 String
和相关类型。
但是,需要注意不要过度解读这一点。
它的真正含义是文本数据被建模为UTF-16代码点序列。这实际上是关于 JLS 如何处理 Java 语言 与文本处理相关的那些方面;即字符串文字是如何建模的。 JLS 本身没有指定 String
API。即由 javadocs 指定:一个单独的文件。实际上,JLS 仅指定(或暗示)字符串具有某些属性。
JavaString
对象表示 为 UTF-16 不再是字面上正确的。自 Java 9 起,String
class 使用字符串值的混合表示。字符串现在 内部 使用 byte[]
而不是 char[]
表示。如果字符串仅由 LATIN-1 代码点组成,则每个代码单元用一个 byte
编码。如果字符串包含 LATIN-1 范围之外的任何代码单元,则它以 UTF-16 编码。
简而言之,String
被 javadocs 建模 作为 both UTF-16 代码单元序列和 一系列 Unicode 代码点。内部表示比较复杂
Java 应用程序实际上可以选择以任何方式建模和表示文本;即任何对应用程序有意义的方式。它不必使用 String
或相关的 classes。 (显然,如果应用程序选择不使用 String
等等,有些事情会更复杂。例如,Java 的字符串文字语法只产生 String
个对象,还有许多其他APIs 需要 String
个值。)
如果你把这些注意事项放在一起,我们正在谈论的特定句子最好被视为解释性的而不是规定性的。
Java 编译器在内部表示(Java 源代码)文本的方式与大多数其他 Java 程序相同;即使用 String
和相关类型。 不过这是一个实现细节。只要编译器正确支持 Java 源代码中的 Unicode,它在编译时如何表示并不重要。
(“正确支持”表示符合 JLS 指定的内容。)
JLS 的 3.1 Unicode 部分指出:
The Java programming language represents text in sequences of 16-bit code units, using the UTF-16 encoding.
“文字”指的是什么?
不知道是不是指
- 内容存储在
String
个对象中? - 将源代码作为一个整体传递给编译器,这意味着这是对编译器的指令,它必须做的第一件事是在进一步处理之前在内部将源代码转换为 UTF-16 ?
该特定句子指的是 Java 程序如何表示文本数据;即 String
和相关类型。
但是,需要注意不要过度解读这一点。
它的真正含义是文本数据被建模为UTF-16代码点序列。这实际上是关于 JLS 如何处理 Java 语言 与文本处理相关的那些方面;即字符串文字是如何建模的。 JLS 本身没有指定
String
API。即由 javadocs 指定:一个单独的文件。实际上,JLS 仅指定(或暗示)字符串具有某些属性。Java
String
对象表示 为 UTF-16 不再是字面上正确的。自 Java 9 起,String
class 使用字符串值的混合表示。字符串现在 内部 使用byte[]
而不是char[]
表示。如果字符串仅由 LATIN-1 代码点组成,则每个代码单元用一个byte
编码。如果字符串包含 LATIN-1 范围之外的任何代码单元,则它以 UTF-16 编码。简而言之,
String
被 javadocs 建模 作为 both UTF-16 代码单元序列和 一系列 Unicode 代码点。内部表示比较复杂Java 应用程序实际上可以选择以任何方式建模和表示文本;即任何对应用程序有意义的方式。它不必使用
String
或相关的 classes。 (显然,如果应用程序选择不使用String
等等,有些事情会更复杂。例如,Java 的字符串文字语法只产生String
个对象,还有许多其他APIs 需要String
个值。)
如果你把这些注意事项放在一起,我们正在谈论的特定句子最好被视为解释性的而不是规定性的。
Java 编译器在内部表示(Java 源代码)文本的方式与大多数其他 Java 程序相同;即使用 String
和相关类型。 不过这是一个实现细节。只要编译器正确支持 Java 源代码中的 Unicode,它在编译时如何表示并不重要。
(“正确支持”表示符合 JLS 指定的内容。)