Codectionary / Developer documentation / Java

switch Statement

The switch statement compares a single value against multiple possible cases, offering a cleaner alternative to a long else if chain when checking one variable against many discrete values. Traditional switch statements require a break after each case to prevent 'fall-through' into the next case. Java 14+ introduced a modernized switch expression syntax using arrows (->) that eliminates fall-through and can directly return a value.

Syntax

switch (value) {\n  case option: // code\n    break;\n  default: // code\n}

Examples

Traditional switch Statement

The classic switch syntax, requiring break to prevent fall-through.

int day = 3;
String dayName;

switch (day) {
    case 1:
        dayName = "Monday";
        break;
    case 2:
        dayName = "Tuesday";
        break;
    case 3:
        dayName = "Wednesday";
        break;
    default:
        dayName = "Unknown";
}

System.out.println(dayName);  // Wednesday

Grouping Cases

Multiple case labels can share the same code block by stacking them without a break in between.

int month = 4;
String season;

switch (month) {
    case 12:
    case 1:
    case 2:
        season = "Winter";
        break;
    case 3:
    case 4:
    case 5:
        season = "Spring";
        break;
    default:
        season = "Other";
}

System.out.println(season);  // Spring

Modern switch Expression (Java 14+)

Using arrow syntax to return a value directly, with no fall-through and no break needed.

int day = 6;

String dayType = switch (day) {
    case 1, 2, 3, 4, 5 -> "Weekday";
    case 6, 7 -> "Weekend";
    default -> "Invalid day";
};

System.out.println(dayType);  // Weekend

Best practices

  • Never forget the break statement in a traditional switch - a missing break causes execution to 'fall through' into the next case
  • Always include a default case to handle unexpected values gracefully
  • Prefer the modern arrow-based switch expression (Java 14+) when your target version supports it - it removes the fall-through pitfall entirely
  • Use switch over a long else if chain when comparing one variable against several specific discrete values

At a glance

Purpose
General-purpose application development
File extension
.java
Runs in
Java Virtual Machine
Usually used with
JDK and Java libraries

Specifications & further reading

Related Java documentation

Variables & Primitive Data Types
Java is a statically-typed language, meaning every variable must be declared with an explicit type before use, and that type cannot change afterward. Java has eight primitive types - byte, short, int, long, float, double, char, and boolean - which store simple values directly rather than references, making them fast and memory-efficient. Anything beyond primitives (String, arrays, custom classes) is a reference type instead.
System.out.println / print / printf
System.out is Java's standard output stream, and it exposes three main methods for writing text to the console. println() prints its argument followed by a newline, print() prints without adding a newline, and printf() gives C-style formatted output using format specifiers like %d, %s, and %.2f for precise control over how values are displayed.
Comments & Javadoc
Java supports single-line comments with //, multi-line comments with /* */, and a special documentation format called Javadoc, written as /** */. Javadoc comments support tags like @param, @return, and @throws, and can be processed by the javadoc tool to automatically generate HTML API documentation - the same format used for Java's own official standard library docs.
Arithmetic & Assignment Operators
Java provides the standard arithmetic operators for numeric computation: +, -, *, / for division, and % for the remainder (modulus). It also has compound assignment operators (+=, -=, etc.) that combine an operation with assignment, along with increment (++) and decrement (--) operators in both prefix and postfix forms, which subtly differ in when the value is updated relative to being used.