使用OR运算符的布尔赋值

时间:2017-11-21 12:44:19

标签: java

假设我有以下代码:

    int j = 0;
    boolean x = true, y = false, z;
    z = (x || ((j++) == 0));
    z = (y || ((j += 2) > 0));

j的最终值将为 2

在第一次分配中,

z将具有 true false ,这是真的

z在第二次分配中,将有 false true ,这是真的

为什么最终值为2? 有真有效之间有什么区别?假和假||是真的吗?

我不是在询问“短路”运营商,

我只需要对assign运算符进行更多解释,以及第一个j如何不改变 j 的值,而第二个j的值是如此。

1 个答案:

答案 0 :(得分:3)

||操作员从左到右验证。

在你的情况下, 第一个条件true || false,一旦||找到true就不必检查其他条件,因为无论如何结果都是真的。这就是x||((j++)==0)一旦x = true的原因,如果想到,则跳过下一个语句(j++==0)

第二个条件false || true,一旦||找到false必须检查以查找下一个条件。

参考> https://docs.oracle.com/javase/tutorial/java/nutsandbolts/op2.html

  

&&和||运算符执行条件AND和条件OR   对两个布尔表达式的操作。这些运营商展出   “短路”行为,这意味着第二个操作数是   仅在需要时进行评估。