为什么整数与数字串联会产生字符串?

fro*_*eas 3 java casting

我正在进行AP Comp Sci练习测试,发现以下问题:

什么是输出:

System.out.println("1" + new Integer(2) + 3);
Run Code Online (Sandbox Code Playgroud)

答案是

123,
Run Code Online (Sandbox Code Playgroud)

我感到很困惑,因为new Integer(2)它没有被转换为字符串,因此new Integer(2) + 3如果两个部分都是整数,为什么java编译器认为该语句是字符串连接?

Ism*_*awi 9

加法是左联的.a + b + c ==(a + b)+ c

  • 所以它首先评估"1"+新的整数(2),它认为这意味着字符串连接(制作)"12"然后"12"+ 3它再次假定为串联制作"123"? (2认同)