黑马程序员技术交流社区

标题: Java 基础 输出语句 的面试题 [打印本页]

作者: 0_TNT_0    时间: 2014-12-10 23:36
标题: Java 基础 输出语句 的面试题
请分别写出下列语句的输出结果:

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);

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

作者: 史云龙    时间: 2014-12-10 23:39
3HH34
102rr3b
199HHdc
107
计算由前向右
char,short,byte,在运算过程中会进行类型提升为int。结果为int类型。
遇到字符串就全部换成字符串
作者: 提米特    时间: 2014-12-11 18:11
本帖最后由 提米特 于 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进制。

作者: java小兵    时间: 2014-12-11 19:01
哪里的面试题。。。

作者: 蛋卷    时间: 2014-12-11 20:02
3HH34        a14rr3b     dcHHdc    3a34
作者: Hello_Boys    时间: 2014-12-13 14:01
3HH34  102rr3b  199HHdc  107
作者: lgc黑马    时间: 2014-12-13 21:19
System.out.println();




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