面试遇的问题,想了好久,不知道怎么回答~
------解决方案--------------------
是不是底层的某种机制啊?
面试问这种问题。。。
我是一只小小小小菜鸟。。。。
------解决方案--------------------
一个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); }}
------解决方案--------------------