说说char型为什么可以存汉字?
面试遇的问题,想了好久,不知道怎么回答~
------解决方案--------------------是不是底层的某种机制啊?
面试问这种问题。。。
我是一只小小小小菜鸟。。。。
------解决方案--------------------一个char 16字节 ,一个汉字2字节。 所以没问题啊
------解决方案--------------------1.char是16位的阿
编码范围从0-65535
2.我们都知道1个汉字用2个字节存放
那末正好在char的范围呢
所以可以用char存放汉字阿
比如说
汉字 “我“ 的unicode编码是25105
所以可以用char存放阿
------解决方案--------------------……
char 型只不过存的是字符集的遇射码而已……就是一堆一定范围内的整型数……传统GB2312码,是两个 char 元素表示一个汉字,第一个 char 值为负值,这就告诉系统,这是一个非ASCII字符,需要再读取其后面的一个,就是两个成一对儿,然后找汉字或者其它非ASCII字符集去映射出是什么字……
------解决方案--------------------java中字符(char)采用的unicode(16位表示)编码,一个汉字也是用两个字节表示,所以说是可以存储的
------解决方案--------------------2楼和楼上为什么认为一个char是16字节呢,应该是16位吧。
------解决方案--------------------因为char 在java里面是unicode,2个字节
在c/c++和delphi里面 不是 unicode,只有一个字节
------解决方案--------------------Java code
package com.wm.mad.tmp;
import junit.framework.TestCase;
public class CharEx extends TestCase {
public void test() {
char ch = ' ';
for(int i=0; i < 65535; i++) {
ch = (char) i;
System.out.print(ch);
System.out.print(' ');
if((i + 1) % 10 == 0) {
System.out.println();
}
}
assert(true);
}
}
------解决方案--------------------