=和==首先评估?

时间:2015-01-03 22:23:41

标签: java

运行以下代码后,输出将打印: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");
    }
}

4 个答案:

答案 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}}之前。

关于“从左到右”的声明'适用于二元运算符的操作数:左手操作数在右手操作数之前计算。也是参数列表。