java系统。出来println(“abc”+3+2);为什么输出是abc32而不是abc5?
Possible Duplicate:
Difference between int and int received by ParseInt in java
System.out.println("abc"+3+2); // Output: abc32
System.out.println(3+2+"abc"); //Output: 5abc
原因是什么
你可以在下面搜索框中键入要查询的问题!
Possible Duplicate:
Difference between int and int received by ParseInt in java
System.out.println("abc"+3+2); // Output: abc32
System.out.println(3+2+"abc"); //Output: 5abc
原因是什么
# 1 楼答案
将3转换为字符串
然后
也将2转换为字符串
要获得数值结果,请执行以下操作:
# 2 楼答案
表达式从左到右求值(在应用运算符优先顺序之后)。如果运算符+的参数之一是字符串,则结果是将int解析为字符串的串联字符串
在第一种情况下:
在第二种情况下:
# 3 楼答案
因为您编写的“+”运算符表示“字符串连接”,而不是“添加”,因为它是在左上下文为字符串值的情况下找到的。在这种情况下,您可以通过隐式ToString获得正确值的自由强制
你可能会通过写作得到你想要的
“3”没有左上下文,所以它只是一个整数;下面的“+”是左上下文整数,因此它被解释为实加法运算符,因此(3+2)得到5。该结果是在左上下文为“+”的情况下找到的,因此它被强制为一个字符串并连接起来生成“abc5”
# 4 楼答案
在第一种情况下,3和2被视为字符串,然后分别连接到
abc
在第二种情况下,计算和
3+2
,然后将其连接到abc
# 5 楼答案
运算符具有相同优先级的表达式的求值是从左到右的。在这种情况下,表达式中的不同顺序导致运算符+表示:
toString()
)两个整数之间的和
“abc”+3+2=(“abc”+3+2)=(“abc3”+2)=“abc32”
3+2+“abc”=((3+2)+“abc”)=(5+“abc”)=“5abc”