8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

Java 中 String 的内部表示是什么?修改版 UTF-8?UTF-16?

Marek H 1月前

131 0

我搜索了Java中String的内部表示,但是我得到的两种材料看起来可靠但不一致。一种是:http://www.codeguru.com/cpp/misc/misc/multi-lingualsupport/article...

我搜索了 Java 中 String 的内部表示,但得到的结果有两种,看起来可靠但不一致。

一是:

http://www.codeguru.com/cpp/misc/misc/multi-lingualsupport/article.php/c10451

上面写着:

Java 使用 UTF-16 作为内部文本表示,并支持对 UTF-8 进行非标准修改以进行字符串序列化。

另一个是:

http://en.wikipedia.org/wiki/UTF-8#Modified_UTF-8

上面写着:

Tcl 也使用与 Java 相同的修改后的 UTF-8[25] 作为 Unicode 数据的内部表示,但对外部数据使用严格的 CESU-8。

修改后的 UTF-8?还是 UTF-16?哪一个是正确的?Java 在内存中为一个字符占用多少字节?

请让我知道哪一个是正确的以及它使用了多少字节。

帖子版权声明 1、本帖标题:Java 中 String 的内部表示是什么?修改版 UTF-8?UTF-16?
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Marek H在本站《string》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 此答案中链接的常见问题解答已不再存在。我能找到的最接近的答案是:docs.oracle.com/javase/8/docs/technotes/guides/intl/…。但请注意,如果您仔细分析引用的文本和我找到的链接,它们都没有真正说明内部字符串表示是什么。(他们说字符串表示字符序列,但这不是一回事。)事实上......对于最近的 Java 实现,String 的默认实现在内部使用 byte[] 而不是 char[]。您可以查看 OpenJDK 源代码以查看。

返回
作者最近主题: