【发布时间】:2017-01-28 07:12:51
【问题描述】:
如果 Java 中的字符串是 UTF-16,则 UTF-16 字符的大小可能为 4 个字节。 所以 1 个 UTF-16 字符必须映射到 2 个字符。
这意味着字符串长度可能小于等效的 char[] 长度。
但事实并非如此。
Character x = new Character((char) 7000);
String s = new String(""+x+x+x);
byte [] ar = s.getBytes();
char [] arr = s.toCharArray();
字节数组的长度为 9。
char 数组的长度为 3。
那么 char 怎么能有 2 个字节的大小呢?
所以我认为java中的char可能大于2个字节,这取决于需要是正确的。
如果是这样,java 中 char 的最大大小是多少?或者它是可变长度的,将来可能会上升到无穷大?
【问题讨论】:
-
你在谈论 4 个字节是什么? UTF-16 编码的重点在于代码点是用 1 个或 2 个 16 位代码单元编码的。 16 位是 2 个字节。这就是 UTF-16 中 16 位的含义。
标签: java character-encoding char utf-16 utf