Was ist ein Switch Case in Java und wie wird es verwendet?

Veröffentlicht: 2022-03-04

Der switch case in Java ist eine der vielen Java-Anweisungen, die der Programmiersprache mitteilen, was zu tun ist. Wie Sätze in der englischen Sprache, die einen vollständigen Überblick über den Text geben und Klauseln enthalten, sind Java-Anweisungen Befehle, die einen oder mehrere Ausdrücke enthalten, die der Java-Interpreter ausführt. Einfacher ausgedrückt ist ein Java-Statement eine Anweisung, die erklärt, was passieren soll.

Eine Java-Anweisung endet mit einem Semikolon (;) und weist Java an, Anweisungen bis zu diesem Semikolon zu verarbeiten. Standardmäßig folgt der Java-Interpreter der Reihenfolge, in der Anweisungen geschrieben werden, und führt eine Anweisung nach der anderen aus. Anweisungen, die den Programmfluss steuern (Flusssteuerungsanweisungen), wie Schleifen und Bedingungen, folgen jedoch nicht der standardmäßigen Ausführungsreihenfolge. Dieser Artikel konzentriert sich auf einen solchen Auswahlkontrollmechanismus – die Java-Switch- Case-Anweisung.

Inhaltsverzeichnis

Was ist ein Switch-Case in Java?

Java unterstützt drei Arten von Anweisungen: Ausdrucksanweisungen zum Ändern von Variablenwerten, Aufrufen von Methoden und Erstellen von Objekten, Deklarationsanweisungen zum Deklarieren von Variablen und Kontrollflussanweisungen zum Bestimmen der Ausführungsreihenfolge von Anweisungen.

Die Java-Switch -Case-Anweisung ist eine Art Steuerflussanweisung, die es dem Wert eines Ausdrucks oder einer Variablen ermöglicht, den Steuerfluss der Programmausführung durch eine Mehrwegverzweigung zu ändern. Im Gegensatz zu If-Then- und If-Then-Else-Anweisungen hat die Java-Switch - Anweisung mehrere Ausführungspfade. Die Groß-/ Kleinschreibung in Java funktioniert mit den primitiven Datentypen short, byte, int und char. Ab JDK7 kann Java Switch auch mit String-Klassen, Aufzählungstypen und Wrapper-Klassen verwendet werden, die primitive Datentypen wie Byte, Character, Integer und Short umschließen.

Der Hauptteil einer switch case-Anweisung in Java wird als switch-Block bezeichnet. Jede Anweisung im switch-Block ist mit einem oder mehreren Cases oder Default-Labels gekennzeichnet. Daher wertet die switch-Anweisung ihren Ausdruck aus, gefolgt von der Ausführung aller Anweisungen, die dem übereinstimmenden case-Label folgen.

Unten ist die Syntax der switch case-Anweisung:

// switch-Anweisung

Schalter (Ausdruck)

{

// case-Anweisungen

// Werte müssen vom gleichen Ausdruckstyp sein

case wert1 :

// Anweisungen

brechen; // Unterbrechung ist optional

Fallwert2 :

// Anweisungen

brechen; // Unterbrechung ist optional

// Wir können eine beliebige Anzahl von Case-Anweisungen haben

// unten ist die Standardanweisung, die verwendet wird, wenn keiner der Fälle zutrifft.

// Im Standardfall ist kein Break erforderlich.

Ursprünglich :

// Anweisungen

}

Beispiel für die Java-Switch-Anweisung

Das folgende Java-Codebeispiel deklariert ein int namens „Monat“, dessen Wert einen der 12 Monate des Jahres darstellt. Der Code verwendet die switch case-Anweisung, um den Namen des Monats basierend auf dem Wert des Monats anzuzeigen.

öffentliche Klasse SwitchExample {

public static void main(String[] args) {

int Monat = 6;

String monatString;

Schalter (Monat) {

Fall 1: monthString = „Januar“;

brechen;

Fall 2: monthString = „Februar“;

brechen;

Fall 3: monthString = „März“;

brechen;

Fall 4: monthString = „April“;

brechen;

Fall 5: monthString = „Mai“;

brechen;

Fall 6: monthString = „Juni“;

brechen;

Fall 7: monthString = „Juli“;

brechen;

Fall 8: monthString = „August“;

brechen;

Fall 9: monthString = „September“;

brechen;

Fall 10: monthString = „Oktober“;

brechen;

Fall 11: monthString = „November“;

brechen;

Fall 12: monthString = „Dezember“;

brechen;

default: monthString = „Ungültiger Monat“;

brechen;

}

System.out.println(monthString);

}

}

Ausgabe: Juni

Zweck der Break-Anweisung im Java-Switch-Case

