黑马程序员技术交流社区

标题: char型变量能不能存储汉字和整数? [打印本页]

作者: rchm    时间: 2012-6-21 00:46
标题: char型变量能不能存储汉字和整数?
今天看到有人说char型的变量可以存储汉字,但不能存储一个整形数1,通过试验好像确实是这样,但不知道为什么?请高手解释一下!!
作者: 丁二跃    时间: 2012-6-21 00:55
java中char 是16位的,一个汉字占2个字节也是16位当然可以存下;而对于整数是int型,其为32位所以就不行了
作者: 余银桂    时间: 2012-6-21 01:02
short 16bit
int   32bit
char  16bit
long  64bit

16bit就是计算机中为char类型分配的空间为16位,就是用16二进制位来存储char类型数据
8位是一个字节  所以16bit是两个字节
而一个汉字占2个字节(2 Bytes),即16位(16 bits),每个字节都以1开头。
所以char可以存储一个汉字
作者: 李元峰    时间: 2012-6-21 01:04
丁二跃 发表于 2012-6-21 00:55
java中char 是16位的,一个汉字占2个字节也是16位当然可以存下;而对于整数是int型,其为32位所以就不行了 ...

楼上正解
作者: 孙安庆    时间: 2012-6-21 02:50
java使用16位的unicode编码集作为编码方式,unicode包括中文,当然可以表示汉字
char类型16位,一共可以表示(2的16次幂-1)共计65535个字符,我们知道,计算机
存储运算的起始都是数字,char类型就是把0-65535范围内的数拿去查unicode码表得到
的字符
,所以,完全可以当成整数来使用。可以直接把char赋给一个整型变量,java会自动提升
作者: 郑冬    时间: 2012-6-21 09:31
char型变量用来存储Unicode编码的字符,unicode编码字符集中包含了汉字,所以,char型变量中可以存储汉字,不过,如果某个特殊的汉字没有被包含在unicode编码字符集中,那么,这个char型变量中就不能存储这个特殊汉字,补充说明:unicode编码占用两个字节,所以,char类型的变量也是占用两个字节。
作者: sbeeqnui1987    时间: 2012-6-21 09:41
    可以啊。JAVA默认的编码是UNICODE.不是ASCII的char
现有程序可供测试:
但若理解成
s='me' 中放一个汉字,就不可以了,因为中文占16个字节,满了。


public class Test {
public static void main(String args[]) {
char s ='我';
System.out.print(s);
}
}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2