代码段1:
Long [] a1 = {3L,4L,5L};
System.out.print(a1[0].toString() + a1[1] + a1[2]);
//输出:345
代码段2:
Long [] a1 = {3L,4L,5L};
System.out.print(a1[0] + a1[1] + a1[2] + " ");
//输出:12
在Snippet 1中,我们有' +'用作加法因此我们有3 + 4 + 5 = 12 但是,在Snippet 2中使用相同的逻辑,为什么我们没有37而不是345
答案 0 :(得分:3)
传递给print
的表达式从左到右进行评估。如果print
语句中的第一个表达式是String,则+
运算符将被视为字符串连接。如果第一个表达式是数字,则+
运算符将被视为加法。
答案 1 :(得分:1)
Java评估表达式从左到右
在您的情况下System.out.print(a1[0] + a1[1] + a1[2] + " ")
它首先评估""
它是字符串然后它连续""
并带有a1[2]
值等等......这就是为什么你得到那个输出{ {1}} 它不是添加它是字符串的连接。