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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 0_TNT_0 中级黑马   /  2014-12-10 23:36  /  1530 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

请分别写出下列语句的输出结果:

System.out.println(1+2+"HH"+3+4);
System.out.println('a'+1+4+"rr"+3+'b');
System.out.println('d'+'c'+"HH"+'d'+'c');
System.out.println(1+2+'a'+3+4);

最好有大神能够总结出一些规律来。。。

6 个回复

倒序浏览
3HH34
102rr3b
199HHdc
107
计算由前向右
char,short,byte,在运算过程中会进行类型提升为int。结果为int类型。
遇到字符串就全部换成字符串
回复 使用道具 举报
本帖最后由 提米特 于 2014-12-11 18:21 编辑

System.out.println(1+2+"HH"+3+4);----------------3HH34
System.out.println('a'+1+4+"rr"+3+'b');---------------102rr3b
System.out.println('d'+'c'+"HH"+'d'+'c');--------------199HHdc
System.out.println(1+2+'a'+3+4);-----------------107

我自己测试了一下,实际情况是: 一步一步来第一条:首先,1+2=3,碰到“HH”后,提升为字符串类型,后面的一并认为是字符串类型输出
第二条:首先分析'a'+1,a会自动类型提升为整型,因此相当于97+1+4=102,然后碰到了字符串,所以相当于字符串组合到一起再输出
第三条:首先'd'+'c',在字符型中计算没有任何意义,所以是类型提升为整形计算出结果为199,碰到了字符串,因此后面变成字符串的组合
第四条:首先是1+2=3,然后’a‘在这里会自动提升类型为整型,相当于它的二进制表达形式转化为10进制,即97,然后3+97+3+4=107

总结就是,一步一步算,碰到字符串就形成字符串。字符型在做加法时会自动类型提升为整形,相当于它的二进制表达形式对应的10进制。
回复 使用道具 举报
哪里的面试题。。。
回复 使用道具 举报
3HH34        a14rr3b     dcHHdc    3a34
回复 使用道具 举报
3HH34  102rr3b  199HHdc  107
回复 使用道具 举报
System.out.println();
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马