Switch Statements in Java (original) (raw)

Last Updated : 11 Apr, 2025

The switch statement in Java is a multi-way branch statement. In simple words, the Java switch statement executes one statement from multiple conditions.

It is an alternative to an **if-else-if ladder statement. It provides an easy way to dispatch execution to different parts of the code based on the value of the expression. The expression can be of type byte, short, char, int, long, enums, String, or wrapper classes (Integer, Short, Byte, Long).

**Example: Java program demonstrates how to use the switch statement.

Java `

// Java program demonstrates how to use switch-case

public class Geeks { public static void main(String[] args) {

    // Replace with desired size (1, 2, 3, 4, or 5)
    int size = 2; 

    switch (size) {
        case 1:
            System.out.println("Extra Small");
            break;
        case 2:
            System.out.println("Small");
            break;
        case 3:
            System.out.println("Medium");
            break;
        case 4:
            System.out.println("Large");
            break;
        case 5:
            System.out.println("Extra Large");
            break;
        default:
            System.out.println("Invalid size number");
    }
}

}

`

Syntax of Java Switch Statement

switch(expression)
{
case value1 :
// Statements
break; // break is optional

case value2 :
// Statements
break; // break is optional
....
....
....
default :
// default Statement
}

Some Important Rules for Java Switch Statements

**Note:

Flowchart of Switch-Case Statement

This flowchart shows the control flow and working of switch statements:

Lightbox

**Note: Java switch statement is a fall through statement that means it executes all statements if break keyword is not used, so it is highly essential to use break keyword inside each case.

**Example: Another example of switch statement in Java to print the day according to their equivalent number.

Java `

// Java program to Demonstrate Switch Case // with Primitive(int) Data Type public class Geeks {

// Main driver method
public static void main(String[] args)
{
    int day = 5;
    String dayString;

    // Switch statement with int data type
    switch (day) {

    // Case
    case 1:
        dayString = "Monday";
        break;

    // Case
    case 2:
        dayString = "Tuesday";
        break;

        // Case
    case 3:
        dayString = "Wednesday";
        break;

        // Case
    case 4:
        dayString = "Thursday";
        break;

    // Case
    case 5:
        dayString = "Friday";
        break;

        // Case
    case 6:
        dayString = "Saturday";
        break;

        // Case
    case 7:
        dayString = "Sunday";
        break;

    // Default case
    default:
        dayString = "Invalid day";
    }
    System.out.println(dayString);
}

}

`

**Explanation: Consider the following Java program, it declares an int named day whose value represents a day(1-7). The code displays the name of the day, based on the value of the day, using the switch statement.

Break in Switch Case Statements

A break statement is optional. If we omit the break, execution will continue into the next case.

It is sometimes desirable to have multiple cases without "break" statements between them. For instance, let us consider the updated version of the above program, it also displays whether a day is a weekday or a weekend day.

**Example: Switch statement program without multiple breaks:

Java `

// Java Program to Demonstrate Switch Case // with Multiple Cases Without Break Statements

// Class public class Geeks {

// main driver method
public static void main(String[] args)
{
    int day = 2;
    String dayType;
    String dayString;

    // Switch case
    switch (day) {

    // Case
    case 1:
        dayString = "Monday";
        break;

    // Case
    case 2:
        dayString = "Tuesday";
        break;

        // Case
    case 3:
        dayString = "Wednesday";
        break;
    case 4:
        dayString = "Thursday";
        break;
    case 5:
        dayString = "Friday";
        break;
    case 6:
        dayString = "Saturday";
        break;
    case 7:
        dayString = "Sunday";
        break;
    default:
        dayString = "Invalid day";
    }

    switch (day) {
        // Multiple cases without break statements

    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
        dayType = "Weekday";
        break;
    case 6:
    case 7:
        dayType = "Weekend";
        break;

    default:
        dayType = "Invalid daytype";
    }

    System.out.println(dayString + " is a " + dayType);
}

}

`

Output

Tuesday is a Weekday

Java Nested Switch Statements

We can use a switch as part of the statement sequence of an outer switch. This is called a nested switch. Since a switch statement defines its block, no conflicts arise between the case constants in the inner switch and those in the outer switch.

**Example:

