解开 Java 的字符串表示形式:UTF-16 还是修改后的 UTF-8?
在 Java 领域,字符串的内部表示形式有一直是争论的话题。两个看似可靠的来源提供了相互矛盾的信息:
一个来源建议 Java 使用 UTF-16 进行内部文本表示,而另一个来源则提出 UTF-8 的修改版本。以下哪个说法成立?
答案:UTF-16 用于内部表示
Java 采用 UTF-16 作为文本的内部表示,包括字符串、字符串建筑商和其他相关结构。该编码系统使用 16 位 Unicode 代码单元来表示 U 0000 到 U FFFF 范围内的字符或 UTF-16 代码单元。
用于序列化的修改版 UTF-8
虽然 Java 在内部支持 UTF-16,但它使用 UTF-8 的非标准变体来序列化字符串。序列化涉及将 Java 对象转换为可存储和可传输的格式,在这种情况下,序列化字符串使用修改后的 UTF-8 表示。
内存存储:压缩字符串
在 JVM 级别,Java 可能会使用压缩字符串(通过 -XX: UseCompressedStrings 激活),其中不需要 UTF-16 编码的字符串可以使用 8 位 ISO-8859-1 编码来存储。此优化减少了特定类型字符串的内存使用量。
Char 的字节使用
Java 中的 char 变量始终占用 2 个字节,无论对象内的填充考虑因素如何.
代码点和字符表示
需要注意的是,表示超出 65535 限制的字符的代码点可以使用一个或两个字符来表示 (即 2 或 4 个字节)。
以上是Java 内部如何表示字符串:UTF-16 或修改版 UTF-8?的详细内容。更多信息请关注PHP中文网其他相关文章!