Does the Java &= operator apply & or &&?

Viewed 142801

Assuming

boolean a = false;

I was wondering if doing:

a &= b; 

is equivalent to

a = a && b; //logical AND, a is false hence b is not evaluated.

or on the other hand it means

a = a & b; //Bitwise AND. Both a and b are evaluated.
5 Answers

Here's a simple way to test it:

public class OperatorTest {     
    public static void main(String[] args) {
        boolean a = false;
        a &= b();
    }

    private static boolean b() {
        System.out.println("b() was called");
        return true;
    }
}

The output is b() was called, therefore the right-hand operand is evaluated.

So, as already mentioned by others, a &= b is the same as a = a & b.

Related