&安培;&安培;逻辑运算符功能

时间:2017-12-30 16:01:59

标签: java operators

class BoolArray  {
    boolean [] b = new boolean[3];

    int count = 0;

    void set(int i) 
    {
        b[i] = true;
        ++count;
    }

    public static void main(String [] args) 
    {
        BoolArray ba = new BoolArray();
        ba.set(0);
        ba.set(2);
        ba.test();
    }

    void test() 
    {
        if ( b[0] && b[1] | b[2] )
           count++;
        if ( b[1] && b[(++count - 2)] )
           count += 7;
        System.out.println("count = " + count);
    }
}

在所有这些情况下,

if ( b[0] && b[1] | b[2] )

if ( b[1] && b[0] || b[2] )

if ( b[1] && b[0] || b[2] )

为什么'&&'的短路逻辑因为代码到达if块内部而无法正常工作?

请解释逻辑运算符的执行顺序。

1 个答案:

答案 0 :(得分:0)

  

为什么'&&'的短路逻辑不能像代码一样工作   到达if区域内?

短路逻辑正常工作。在您到达第二个count语句之前,if为3,并且它正确地处理++count并将其保留为3。

  

请解释逻辑运算符的执行顺序。

The order is

按位AND&
按位异或OR ^
按位包含OR |
逻辑AND&&
逻辑OR ||