Java Switch Statement

Switch statement in Java is for decision making. Unlike if-then and if-then-else statements, the switch statement can have a number of possible execution paths.


The general form of switch statement is:

switch (expression) { 
    case value1: 
        // statement sequence 
    case value2: 
        // statement sequence 
    ... case valueN: 
        // statement sequence 
        // default statement sequence 

The expression must be of type byte, short, int, or char; each of the values specified in the case statements must be of a type compatible with the expression.

Note: From Java 7, String is also supported in expression.

Flow Chart

Figure: Switch Statement


// An example to illustrate switch statement
class Switch {
    public static void main(String args[]) {
        int month = 4;
        String season;
        switch (month) {
            case 12:
            case 1:
            case 2:
                season = "Winter";
            case 3:
            case 4:
            case 5:
                season = "Spring";

            case 6:
            case 7:
            case 8:
                season = "Summer";
            case 9:
            case 10:
            case 11:
                season = "Autumn";
                season = "Bogus Month";
        System.out.println("April is in the " + season + ".");

The ouput of the program is:

April is in the Spring.

Here, expression month in switch statement matches to case with value 4, so season is assigned value Spring.

Note: three important features of the switch statement to be noted:

  1. The switch differs from the if in that switch can only test for equality, whereas if can evaluate any type of Boolean expression. That is, the switch looks only for a match between the value of the expression and one of its case constants.
  2. No two case constants in the same switch can have identical values. Of course, a switch statement and an enclosing outer switch can have case constants in common.
  3. A switch statement is usually more efficient than a set of nested ifs.