Wann verwende ich “if” und wann “switch”?

Grundsätzlich gilt: Jedes switch-case Statement kann auf ein if-else Statement abgebildet werden, aber nicht jedes if-else Statement kann durch ein switch-case Statement ausgedrückt werden.

Das switch-case Statement wird verwendet, um eine Variable mit mehreren Konstanten zu vergleichen. Das Ergebnis dieses Vergleichs dient zur Auswahl genau einer Option. Die Variable wird dem switch() als Argument übergeben. Die Konstanten sind den einzelnen Fällen (case) zugeordnet.

Das if-else Statement wird verwendet, wenn die Verzweigung nur wenige Optionen umfasst oder wenn beliebige boolsche Ausdrücke als Bedingung verwendet werden. Soll in einem Programm beispielsweise geprüft werden, ob ein Wert in einem bestimmten Bereich liegt, implementiert man einen if-else Konstrukt:

static String temperaturAuswertung(int temperature) {
    if (temperature > 30) {
        return "Heiss";
    } else if (temperature > 15) {
        return "Mittel";
    } else if (temperature > -20) {
        return "Kalt";
    } else {
        return "Saukalt";
    }
}

Switch-case-Statements sind oft übersichtlicher als eine Kaskade von if-else Anweisungen. Die Lesbarkeit wird verbessert.

Verwendet man switch-case-Statements mit Enumerationen, kann automatisch überprüft werden, ob alle in der Enumeration gegebenen Möglichkeiten im switch-case-Statement abgedeckt sind. Diese Zusicherung hilft Fehler zu vermeiden:

enum Color {
    rot, grün, blau
}

void doIt(Color c) {
    switch (c) {
        case rot:
            // ...
            break;
        case grün:
            // ...
            break;
        case blau:
            // ...
            break;
    }
}