Switch in Java

Wann man die switch-Anweisung der if-Anweisung vorzieht

Die switch-Anweisung zählt sich in Java zu den Kontrollstrukturen und ist eine Alternative zur if-Anweisung. Zwar ist man mit einer if-Anweisung in den meisten Fällen deutlich flexibler, in einigen Anwendungsfällen erhält die switch-Anweisung aber den Vorzug vor der if-Anweisung. Was sich genau hinter der switch-Anweisung verbirgt und wann man die switch-Anweisung nutzen sollte, das erfährst du nun.

Das Konzept hinter der switch-Anweisung ist denkbar einfach. Im swich-Block der mit { und } begrenzt wird, gibt es unterschiedliche Sprungziele, die mit case markiert sind. Welches Sprungziel nun angesprungen wird, das gibt der zu übergebende Ausdruck an. Anbei die Syntax des switch-Konstrukts:


switch(ausdruck)
{
	case 'konstanter_ausdruck_1': 
	   anweisung_1;
	   break; 
	case 'konstanter_ausdruck_2': 
	   anweisung_2;
	   break; 
	case 'konstanter_ausdruck_3': 
	   anweisung_3;
	    break; 
	default:
	   anweisung_sonstiges;
}

Ablauf: Der Ausdruck in den Klammern hinter switch wird ausgewertet und anschließend werden die unterschiedliche Fälle (case) durchgegangen. Wird eine Übereinstimmung mit einem der konstanten Ausdrücke gefunden, wird die entsprechende nachfolgende Anweisung ausgeführt. Anschließend wird mit break die switch-Anweisung sofort verlassen. Falls keine Übereinstimmung gefunden wird, werden die Anweisungen nach default ausgeführt.

Ursprünglich musste der Ausdruck „ausdruck" als auch die "konstanten Ausdrücke“ ganzzahlig (byte, char, short oder int) sein. Seit Java SE 7 kann dies nun auch ein String sein. (diese Neuerung dauerte ganze 16 Jahre, seit dem sie vorgeschlagen wurde). Möchte man also über einen string „switchen“ muss man dafür auch mit der entsprechenden Java-Version arbeiten.

Anbei ein einfaches Programm, dass die Funktionalität von switch zeigt. Im Grunde wird darin einfach nur der Text ausgegeben, in welchen Fall man sich gerade befindet. Ausgabe in diesem Beispiel wäre also: „Fall 2“, da die Variable „zahl“ (unser Ausdruck) den Wert 2 zugewiesen bekommen hat. Hier nun das switch-Beispiel:


public static void main(String[] args) {

		int zahl = 2;

		switch (zahl) {
		case 1:
			System.out.println("Fall 1");
			break;
		case 2:
			System.out.println("Fall 2");
			break;
		case 3:
			System.out.println("Fall 3");
			break;
		default:
			System.out.println("Sonstiger Fall");
		}

	}

Hinweis: In der „case“ Abfrage kann nicht nach einem boolschen Ausdruck gefiltert werden. Man könnte also beispielsweise nicht schreiben: case: zahl>=2.

Ein typisches Beispiel, wann eine switch-Anweisung zum Einsatz kommen könnte, wäre beispielsweise, wenn man ein Java-Spiel programmieren würde und dort für die Eingabe bestimmte Tasten abfragen würde. Je nach gedrückter Taste könnte mit der switch-Anweisung weitere Aktionen folgen.