首页  >  文章  >  Java  >  Java 内部如何表示字符串:UTF-16 或修改版 UTF-8?

Java 内部如何表示字符串:UTF-16 或修改版 UTF-8?

DDD
DDD原创
2024-11-11 01:32:03920浏览

How Does Java Internally Represent Strings: UTF-16 or Modified UTF-8?

解开 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn