为什么在这些情况下输出会有所不同?
int x=20,y=10;
System.out.println("printing: " + x + y); ==> 打印:2010
System.out.println("printing: " + x * y); ==> 打印:200
为什么不是第一个输出30?它与运算符优先级有关吗?像第一次"打印"和x连接,然后这个结果字符串和y连接?我对么?
Kum*_*tra 21
它的BODMAS规则
我在下面从高到低显示优先顺序:
B - Bracket
O - Power
DM - Division and Multiplication
AS - Addition and Substraction
Run Code Online (Sandbox Code Playgroud)
如果运算符具有相同的优先级,则此方法有效Left to Right
现在
System.out.println("printing: " + x + y);
"printing: " :是一个字符串"
"+" :是Java中唯一一个将Number连接到String的重载运算符.由于我们在这里有2个"+"运算符,并且x + y在"printing:" +已经发生之后下降,因此它将x和y视为字符串.
所以产量是2010年.
System.out.println("printing: " + x * y);
在这里
"*":优先级高于 +
那么它的x*y 第一个呢printing: +
所以输出是200
如果你想在第一种情况下输出200作为这样做:
System.out.println("printing: "+ (x+y));
Run Code Online (Sandbox Code Playgroud)
该的优先顺序 Bracket是高到Addition.
基本数学告诉您每次添加数字.
所以"printing: " + x首先计算.因为它string + int的结果是"printing: 20".然后添加y这样"printing: 20" + y等于"printing: 2010".
在第二种情况下,乘法是先验的.所以首先x * y计算并等于200.然后"printing: " + 200等于"printing: 200".