黑马程序员技术交流社区

标题: 关于System.out.println('H'+'a')的问题 [打印本页]

作者: 阮金明    时间: 2011-11-16 18:42
标题: 关于System.out.println('H'+'a')的问题
本帖最后由 阮金明 于 2011-11-16 18:42 编辑

System.out.println('H'+'a')的结果为什么是169呢
作者: 後天__牛永志    时间: 2011-11-16 18:53
因为'H'是72 'a' 是97,当'H' 和 'a'做加法运算是,会自动从char提升为int型,两者加起来就是169了
作者: 李高翔    时间: 2011-11-16 19:22
java使用的是unicode字符集,它包含了整个ASCII字符集,还添加了很多在其他语言中使用的字符。'H'和'a'在ASCII中对应的分别是72和97,char自动转换成int,故输出结果169
作者: 咪咪    时间: 2011-11-16 19:38
你的H和a是字符数据不是字符串那么他们相加会转换成对应的Ascii进行相加。
作者: 泼孩    时间: 2011-11-16 19:50
本帖最后由 泼孩 于 2011-11-16 19:50 编辑

楼主的想法是要打印字符Ha的吧?打印字符串表示常量应该使用双引号:("")
而println(‘H’+'a'),
('某个字符本身'):表示该字符对应的数字(ASCII码),这就解释了你这种写法所打印出的结果了
作者: 陈浩    时间: 2011-11-16 20:01
'H'在字符集里对应的是72,'a'在字符集里对应的是97,想要输出Ha,只需强制转换就行了,或者输出时用双引号就行了
作者: 杨杰    时间: 2011-11-16 20:37
因为是单引号括着,所以打印的是他们的ASCII码值。
作者: 任俊杰    时间: 2011-11-16 23:26
在java中,byte、short、char在表达式计算中都先要将自身提升为int型,如果表达中有更高的类型如long再提升到long。
而这里,即使表达式两边都是char类型,但它他还是都处于表达式当中,所有表示两边 都将先将自己提升为int型后,再计算。
当然计算的结果就是int型了。你可以看一下这个:

char a=0, b=1,  c=2;
a = b+c;    //你看看这一句报不报错
int z = b+c;  //再看看这一句报不报错。

通过个你应该就知道了。




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