Boolean Expressions

This chapter introduces relational and logical operators. It also discusses the use of these operators to write Boolean expressions.

6. Short-circuit Evaluation


The whole expression will be false, because && combines two falses into false.

flour >= 4 && sugar >= 2
 ---------     --------
   false   &&    false

Short-circuit Evaluation

In fact, as soon as the first false is detected, you know that the entire expression must be false, because false AND anything is false.

flour >= 4 && sugar >= 2
--------- ------------
false && does not matter

As an optimization, Java only evaluates an expression as far as needed to determine the value of the entire expression. When the program runs, as soon as flour >= 4 is found to be false, the entire expression is known to be false, and the false branch of the if statement is taken. This type of optimization is called short-circuit evaluation. (See the chapter on this topic.)

Here is a full Java version of the cookie program. Compile and run the program with various values of flour and sugar to check that you understand how AND works.

// Cookie Ingredients Checker
import java.util.Scanner;
public class CookieChecker
public static void main (String[] args)
// Declare a Scanner and two integer variables
Scanner scan = new Scanner( );
int sugar, flour; // get the number of cups of flour
System.out.println("How much flour do you have?");
flour = scan.nextInt(); // get the number of cups of sugar
System.out.println("How much sugar do you have?");
sugar = scan.nextInt(); // check that there are enough of both ingredients

if ( flour >= 4 && sugar >= 2 )
System.out.println("Enough for cookies!" );
System.out.println("sorry...." );

Question 6:

Try the program with exactly enough flour and sugar. Can you bake cookies?