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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 阮金明 黑马帝   /  2011-11-16 18:42  /  2155 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在java中,byte、short、char在表达式计算中都先要将自身提升为int型,如果表达中有更高的类型如long再提升到long。
而这里,即使表达式两边都是char类型,但它他还是都处于表达式当中,所有表示两边 都将先将自己提升为int型后,再计算。
当然计算的结果就是int型了。你可以看一下这个:

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

通过个你应该就知道了。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
本帖最后由 阮金明 于 2011-11-16 18:42 编辑

System.out.println('H'+'a')的结果为什么是169呢

7 个回复

倒序浏览
因为'H'是72 'a' 是97,当'H' 和 'a'做加法运算是,会自动从char提升为int型,两者加起来就是169了

评分

参与人数 1技术分 +1 收起 理由
宁超 + 1

查看全部评分

回复 使用道具 举报
java使用的是unicode字符集,它包含了整个ASCII字符集,还添加了很多在其他语言中使用的字符。'H'和'a'在ASCII中对应的分别是72和97,char自动转换成int,故输出结果169

评分

参与人数 1技术分 +1 收起 理由
宁超 + 1

查看全部评分

回复 使用道具 举报
咪咪 来自手机 黑马帝 2011-11-16 19:38:00
报纸
你的H和a是字符数据不是字符串那么他们相加会转换成对应的Ascii进行相加。

评分

参与人数 1技术分 +1 收起 理由
宁超 + 1

查看全部评分

回复 使用道具 举报
泼孩 黑马帝 2011-11-16 19:50:18
地板
本帖最后由 泼孩 于 2011-11-16 19:50 编辑

楼主的想法是要打印字符Ha的吧?打印字符串表示常量应该使用双引号:("")
而println(‘H’+'a'),
('某个字符本身'):表示该字符对应的数字(ASCII码),这就解释了你这种写法所打印出的结果了

评分

参与人数 1技术分 +1 收起 理由
宁超 + 1

查看全部评分

回复 使用道具 举报
陈浩 黑马帝 2011-11-16 20:01:34
7#
'H'在字符集里对应的是72,'a'在字符集里对应的是97,想要输出Ha,只需强制转换就行了,或者输出时用双引号就行了

评分

参与人数 1技术分 +1 收起 理由
宁超 + 1

查看全部评分

回复 使用道具 举报
杨杰 黑马帝 2011-11-16 20:37:28
8#
因为是单引号括着,所以打印的是他们的ASCII码值。

评分

参与人数 1技术分 +1 收起 理由
宁超 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马