Schalter, Fall, Standard - 1

„Hallo, Amigo!“

„Hallo, Bilaabo! Schön dich wiederzusehen. Nur deine Vorlesungen sind so gut und verständlich. Nicht wie dieses Java Memory Model.“

„Ja, Bilaabo weiß, wie man Lektionen auswählt. Heute werde ich Ihnen etwas über die Switch-Anweisung erzählen.“

„Ich glaube, jemand hat mir schon davon erzählt.“

„Ellie hat es getan. Also, Amigo möchte keine Lektion über die Switch-Anweisung hören? Vielleicht fängst du an, deine eigene zu unterrichten?“

„Nein, ich möchte, ich möchte. Lassen Sie uns etwas über die Switch-Anweisung hören.“

„Okay. In Java gibt es so etwas wie eine Switch-Anweisung. Das ist praktisch, wenn Sie bestimmte Aktionen abhängig von verschiedenen Werten einer Variablen ausführen müssen.“

Beispiel mit Schalter Äquivalenter Code
int i = 5;
switch(i)
{
 case 1:
  System.out.println("one");
  break;
 case 2:
  System.out.println("two");
  break;
 case 3:
  System.out.println("three");
  break;
 default:
  System.out.println("many");
}
int i = 5;
if (i == 1)
{
 System.out.println("one");
}
else if (i == 2)
{
 System.out.println("two");
}
else if (i == 3)
{
 System.out.println("three");
}
else
{
 System.out.println("many");
}

Mit der switch- Anweisung können Sie zum gewünschten Codeabschnitt springen, wenn die an sie übergebene Variable mit dem Wert übereinstimmt, der auf das Schlüsselwort case folgt.

Wenn i 1 ist, springt die Ausführung zur Zeile mit der Bezeichnung „Fall 1“.

Wenn i 2 ist, springt die Ausführung zur Zeile mit der Bezeichnung „Fall 2“.

Wenn i gleich 3 ist, springt die Ausführung zur mit „Fall 3“ gekennzeichneten Zeile.

„Falls zu keinem der Fälle gesprungen wird, wird der Block «default» ausgeführt.“

„Ich verstehe. Und rechts ist die gleiche Logik, aber implementiert mit if-Anweisungen?“

"Ja."

„Und was hat es mit dem Wort ‚Pause‘ auf sich? Du hast gesagt, dass es nur in Schleifen verwendet werden kann?“

„Ja, und hier. Wenn die Break- Anweisung ausgeführt wird, verlassen wir den Schalter sofort .“

„Aber wenn die break-Anweisung entfernt wird, werden alle Zeilen innerhalb des Schalters bis zum Ende ausgeführt.“

Beispiel Ausgabe (für i = 1) Ausgabe (für i = 2)
switch(i)
{
 case 1:
  System.out.println("one");
 case 2:
  System.out.println("two");
 case 3:
  System.out.println("three");
 default:
  System.out.println("many"); }
eins
zwei
drei
viele
zwei
drei
viele

„Eigentlich ist case ein Label im Code. In der switch-Anweisung springen wir zum nächsten Label und beginnen mit der Ausführung des gesamten Codes bis zum Ende des switch oder bis wir auf eine break-Anweisung stoßen.“

„Wenn wir also kein break schreiben, wird die Zeile, zu der wir springen, ausgeführt, gefolgt von allen anderen Zeilen bis zur schließenden Klammer. Stimmt das?“

"Ja."

„Ein Kinderspiel. Aber mir gefällt die Verwendung von if-Anweisungen besser. Sie haben diese sinnlosen break-Anweisungen nicht.“

„Es stimmt, dass if-Anweisungen sehr oft kompakter sind. Aber eine switch-Anweisung ist manchmal besser lesbar.“

"Vergleichen:"

Beispiel mit Schalter Äquivalenter Code
public String getName(int i)
{
 switch(i)
 {
  case 1:
   return "one";
  case 2:
   return "two";
  case 3:
   return "three";
  default:
   return "many";
}
public String getName(int i)
{
 if (i == 1)
  return "one";

 if (i == 2)
  return "two";

 if (i == 3)
  return "three";

return "many"
}

„Ich würde nicht sagen, dass es besser lesbar ist.“

„Okay, aber was ist mit diesem Beispiel?“

Beispiel mit Schalter Äquivalenter Code
public String getName(int i)
{
 switch(i)
 {
  case 1:
  case 2:
   return "one or two";
  case 3:
  case 4:
  case 5:
   return "three to five";
  default:
   return "many";
}
public String getName(int i)
{
 if (i == 1 || i == 2)
  return "one or two";

 if (i == 3 || i == 4 || i == 5)
  return "three to five";

return "many"
}

„Bilaabo, dein Beispiel sieht nicht ganz richtig aus. Also kann ich die break-Anweisung weglassen, wenn ich return verwende?“

„Das stimmt. Eine Return-Anweisung beendet die Methode sofort.“

„Es scheint, dass if-Anweisungen immer kompakter sind. Aber die switch-Anweisung erwies sich dieses Mal als besser lesbar.“

„Puh, endlich.“

„Noch etwas. Sie müssen am Ende nicht default schreiben. Wenn Sie dies nicht tun, passiert einfach nichts, wenn keines der Labels übereinstimmt.“

„Äh, genau. Wie wenn-sonst, aber lesbar – viel lesbarer!“

„Großartig. Ich freue mich, dass Ihnen meine Lektion gefallen hat.“

„Oh, fast hätte ich es vergessen. Anfangs konnte man in Switch-Anweisungen nur primitive Typen und Aufzählungen verwenden. Aber jetzt gibt es Unterstützung für Strings.“

„Du meinst, dass ich das schreibe?“

Beispiel
public int getNumber(String number)
{
 switch(number)
 {
  case "one":
   return 1;
  case "two":
   return 2;
  case "three":
   return 3;
  default:
   return -1;
 }
}

„Ja. Praktisch, oder?“

„Ja. Switch-Anweisungen sind großartig!“