为什么在这些情况下输出不同?
int x=20,y=10;
System.out.println("printing: " + x + y); ==> 印刷:2010年
System.out.println("printing: " + x + y);
System.out.println("printing: " + x * y); ==> 打印:200
System.out.println("printing: " + x * y);
为什么第一个输出不是30?它与运算符优先级有关吗?就像首先将“ printing”和x连接在一起,然后将结果字符串和y连接在一起?我对么?
它的BODMAS规则
BODMAS
我在下面显示从高到低的优先顺序:
B - Bracket O - Power DM - Division and Multiplication AS - Addition and Substraction
**如果运算符具有相同的优先级 ,* 则 此方法起作用Left to Right *
Left to Right
现在
"printing: " :是字符串”
"printing: "
"+" :是Java中唯一将Number连接到String的重载运算符。因为我们这里有2个“ +”运算符,并且x + y落在"printing:" +已经发生的位置之后,它也将x和y视为字符串。
"+"
"printing:" +
因此输出为 2010。
在这里
"*":优先级高于 +
"*"
+
因此,它的x*y 第一 则printing: +
x*y
printing: +
所以输出是 200
如果要在第一种情况下将200作为输出,请执行以下操作:
System.out.println("printing: "+ (x+y));
该 的优先顺序 Bracket是 高 到Addition。
Bracket
Addition