最近我读了很多关于unicode代码点以及它们如何随着时间的推移而演变的事情,并确定我也阅读了http://www.joelonsoftware.com/articles/Unicode.html.
但是我无法找到Java使用UTF-16作为char的真正原因.
例如,如果我的字符串包含1024个字母的ASCII范围charachter字符串.这意味着1024 * 2 bytes它相当于它将消耗的2KB字符串存储器.
因此,如果Java base char是UTF-8,那么它只有1KB的数据.即使字符串具有需要2字节的任何字符串,例如10字符"字符"自然也会增加内存消耗的大小.(1014 * 1 byte) + (10 * 2 bytes) = 1KB + 20 bytes
结果并不是那么明显1KB + 20 bytes VS. 2KB我不会说ASCII,但我对此的好奇心是为什么它不是UTF-8,它只是照顾多字节字符.UTF-16在任何具有大量非多字节字符的字符串中看起来像浪费内存.
这背后有什么好理由吗?