Java:将int添加到int到int - 奇怪的行为

时间:2014-04-20 19:16:06

标签: java

我注意到这样的事情:

String s = 1 + 2 + " whatsgoingon " + 3 + 4 + 5;
System.out.println(s);

返回: 3 whatsgoingon 345

有人可以解释这种行为吗?为什么前两个数字加在一起然后转换为字符串,但最后三个数字转换为字符串然后连接。

1 个答案:

答案 0 :(得分:8)

因为在表达式中:

1 + 2 + " whatsgoingon " + 3 + 4 + 5

从左到右评估为

(((((1 + 2) + " whatsgoingon ") + 3) + 4) + 5)

所以第一个' +'运算符被视为算术运算符,因为在那一刻还没有涉及到字符串,在连接字符串之后,然后' +'运算符被视为字符串连接操作,因此数字被强制转换为字符串。

如果你想在算术上添加最后三个整数,请将它们放在括号中:

1 + 2 + " whatsgoingon " + (3 + 4 + 5)