Die break-Anweisung ist ein wesentlicher Aspekt des Java-switch-Falls, der die einschließende switch-Anweisung beendet. Die break-Anweisung ist erforderlich, da ohne sie Anweisungen im switch-Block durchfallen würden. Somit werden ungeachtet des Ausdrucks der nachfolgenden case-Labels alle Anweisungen nach dem übereinstimmenden case-Label sequentiell ausgeführt, bis eine break-Anweisung angetroffen wird.

Der folgende Code ist ein Beispiel, um zu zeigen, dass ein switch-Block ohne die break-Anweisung durchfällt.

öffentliche Klasse SwitchExampleFallThrough {

public static void main(String[] args) {

java.util.ArrayList<String> futureMonths =

new java.util.ArrayList<String>();

int Monat = 6;

Schalter (Monat) {

Fall 1: futureMonths.add(“Januar”);

Fall 2: futureMonths.add(“Februar”);

Fall 3: futureMonths.add(“März”);

Fall 4: futureMonths.add(“April”);

Fall 5: futureMonths.add(“May”);

Fall 6: futureMonths.add(“Juni”);

Fall 7: futureMonths.add(“Juli”);

Fall 8: futureMonths.add("August");

Fall 9: futureMonths.add(“September”);

Fall 10: futureMonths.add(“Oktober”);

Fall 11: futureMonths.add("November");

Fall 12: futureMonths.add(“Dezember”);

brechen;

Standard: Unterbrechung;

}

if (futureMonths.isEmpty()) {

System.out.println("Ungültige Monatszahl");

} anders {

for (String monatsname : futureMonths) {

System.out.println(Monatsname);

}

}

}

}

Ausgabe:

Juni

Juli

August

September

Oktober

November

Dezember

Der obige Code zeigt den Monat des Jahres an, der dem ganzzahligen Monat entspricht, sowie die folgenden Monate. Hier dient die finale break-Anweisung keinem Zweck, da der Fluss aus der switch-Anweisung herausfällt. Die Verwendung der break-Anweisung ist hilfreich, da sie den Code weniger fehleranfällig und Änderungen einfacher macht. Der default-Abschnitt im Code behandelt alle Werte, die nicht durch einen der case-Abschnitte geregelt werden.

Java-Switch-Anweisung mit mehreren Case-Labels

Switch-Anweisungen in Java können auch mehrere Case-Labels haben. Der folgende Code veranschaulicht dasselbe – hier wird die Anzahl der Tage in einem bestimmten Monat des Jahres berechnet.

Klasse SwitchMultiple{

public static void main(String[] args) {

int Monat = 2;

int Jahr = 2020;

int numDays = 0;

Schalter (Monat) {

Fall 1: Fall 3: Fall 5:

Fall 7: Fall 8: Fall 10:

Fall 12:

Anzahl Tage = 31;

brechen;

Fall 4: Fall 6:

Fall 9: Fall 11:

Anzahl Tage = 30;

brechen;

Fall 2:

if (((Jahr % 4 == 0) &&

!(Jahr % 100 == 0))

|| (Jahr % 400 == 0))

AnzahlTage = 29;

anders

AnzahlTage = 28;

brechen;

Ursprünglich:

System.out.println("Ungültiger Monat.");

brechen;

}

System.out.println(“Anzahl der Tage = “

+ Anzahl Tage);

}

}

Ausgabe:

Anzahl der Tage = 29

Verschachtelte Java-Switch-Case-Anweisungen

Ein verschachtelter Schalter liegt vor, wenn Sie einen Schalter als Teil der Anweisungsfolge eines äußeren Schalters verwenden. In diesem Fall gibt es keinen Konflikt zwischen den case-Konstanten im anderen Schalter und denen im inneren Schalter, da eine switch-Anweisung einen eigenen Block definiert.

Das folgende Beispiel demonstriert die Verwendung von verschachtelten Java-Switch-Case- Anweisungen:

öffentliche Klasse TestNest {

public static void main(String[] args)

{

String Branch = „CSE“;

int Jahr = 2;

Schalter (Jahr) {

Fall 1:

System.out.println("Wahlfächer: Algebra, Englisch für Fortgeschrittene");

brechen;

Fall 2:

switch (Branch) // verschachtelter Schalter

{

Fall „CSE“:

Fall „CCE“:

System.out.println(“Wahlfächer: Big Data, Machine Learning”);

brechen;

Fall „ECE“:

System.out.println(“Wahlfächer: Antennentechnik”);

brechen;

Ursprünglich:

System.out.println(“Wahlfächer: Optimierung”);

}

}

}

}

Ausgabe:

Wahlfächer: Big Data, Machine Learning

Verwendung von Strings in switch-Anweisungen

Ab JDK7 können Sie ein String-Objekt im Ausdruck einer switch-Anweisung verwenden. Der Vergleich des String-Objekts im Ausdruck der switch-Anweisung mit den zugeordneten Ausdrücken der einzelnen Case-Labels erfolgt so, als würde die Methode String.equals verwendet. Außerdem wird beim Vergleich von String-Objekten im Ausdruck der switch-Anweisung zwischen Groß- und Kleinschreibung unterschieden.

