Logical Operators


if (n % 2 == 0) {

System.out.println(n + "is divisble by 2");

else if (n % 3 == 0) {

System.out.println(n + "is not divisble by 2 AND" + n + "is divisible by 3.");

. . .

If n = 15 then we get the following line printed:

15 is not divisble by 2 AND 15 is divisible by 3.

What if we want to print out a line only when n is not divisible by 2 but is divisible by 3?

We can use the logical operator, AND, to express this condition:

if ( (n % 2 != 0) && (n % 3 == 0) )

System.out.println(n + "is not divisble by 2 AND is divisible by 3.");

(gender == male) || ( (age > 65) && (gender == female) )

evaluates to true when either gender is male OR (gender is female AND age > 65).

(Is the test for gender being female necessary?)

 

Short-Circuit Evaluation

(gender == male) || ( (++age > 65) && (gender == female) )

The variable age is not incremented when gender == male is true.

(gender == male) | ( (++age > 65) && (gender == female) )

Which do you prefer:

! (grade == sentinelValue)

or

grade != sentinelValue

Exercise:

Let i = 1, j = 2,and k = 3. Consider the following condition.

i++ == 1 | (j++ == 2 || k++ == 3)

What are the values of i, j, and k after the condition above is evaluated?

Write a short Java applet to verify the correctness of your answer.