黑马程序员技术交流社区
标题:
关于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