Das folgende Codebeispiel zeigt den Spieltyp basierend auf dem Wert der Zeichenfolge mit dem Namen „Spiel“ an.

öffentliche Klasse StringInSwitchStatementExample {

public static void main(String[] args) {

Saitenspiel = „Cricket“;

Schalter (Spiel) {

Fall „Volleyball“: Fall „Fußball“: Fall „Cricket“:

System.out.println("Dies ist ein Outdoor-Spiel");

brechen;

Fall „Kartenspiele“: Fall „Schach“: Fall „Puzzle“: Fall „Indoor-Basketball“:

System.out.println("Dies ist ein Indoor-Spiel");

brechen;

Ursprünglich:

System.out.println("Welches Spiel ist es?");

}

}

}

Ausgabe:

Dies ist ein Outdoor-Spiel

Zu beachtende Regeln bei der Verwendung von Java-Switch-Anweisungen

Es wäre am besten, wenn Sie bei der Verwendung von Java-Switch- Anweisungen bestimmte Regeln beachten . Es folgt eine Liste derselben:

  • Der Wert für einen Fall und die Variable im Schalter sollten den gleichen Datentyp haben.
  • Java-Switch- Anweisungen lassen keine doppelten case-Werte zu.
  • Ein Fallwert sollte ein Literal oder eine Konstante sein. Variablen sind nicht erlaubt.
  • Die Verwendung der break-Anweisung innerhalb des Schalters beendet eine Anweisungssequenz.
  • Die break-Anweisung ist optional, und wenn sie weggelassen wird, wird die Ausführung im nachfolgenden Fall fortgesetzt.
  • Die default-Anweisung ist ebenfalls optional und kann an beliebiger Stelle innerhalb des switch-Blocks auftreten. Wenn es nicht am Ende steht, muss nach der default-Anweisung eine break-Anweisung hinzugefügt werden, um die Ausführung der nachfolgenden case-Anweisung zu überspringen.

Weg nach vorn

Java erfreut sich bei Programmierern und Entwicklern unübertroffener Beliebtheit und ist heute eine der gefragtesten Programmiersprachen. Unnötig zu erwähnen, dass angehende Entwickler und Softwareingenieure, die sich für den sich ständig weiterentwickelnden Arbeitsmarkt weiterbilden möchten, ihre Java-Kenntnisse festigen müssen.

Die berufsbezogene PG-Zertifizierung in Software Engineering von upGrad ist speziell für Studienanfänger und Kandidaten im letzten Jahr konzipiert, die Programmieren lernen und in Softwarerollen auf Einstiegsebene versetzt werden möchten.

Wenn Sie sich fragen, was der 5-monatige Online-Kurs beinhaltet, hier sind einige Highlights, um Ihnen eine Vorstellung zu geben:

  • Verdienen Sie MERN-Stack- und Cloud-Native-Spezialisierungen
  • Erlernen Sie Top-Fähigkeiten wie Java, DSA, CSS3, HTML5, AWS, MERN, SQL- und NoSQL-Datenbanken und mehr
  • Über 500 Stunden Inhalt mit über 350 Stunden praktischem Training
  • Fünf Branchenprojekte und über 50 Live-Sessions
  • Praktikumsvorbereitung und Berufsorientierung
  • Diskussionsforen und starkes Peer-Netzwerk

Wenn Sie Ihre Reise zu einer vielversprechenden Karriere im Software-Engineering ankurbeln möchten, haben Sie hier die Chance, von den Besten zu lernen.

1. Was ist ein case in einer switch-Anweisung?

Eine switch-Anweisung in Java ermöglicht das Testen der Gleichheit einer Variablen mit einer Liste von Werten. Hier wird jeder Wert als Fall bezeichnet und für jeden Fall wird die eingeschaltete Variable geprüft.

2. Welche Vorteile hat ein Schaltergehäuse?

Der Hauptvorteil von Java-Switch-Case-Anweisungen gegenüber herkömmlichen if-else-Kaskaden besteht darin, dass erstere es Programmierern ermöglichen, einen kompakteren, klareren und lesbareren Code zu schreiben. Auf der anderen Seite beinhalten if-else-Anweisungen oft viele Code-Wiederholungen. Wenn wir also einen bestimmten Teil des Codes ändern wollen, müssten wir Änderungen an anderen Stellen vornehmen. Um diesen zeitaufwändigen und fehleranfälligen Prozess zu vermeiden, ist es klüger, Switch Cases zu verwenden.

3. Was ist der Unterschied zwischen switch case und if-else?

Bei Switch-Anweisungen werden Fälle sequentiell nacheinander ausgeführt, bis das Schlüsselwort break angetroffen oder die Standardanweisung ausgeführt wird. Im Gegensatz dazu wird bei if-else-Anweisungen je nach Bedingung entweder der if- oder der else-Block ausgeführt.