A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© rchm 黑马帝   /  2012-6-21 00:46  /  6687 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

今天看到有人说char型的变量可以存储汉字,但不能存储一个整形数1,通过试验好像确实是这样,但不知道为什么?请高手解释一下!!

6 个回复

倒序浏览
java中char 是16位的,一个汉字占2个字节也是16位当然可以存下;而对于整数是int型,其为32位所以就不行了
回复 使用道具 举报
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 00:55
java中char 是16位的,一个汉字占2个字节也是16位当然可以存下;而对于整数是int型,其为32位所以就不行了 ...

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


public class Test {
public static void main(String args[]) {
char s ='我';
System.out.print(s);
}
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马