读书人

说说char型为何可以存汉字

发布时间: 2011-12-12 22:59:56 作者: rapoo

说说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);    }}
[解决办法]
探讨
char 是两字节,所以可以存汉字

"汉".toString().getBytes().length  ==  2

读书人网 >J2SE开发

热点推荐