关于char 只能存65535个字
char只有两位长度,中文字有8万多,如果要把超过65535的字赋值给char,岂不是不行?另外String在jvm里其实是char[],也同样有这个问题,请问JAVA内部是怎么解决的。
------解决方案--------------------java是用unicode编码的
采用UTF-16
你查查UTF-16怎么处理的就知道为什么了
在java中还涉及到代码点和代码单元
历史遗留问题
------解决方案--------------------0x01---0x7F的字符编译后用单字节表示
0x00,0x80---0x7FF的字符编译后用双字节表示
0x800---0xFFFF的字符(如汉字)编译后用三字节表示
> =0x8000无法表示(也很少见),超出了Unicode字符范围
------解决方案--------------------学习了....
------解决方案--------------------字符按照UTF-16进行编码的规则是: -
字符的值小于0x10000的用等于该值的16位整数来表示。 -
字符的值介于0x10000和0x10FFFF之间的,用一个值介于0xD800和0xDBFF(在所谓的高8位区)
的16位整数和值介于0xDC00和0xDFFF(在所谓的低8位区)的16位整数来表示。 -
字符的值大于0x10FFFF不能按照UTF-16进行编码。注意:在0xD800和0xDFFF间的值是特别为
UTF-16预留,所以不应该将任何字符的值指定为这个区间内的数值。
我也想知道java里面的char类型怎么表示值大于0x10000的?
有谁知道的,讲下吧
------解决方案--------------------char采用的是Unicode字符集,只收录了1W多个常见汉字,你不能把大于65535的数值赋值给它的。
------解决方案--------------------mark