Piy*_*ush 0 java utf-16 char utf character-encoding
如果Java中的字符串是UTF-16,那么UTF-16字符的大小可能是4个字节.因此,1个UTF-16角色必须映射到2个字符.
这意味着String长度可能小于等效的char []长度.
但事实并非如此.
Character x = new Character((char) 7000);
String s = new String(""+x+x+x);
byte [] ar = s.getBytes();
char [] arr = s.toCharArray();
Run Code Online (Sandbox Code Playgroud)
字节数组的长度为9.
字符数组的长度为3.
所以char的大小如何为2字节?
所以我认为java中的char可能大于2个字节,具体取决于需要是否正确.
如果是这样,java中char的最大大小是多少?或者它是可变长度,将来可能会达到无穷大?
该String.getBytes()调用不返回UTF-16内部表示.它以平台的默认编码返回字符串.在你的情况下,这很可能是UTF-8(但是,作为一个平台决定的东西,你需要检查以确定).UTF-8编码形式的(char)7000(Unicode代码点U+1B58 BALINESE DIGIT EIGHT)是3个字节 - E1 AD 98.因此你的9个字节用于3个字符.