| Java FAQ | ||
| JSP FAQ | ||
| Servlet FAQ | ||
|
Advertisement
|
What is the difference between the '&' and the '&&' operators?The & and | operators are defined for two integer operands or two boolean operands. The && and || operators are not defined for anything but two boolean operands. For all other operand types and combinations, a compile-time error shall occur. The Integer Type OperandsThe & operator is the "bit-wise AND" operator and | is the "bit-wise OR" operator. This permits you to manipulate individual bits in a number. The Boolean Type OperandsThe && is the "conditional AND" operator and || is the "conditional OR" operator. The && and || operators are evaluated in short circuit fashion. This means that when you have an expression like: e1 && e2 if expression e1 evaluates to be false, then the value of the expression e2 is not calculated. Similarly, if e1 evaluates to be true, then the value of e1 || e2 is automatically true, and therefore e2 is not evaluated. For example, in the expression x != 0 && 1 / x > x + y // no division by 0 the second part is never evaluated if x equals zero. Thus, 1/x is not computed if x is zero, and no divide-by-zero error can occur. The & the (unconditional) "logical AND" operator and | is the (unconditional)"logical OR" operator. When applied to boolean values, the & and | operators yield a boolean value. These operators are similar to the && and || operators, except that the & and | operators are not evaluated in "short-circuit" fashion. That is, both operands are first evaluated before computing the result. For example
class Program {
public static void main(String [] args){
boolean[] b = new boolean[3];
int count = 0;
b[0] = false;
b[1] = false;
b[2] = false;
//The first operand evaluates to false,
//the evaluation of the second operand is skipped.
//Therefor, the count does not add 1.
if (false && b[++count]) {
System.out.println("True -- 1");
}
else {
System.out.println("False -- 1");
}
System.out.println(count);
//Both operands are evaluated. Therefor, the count adds 1
if (false & b[++count]) {
System.out.println("True -- 2");
}
else {
System.out.println("False -- 2");
}
System.out.println(count);
}
}
The output result is False -- 1 0 False -- 2 1
|