黑马程序员技术交流社区

标题: 求大神解答,老师叫我别钻牛角尖 [打印本页]

作者: Jeffery    时间: 2015-8-23 00:37
标题: 求大神解答,老师叫我别钻牛角尖
char c='中';
System.out.println(c);//输出中
char c2='AB';
System.out.println(c2);//报错
对于char存放两个字节,上面'中'和'AB'都是两字节,为什么前者能输出,后者报错呢?
作者: 殷俊    时间: 2015-8-23 00:47
因为“中”这个汉字,在系统底层是二个字节存储的,所以可以输出。但是对于“AB”来说,虽然单独来看“A”“B”,两个英文字母分别都是一个字节,但是合在一起作为字符,就不能说是两个字节了,因为你一旦写入一个“A”,底层会分配两个字节的内存空间给他,“B”也同样是这样的,虽然他们本身都只有一个字节,但是char类型会给每个字母分配一个两字节的内存空间,因此,你合在一起写,就会报错
作者: chensheng06    时间: 2015-8-23 07:01
原来如此 学习了
作者: JXHIUUI    时间: 2015-8-23 07:06
殷俊 发表于 2015-8-23 00:47
因为“中”这个汉字,在系统底层是二个字节存储的,所以可以输出。但是对于“AB”来说,虽然单独来看“A” ...

这个回答看起来中肯一点,不过我也不知道,算学习了
作者: 蓬头小道士    时间: 2015-8-23 07:19
当AB为字符时就是四个字节了。
作者: sven556677    时间: 2015-8-23 08:22
没太搞的明白,char 本来就是两个字节啊,一个A用char存也是两字节,一个A一个B肯定就是4字节啊,凭什么不报错。
作者: 血马雄风    时间: 2015-8-23 08:49
'AB'这不是单个字符,Ok
作者: kevin986745zk    时间: 2015-8-23 08:49
楼上说的很对
作者: boboyuwu    时间: 2015-8-23 11:13
AB超出了字节范围,     当ASCILL编码表没有AB字符时候就会分开   A对应十进制是65B就是66加起来就是131   超出了字符范围
作者: boboyuwu    时间: 2015-8-23 11:40
boboyuwu 发表于 2015-8-23 11:13
AB超出了字节范围,     当ASCILL编码表没有AB字符时候就会分开   A对应十进制是65B就是66加起来就是131    ...

ASCILL编码表有'AB'这玩意吗   
作者: pengbeilin    时间: 2015-8-23 13:05
char 是用来存字符类型~ AB是一个字符串    char c2='AB'; 这句编译都不会通过的
作者: myself123    时间: 2015-8-23 14:07
来学习了
作者: 三分之一    时间: 2015-8-23 14:18
长见识了。。。我都没注意过、、、
作者: Jeffery    时间: 2015-8-23 23:45
殷俊 发表于 2015-8-23 00:47
因为“中”这个汉字,在系统底层是二个字节存储的,所以可以输出。但是对于“AB”来说,虽然单独来看“A” ...

牛!!膜拜大神
作者: 阮文江    时间: 2015-8-23 23:49
我也来看看大神怎么说
作者: heima_cy    时间: 2015-8-24 09:10
对对的 是四个字节




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