System.out.println(1+2+"3");
System.out.println("1"+2+3);
输出: -
33
123
第一种情况被理解,但第二种情况不明确。
答案 0 :(得分:4)
如果我们在字符串中进行+操作,那么它将作为追加(连接)。
所以在你的第一个案例中1+2+"3"
... 1+2 =3
但是当它执行3+"3"
时,java将3连接到字符串3中,即33。
并在第二个示例中"1"+2+3
... 2附加到字符串“1”中,结果为12
,然后"12" + 3
,因此结果为= 123
。
答案 1 :(得分:3)
如果左边部分是String
,那么它将对+
(串联)的字符串调用append
操作,而在数字上它是求和
答案 2 :(得分:2)
+
是正确联想的; "1"+2
会产生"12"
,而添加3
会产生"123"
。
答案 3 :(得分:1)
评估从左到右进行。第一次满足字符串时,所有后续值都会在添加到表达式之前隐式转换为字符串。因此,在第一种情况下,您有1 + 2 = 3,然后满足一个字符串,并将2附加到字符串“3”。第二种情况 - 符合字符串“1”,然后将每个int转换为字符串,然后再添加到到目前为止累积的结果中。
答案 4 :(得分:0)
如果向字符串添加任何内容,它将是一个字符串,因此1 +“2”(字符串)为“12”(字符串)。 如果你继续添加到字符串,你将继续获得字符串“12”(字符串)+ 33是“1233”(字符串)。 我认为这更能证明你的问题。
由于
Kapil Garg
答案 5 :(得分:0)
好吧,通常会从右边扫描数学表达式。
在第一种情况下,如果你从右边扫描,你得到两个int操作数( 1 和 2 )并且你添加它并且它变为<强> 3 作为int当你进一步向前移动时你发现一个操作数(“3”)是字符串,所以你连接它并且它出来是 33 。
在第二种情况下,如果你从右边扫描,你得到一个字符串操作数(“1”),然后用 2 连接它,所以它出来了将 12 作为字符串,当你继续前进时,你会找到int( 2 ),但这次你的第一个操作数( 12 )是字符串,所以再一次你连接它,它出来是 123 。
答案 6 :(得分:0)
在第一种情况下1 + 2 +“3” 首先添加1 + 2并附加字符串,因此输出为33。
但在第二种情况下:“1”+ 2 + 3 第一个字符串附加2,因此操作“1”+2是字符串,自动最后是(“12”+3)也是字符串。
即: 第一例: 数字输出+字符串=字符串
第二个案例: string + numeric = string
正在使用较低/包装数据类型转换为父类,最终输出将是父类。