1. Der Multiple-Choice-Operator:switch

Java hat einen weiteren interessanten Operator, den es von seinem Großvater (C++) geerbt hat. Wir sprechen über die switchAussage. Wir könnten es auch als Multiple-Choice-Operator bezeichnen. Es sieht etwas umständlich aus:

switch(expression)
{
   case value1: code1;
   case value2: code2;
   case value3: code3;
}

In den Klammern wird ein Ausdruck oder eine Variable angegeben. Wenn der Wert des Ausdrucks lautet value1, beginnt die Java-Maschine mit der Ausführung code1. Wenn der Ausdruck gleich ist value2, springt die Ausführung zu code2. Wenn der Ausdruck gleich ist value3, code3wird er ausgeführt.

Beispiel:

Code Konsolenausgabe
int temperature = 38;

switch(temperature)
{
   case 36: System.out.println("Low");
   case 37: System.out.println("Normal");
   case 38: System.out.println("High");
}
High

2. breakAussage inswitch

Ein wichtiges Merkmal einer switchAnweisung besteht darin, dass das Programm einfach zur erforderlichen Zeile (zum erforderlichen Codeblock) springt und dann alle Codeblöcke bis zum Ende der Anweisung ausführt switch. Nicht nur der Codeblock, der dem Wert in entspricht switch, sondern alle Codeblöcke bis zum Ende von switch.

Beispiel:

Code Konsolenausgabe
int temperature = 36;

switch(temperature)
{
   case 36: System.out.println("Low");
   case 37: System.out.println("Normal");
   case 38: System.out.println("High");
}
Low
Normal
High

Bei einer Temperatur von 36 °C gibt das Programm die switchAnweisung ein, springt zum ersten Codeblock und führt ihn aus (der erste Fall) und führt dann fröhlich die restlichen Codeblöcke aus.

Wenn Sie nur einen Codeblock ausführen möchten – den Codeblock, der dem übereinstimmenden Fall zugeordnet ist –, müssen Sie den Block mit einer breakAnweisung beenden;

Beispiel:

Code Konsolenausgabe
int temperature = 36;

switch(temperature)
{
   case 36:
      System.out.println("Low");
      break;
   case 37:
      System.out.println("Normal");
      break;
   case 38:
      System.out.println("High");
}
Low

breakSie können den letzten Fall der Anweisung weglassen switch, da dieser Block der letzte mit oder ohne break-Anweisung ist.


3. Standardaktion:default

Ein weiterer wichtiger Punkt. Was passiert, wenn keiner der in der switchListe aufgeführten Fälle mit dem Ausdruck in Klammern übereinstimmt?

Wenn kein passender Fall gefunden wird, wird der Rest der switchAnweisung übersprungen und das Programm setzt die Ausführung nach der geschweiften Klammer am Ende der switchAnweisung fort.

Allerdings können Sie eine switchAnweisung auch dazu bringen, sich wie der else-Zweig in einer if-elseAnweisung zu verhalten. Verwenden Sie dazu das defaultSchlüsselwort.

Wenn keines der cases im switchBlock mit dem Wert des Ausdrucks übereinstimmt und es switcheinen defaultBlock gibt, wird der Standardblock ausgeführt. Beispiel:

Code Konsolenausgabe
int temperature = 40;
switch(temperature)
{
   case 36:
      System.out.println("Low");
      break;
   case 37:
      System.out.println("Normal");
      break;
   case 38:
      System.out.println("High");
      break;
   default:
      System.out.println("Call an ambulance");
}
Call an ambulance

4. Vergleichen switchundif-else

Die switchAussage ist einer Aussage etwas ähnlich if-else, nur komplizierter.

Sie können den Code einer switchAnweisung jederzeit in mehrere ifAnweisungen umschreiben. Beispiel:

Code mit Schalter Code mit if-else
int temperature = 40;
switch(temperature)
{
   case 36:
      System.out.println("Low");
      break;
   case 37:
      System.out.println("Normal");
      break;
   case 38:
      System.out.println("High");
      break;
   default:
      System.out.println("Call an ambulance");
}
int temperature = 40;

if (temperature == 36)
{
   System.out.println("Low");
}
else if (temperature == 37)
{
   System.out.println("Normal");
}
else if (temperature == 38)
{
   System.out.println("High");
}
else
{
   System.out.println("Call an ambulance");
}

Der Code auf der linken Seite funktioniert genauso wie der Code auf der rechten Seite.

Eine Kette mehrerer if-elseAnweisungen ist vorzuziehen, wenn eine ifAnweisung in jedem einzelnen Fall verschiedene komplexe Ausdrücke enthält.



5. Welche Ausdrücke können in einer Aussage verwendet werden switch?

caseNicht alle Typen können als Beschriftungen in einer Anweisung verwendet werden switch. Sie können Literale der folgenden Typen verwenden:

  • Ganzzahltypen: byte, short, int,long
  • char
  • String
  • jede enumArt

Sie können keine anderen Typen als Fallbeschriftungen verwenden.

Beispiel für die Verwendung einer enumInside- switchAnweisung:

Day day = Day.MONDAY;
switch (day)
{
   case MONDAY:
      System.out.println("Monday");
      break;
   case TUESDAY:
      System.out.println("Tuesday");
      break;
   case WEDNESDAY:
      System.out.println("Wednesday");
      break;
   case THURSDAY:
      System.out.println("Thursday");
      break;
   case FRIDAY:
      System.out.println("Friday");
      break;
   case SATURDAY:
      System.out.println("Saturday");
      break;
   case SUNDAY:
      System.out.println("Sunday");
      break;
}

Hinweis: Wenn Sie eine enumInside- switchAnweisung verwenden, müssen Sie den Klassennamen nicht vor jeden Wert in den caseBeschriftungen schreiben. Es reicht aus, nur den Wert zu schreiben.