Java `

// Java Program to Demonstrate // Nested Switch Case Statement public class Geeks {

// Main driver method
public static void main(String[] args)
{
    // Custom input string
    String Branch = "CSE";
    int year = 2;

    // Switch case
    switch (year) {

    // Case
    case 1:
        System.out.println(
            "elective courses : Advance english, Algebra");

        // Break statement to hault execution here
        // itself if case is matched
        break;

        // Case
    case 2:

        // Switch inside a switch
        // Nested Switch
        switch (Branch) {

        // Nested case
        case "CSE":
        case "CCE":
            System.out.println(
                "elective courses : Machine Learning, Big Data");
            break;

        // Case
        case "ECE":
            System.out.println(
                "elective courses : Antenna Engineering");
            break;

            // default case
            // It will execute if above cases does not
            // execute
        default:

            // Print statement
            System.out.println(
                "Elective courses : Optimization");
        }
    }
}

}

`

Output

elective courses : Machine Learning, Big Data

Java Enum in Switch Statement

Enums in Java are a powerful feature used to represent a fixed set of constants. They can be used in switch statements for better type safety and readability.

Example:

Java `

// Java Program to Illustrate Use of Enum // in Switch Statement public class Geeks {

// Enum
public enum Day { Sun, Mon, Tue, Wed, Thu, Fri, Sat }

// Main driver method
public static void main(String args[])
{

    // Enum
    Day[] DayNow = Day.values();

    // Iterating using for each loop
    for (Day Now : DayNow) {

        // Switch case
        switch (Now) {

        // Case 1
        case Sun:
            System.out.println("Sunday");

            // break statement that hault further
            // execution once case is satisfied
            break;

        // Case 2
        case Mon:
            System.out.println("Monday");
            break;

        // Case 3
        case Tue:
            System.out.println("Tuesday");
            break;

        // Case 4
        case Wed:
            System.out.println("Wednesday");
            break;

        // Case 5
        case Thu:
            System.out.println("Thursday");
            break;

        // Case 6
        case Fri:
            System.out.println("Friday");
            break;

        // Case 7
        case Sat:
            System.out.println("Saturday");
        }
    }
}

}

`

Output

Sunday Monday Tuesday Wednesday Thursday Friday Saturday

Default Statement in Java Switch Case

The default case in a switch statement specifies the code to run if no other case matches. It can be placed at any position in the switch block but is commonly placed at the end.

**Example 1: Writing default in the middle of switch statements:

Java `

import java.io.*;

class Geeks { public static void main (String[] args) { int i=2; switch(i){ default: System.out.println("Default"); case 1: System.out.println(1); break; case 2: System.out.println(2); case 3: System.out.println(3);

    }
}

}

`

**Example 2: Writing Default at the Beginning of Switch Statements

Java `

import java.io.*;

class Geeks { public static void main(String[] args) { int i = 5; switch (i) { default: System.out.println("Default"); case 1: System.out.println(1); break; case 2: System.out.println(2); case 3: System.out.println(3); } } }

`

Case label variations

Case labels and switch arguments can be constant expressions. The switch argument can be a variable expression but the case labels must be constant expressions.

**Example: Using Variable in Switch Argument

Java `

import java.io.*;

class Geeks { public static void main(String[] args) { int x = 2; switch (x + 1) { case 1: System.out.println(1); break; case 1 + 1: System.out.println(2); break; case 2 + 1: System.out.println(3); break; default: System.out.println("Default"); } } }

`

Example 2: Case Label Cannot Be Variable

A case label cannot be a variable or variable expression. It must be a constant expression.

Java `

import java.io.*;

class Geeks { public static void main(String[] args) { int x = 2; int y = 1; switch (x) { case 1: System.out.println(1); break; case 2: System.out.println(2); break; case x + y: System.out.println(3); break; default: System.out.println("Default"); } } }

`

./GFG.java:16: error: constant expression required
case x+y:
^
1 error

Java Wrapper in Switch Statements

Java allows the use of wrapper classes (Integer, Short, Byte, Long, and Character) in switch statements. This provides flexibility when dealing with primitive data types and their corresponding wrapper types.

**Example 1:

Java `

public class Geeks {

public static void main(String[] args) {
    Integer age = 25;

    switch (age) { // Extract primitive value for switch
        case 25:
            System.out.println("You are 25.");
            break;
        case 30:
            System.out.println("You are 30.");
            break;
        default:
            System.out.println("Age not matched.");
    }
}

}

`

**Note: Regardless of its placement, the default case only gets executed if none of the other case conditions are met. So, putting it at the beginning, middle, or end doesn't change the core logic (unless you're using a less common technique called fall-through).

**Example 2: Using Character Wrapper

Java `

public class Geeks { public static void main(String[] args) { Character ch = 'c';

    switch (ch) { // Extract primitive value for switch
        case 'a':
            System.out.println("You are a.");
            break;
        case 'c':
            System.out.println("You are c.");
            break;
        default:
            System.out.println("Character not matched.");
    }
}

}

`

Exercise

To practice Java switch statements you can visit the page: Java Switch Case statement Practice