JLS的3.1 Unicode部分指出:
Java编程语言使用UTF-16编码以16位代码单元的序列表示文本.
“文本”指什么?
我想知道这是否指
String对象中的内容?发布于 2021-01-14 23:26:43
这句话指的是如何用Java程序来表示文本数据,即String和相关类型。
然而,一个人需要小心,不要阅读太多的这一点。
String API。它是由javadocs指定的:一个单独的文档。实际上,JLS只指定(或暗示)字符串具有某些属性。String对象表示为UTF-16不再是字面上正确的。由于Java9,String类使用字符串值的混合表示形式。字符串现在在内部使用byte[]而不是char[]来表示。如果字符串仅由拉丁文-1代码点组成,则每个代码单元用一个byte编码.如果字符串包含拉丁-1范围以外的任何代码单位,则以UTF-16编码.
简而言之,String被javadocs建模为UTF-16代码单元序列和Unicode代码点序列。内部表示法更为复杂。String或相关的类。(显然,如果应用程序选择不使用String等等,那么有些事情就会更加复杂。例如,Java的字符串字面语法只产生String对象,许多其他API都需要String值。)如果你把这些警告放在一起,我们谈论的特定句子最好被看作是解释性的,而不是指令性的。
Java编译器在内部以与大多数其他Java程序相同的方式表示(Java源代码)文本,即使用String和相关类型。然而,这是一个实现细节。只要编译器正确地支持Java源代码中的Unicode,编译时如何表示它并不重要。
(“适当支持”是指根据JLS规定的任何内容。)
https://stackoverflow.com/questions/65727321
复制相似问题