我注意到这样的事情:
String s = 1 + 2 + " whatsgoingon " + 3 + 4 + 5;
System.out.println(s);
返回:
3 whatsgoingon 345
有人可以解释这种行为吗?为什么前两个数字加在一起然后转换为字符串,但最后三个数字转换为字符串然后连接。
答案 0 :(得分:8)
因为在表达式中:
1 + 2 + " whatsgoingon " + 3 + 4 + 5
从左到右评估为
(((((1 + 2) + " whatsgoingon ") + 3) + 4) + 5)
所以第一个' +'运算符被视为算术运算符,因为在那一刻还没有涉及到字符串,在连接字符串之后,然后' +'运算符被视为字符串连接操作,因此数字被强制转换为字符串。
如果你想在算术上添加最后三个整数,请将它们放在括号中:
1 + 2 + " whatsgoingon " + (3 + 4 + 5)