02.07 Switch-Case

Eine Alternative zu if ist ein Switch-Case Block. Mit ihm kann man bspw. schneller Zahlen auf einen bestimmten Wert überprüfen als mit if-Anweisungen. Dabei wird zuerst über das switch-Statement die zu überprüfende Variable festgelegt und anschließend, auf die mit case festgelegten, Sprungmarken geprüft. Zunächst waren bis Java5 nur Ganzzahlen (also auch byte, char und short) zur Prüfung von Bedingungen einsetzbar. In Java5 kamen dann enums (Aufzählungen) hinzu, in Java7 schließlich noch Strings.

package sprachsyntax.de.main;
public class SwitchTest1 {
  public static void main(String[] args) {

    int option = 3;
    switch (option) {
      case 1:
        System.out.println("Option 1 wurde ausgewaehlt");
        break;
      case 2:
        System.out.println("Option 2 wurde ausgewaehlt");
        break;
      case 3:
        System.out.println("Option 3 wurde ausgewaehlt");
        break;
      case 4:
        System.out.println("Option 4 wurde ausgewaehlt");
        break;
      default :
        System.out.println("Keine Gueltige Option ausgewaehlt");
    }
  }
}

Sollte keine vorgegebenen Sprungmarke zutreffen, so wird die default-Sprungmarke (sofern vorhanden) ausgewählt. Dabei spielt es keine Rolle, an welcher Stelle sich das Default-Konstrukt befindet. Üblicherweise setzt man es jedoch an das Ende.

Auffällig ist die Benutzung des Schlüsselworts break nach jedem case. Dies ist aber notwendig, da regulär in einem switch-Block alle Aktionen ausgeführt werden, die nach der ersten, zutreffenden Sprungmarke aufgelistet sind. Hätten wir in unserem Fall die breaks weggelassen, würde zusätzlich zu „Option 3 wurde ausgewaehlt“ noch „Option 4 wurde ausgewaehlt“ und „Keine Gueltige Option ausgewaehlt“ ausgegeben werden. Dies ist aber kein Fehlverhalten, sondern durchaus gewollt. Oft kann man solche Varianten in einem TableModel (Daten-Modell für JTable) sehen. Ein Beispiel demonstriert eine von vielen Einsatzmöglichkeiten:

int alter = 4;
switch (alter) {
  case 0:
  case 1:
  case 2:
    System.out.println("Du gehst in die Kinderkrippe");
    break;
  case 3:
  case 4:
  case 5:
  case 6:
    System.out.println("Du gehst in den Kindergarten");
    break;
  case 7:
  case 8:
  case 9:
  case 10:
    System.out.println("Du gehst in die Grundschule");
    break;
  default :
    System.out.println("Du bist zu alt");
}

Größer- und Kleiner als Vergleiche sind in switch-case-Blöcken nicht möglich. Hierzu lernen Sie aber im entsprechenden Kapitel (06.05 Enumerations) mehr.

Ähnliche Beiträge