运行以下代码后,输出将打印:false
。所以我假设在i1==i2
之前评估了b1 = i1
。但订单是不是从左到右?
public static void main(String[] args) {
boolean b1;
int i1 = 2;
int i2 = 3;
if(b1 = i1==i2) {
System.out.println("true");
} else {
System.out.println("false");
}
}
答案 0 :(得分:8)
检查运营商优先顺序: http://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html
在= 之前评估==
答案 1 :(得分:2)
答案 2 :(得分:0)
最简单的解释是:
在处理分配时,评估等边的右侧侧,然后将其分配到左侧侧。
当然,通常布尔表达式中的赋值会限制可读性。更好的做法是在if之前分配b1 = i1 == i2
并在if (b1) {...}
中放置if (i1 == i2) {...}
或完全摆脱b1
答案 3 :(得分:0)
不,它是根据operator precedence评估的,==
将=
放在{{1}}之前。
关于“从左到右”的声明'适用于二元运算符的操作数:左手操作数在右手操作数之前计算。也是参数列表。