Alex Rivera | Logout

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

Asked 2010-10-11T14:24:22.513
179

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.
Edit
Report

1 Answer

54

see 15.22.2 of the JLS. For boolean operands, the & operator is boolean, not bitwise. The only difference between && and & for boolean operands is that for && it is short circuited (meaning that the second operand isn't evaluated if the first operand evaluates to false).

So in your case, if b is a primitive, a = a && b, a = a & b, and a &= b all do the same thing.

answered 2010-10-11T16:15:02.683

Your Answer