我注意到这样的事情:
String s = 1 + 2 + " whatsgoingon " + 3 + 4 + 5;
System.out.println(s);
Run Code Online (Sandbox Code Playgroud)
返回:
3 whatsgoingon 345
有人可以解释这种行为吗?为什么前两个数字加在一起然后转换为字符串,但最后三个数字转换为字符串然后连接.
因为在表达式中:
1 + 2 + " whatsgoingon " + 3 + 4 + 5
Run Code Online (Sandbox Code Playgroud)
从左到右评估为
(((((1 + 2) + " whatsgoingon ") + 3) + 4) + 5)
Run Code Online (Sandbox Code Playgroud)
所以第一个'+'运算符被视为算术运算符,因为在那一刻还没有涉及到任何字符串,在连接字符串之后,'+'运算符被视为字符串连接操作,因此数字被类型化为字符串.
如果要在算术上也添加最后三个整数,请将它们放在括号中:
1 + 2 + " whatsgoingon " + (3 + 4 + 5)
Run Code Online (Sandbox Code Playgroud)
        |   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           112 次  |  
        
|   最近记录:  |