Erste Schritte Switch case vs. Verschachtelte If Anweisung

Guten morgen liebes Forum,

ich hätte da mal eine Verständnisfrage.
Und zwar habe ich in meinem Buch gelesen, dass die switch case Funktion dasselbe macht wie verschachtelte if Anweisungen, nur halt übersichtlicher.
Ist das so richtig?
Ich mein wenn ja, dann wären ja alle verschachtelten if Anweisungen überflüssig da ich mit switch case mehr übersicht habe, oder sehe ich das Falsch?

Würde gerne eure Meinugn dazu hören und was ihr so bevorzugt.

Vielen Dank und einen schönen sonnigen Tag =)
 

Natac

Bekanntes Mitglied
Genau. switch-case ist eine andere Schreibweise für ein einfaches verschachteltes if. Allerdings kann es ja auch komplexere if-Abfragen geben, die dann nichtmehr durch ein switch-case abzubilden sind. Etwas folgendes Beispiel:

Java:
boolean condition1 = ...
if(condition1){
  // do something
}
else{
  ComplexObject obj = new ComplexObject(); //Teures Objekt
  if(obj.isConditonA()){
    // do A
  }
  else{
    // do B
  }
}

Somit bleibt switch-case eine übersichtliche Methode für einfache
Code:
if(){}else if(){}else{}
, kann aber wirklich komplexere if-Bäume (die zwischendurch bspw. auch mal ein Objekt erzeugen müssen) nicht abbilden.

Sparen kann man es sich also nicht, dennoch hat das switch-case seine Berechtigung. ;)
 
Genau. switch-case ist eine andere Schreibweise für ein einfaches verschachteltes if. Allerdings kann es ja auch komplexere if-Abfragen geben, die dann nichtmehr durch ein switch-case abzubilden sind. Etwas folgendes Beispiel:

Java:
boolean condition1 = ...
if(condition1){
  // do something
}
else{
  ComplexObject obj = new ComplexObject(); //Teures Objekt
  if(obj.isConditonA()){
    // do A
  }
  else{
    // do B
  }
}

Somit bleibt switch-case eine übersichtliche Methode für einfache
Code:
if(){}else if(){}else{}
, kann aber wirklich komplexere if-Bäume (die zwischendurch bspw. auch mal ein Objekt erzeugen müssen) nicht abbilden.

Sparen kann man es sich also nicht, dennoch hat das switch-case seine Berechtigung. ;)

Vielen dank für deine Antwort.
Also kann ich mir merken solange kein neues Objekt erzeugt wird bzw. werden muss kann ich switch case benutzen, ansonsten if else?

Gibt es eigentlich eine begrenzung wieviele case man benutzen kann oder ist das unendlich?
Bei if else kann ich ja verschachteln bis ich umfalle =)

Danke nochmal.
 

VfL_Freak

Top Contributor
Moin,

Also kann ich mir merken solange kein neues Objekt erzeugt wird bzw. werden muss kann ich switch case benutzen, ansonsten if else?
Nein, so nicht!
Es hat nichts mit dem "Objekt erzeugen" zu tun, sondern mit der Verschachtelung !

Gibt es eigentlich eine begrenzung wieviele case man benutzen kann oder ist das unendlich?
Bei if else kann ich ja verschachteln bis ich umfalle =)
IMHO nicht wirklich ...

Es gibt zwei Vorteile von SWITCH:
- es ist (zumeist) im Code übersichtlicher
- es ist ggf. schneller
Nimm' mal an, du hast 100 Fälle, die unterschieden werden müssen und erst der 99. Fall ist der den du suchst. Beim if-else muss dann JEDE eine Bedingung geprüft werden, während das SWITCH (wohl bedingt durch entsprechende Optimierung durch dem Compiler) den gesuchten case schneller findet!
Siehe auch:
If-else vs switch ? Which is better? | Thread.currentThread().join()

Gruß
Klaus
 

kaoZ

Top Contributor
Ein switch funktioniert zudem nur bei Integern / Strings bzw. Enums!
Boolsche werte o.ä werden im switch nicht zugelassen.

Nur der Vollständigkeit halber kannst du simple Bedingungen auch mit dem Tenären Operator lösen

Java:
public class Tenär {
	
	public Tenär(boolean value) {
	    
		String val = value == true ? "Der Test ist Bestanden" : "Der Test ist Fehlgeschlangen";
		
		/*
		 *Variable x = boolscher verleich (? 'dann') Wert wenn zutreffend (: 'ansonsten') Wert wenn nicht zutreffend
		 * 
		 * Obiges Konstrukt ersetzt eine einfache IF-ELSE Bedingung !
		 */
		
		System.out.println(val);
		
    }
	
	public static void main(String[] args) {
	    new Tenär(false);
    }

}
 
Zuletzt bearbeitet:

kaoZ

Top Contributor
Mit Strings und Enums geht es ab Java7 !!

Davon das die Aktuellste Version verwendet wird bin ich nun einfach mal ausgegangen ;)

Man könnte auch Tricksen und einen Tenären Operator dem switch vorschalten der einen boolschen wert in einen Integer wandelt

Java:
int val = bool == true ? 1 : 0;

allerdings lohnt sich bei einem Fall mit lediglich 2 möglichen Werten der switch nicht ! :D
 
Zuletzt bearbeitet:

Thallius

Top Contributor
Man sollte vielleicht noch ergänzen, dass, sobald man mehr als 5 Abfragen hat und dabei ist es egal ob if/else oder switch, man überlegen sollte das mit Schleifen zu lösen, sonst hat man einen Codesmell.

Gruß

Claus
 

Natac

Bekanntes Mitglied
Java:
int val = bool == true ? 1 : 0;
Auch beim Ternärern Operator gilt: Kein vergleich mit true/false, wenn die Variable schon ein boolean ist:
Java:
int val = bool ? 1: 0
Ist kürzer und imo auch lesbarer, da ==true oder ==false den Code doch schon kryptisch macht ;)
 
Zuletzt bearbeitet:

Joose

Top Contributor
Was ganz vergessen wurde zu erwähnen:

Bei einem if/elseif Konstrukt, kann immer nur ein bestimmter Zweig/Block ausgeführt werden!
Bei einem switch können auch mehrere Fälle ausgeführt werden. Lässt man das "break;" oder "return;" bei einem Fall weg wird der nächste Fall ebenfalls ausgeführt.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Mehrere Werte in einem Switch Case parallel überprüfen Java Basics - Anfänger-Themen 8
D Switch Case Methode aufrufen Java Basics - Anfänger-Themen 3
nelsonmandela Problem bei Ausgabe einer Switch - Case Funktion Java Basics - Anfänger-Themen 5
L Switch-Case Multiplikation wird nicht ausgegeben Java Basics - Anfänger-Themen 1
P9cman Vokal Zähler mit switch case und for-Schleife Java Basics - Anfänger-Themen 4
C Potenzberechnung über switch case. Taschenrechner mit Eingabe über einen grafischen Dialog Java Basics - Anfänger-Themen 22
1 Switch Case Java Basics - Anfänger-Themen 3
T Alternative für switch case Java Basics - Anfänger-Themen 1
W Taschenrechner mit Switch case Java Basics - Anfänger-Themen 4
B Notensystem Switch-Case Java Basics - Anfänger-Themen 31
S Switch-Case zur Berechnung der Einkommensteuer Java Basics - Anfänger-Themen 15
F Switch case wird als char nicht erkannt.... Java Basics - Anfänger-Themen 6
H Frage zur if-Bedingung bzw switch case Java Basics - Anfänger-Themen 6
S switch case fängt beim letzten case an Java Basics - Anfänger-Themen 6
F Switch Case Problem mit Regex lösen? Java Basics - Anfänger-Themen 6
W Wieso funktioniert mein Switch Case nicht ?! Java Basics - Anfänger-Themen 9
F Switch Case Modulo berechnen Java Basics - Anfänger-Themen 12
S Switch-Case für eine Array-Zuordnung Java Basics - Anfänger-Themen 5
S switch und case Java Basics - Anfänger-Themen 1
D Klassen Problem bei switch-case? Java Basics - Anfänger-Themen 2
B Wiederholen einer if/switch-case Schleife Java Basics - Anfänger-Themen 9
X Nach switch case weiter mit Auswahl Java Basics - Anfänger-Themen 7
T switch case und continue Java Basics - Anfänger-Themen 5
D switch case Code Java Basics - Anfänger-Themen 3
K Variablen RETURN in Case-Switch / This method must return a result of type Item Java Basics - Anfänger-Themen 4
R Switch: Nach durchlaufen des Case wieder zum Menü Java Basics - Anfänger-Themen 3
A Switch Case Java Basics - Anfänger-Themen 5
T Erste Schritte switch case Anweisung und if else Verzweigungen? Java Basics - Anfänger-Themen 6
A ArrayList-iteration mit Prüfung auf instanceof durch switch case? Java Basics - Anfänger-Themen 13
P Switch Case - Fließkommazahl Java Basics - Anfänger-Themen 2
lulas[]args Switch Schleife - orphaned case Java Basics - Anfänger-Themen 27
T kleines problem mit switch case Java Basics - Anfänger-Themen 11
R Switch/Case frage: Java Basics - Anfänger-Themen 12
K Input/Output switch case - Parameterübergabe args[0] Java Basics - Anfänger-Themen 34
P Compilerfehler bei switch-case Java Basics - Anfänger-Themen 18
D Switch und Case Java Basics - Anfänger-Themen 3
F Ps to kW Konvertierer switch-case Problem Java Basics - Anfänger-Themen 4
Q switch case hier möglich Java Basics - Anfänger-Themen 10
A Switch-Case Problem Java Basics - Anfänger-Themen 17
A Do While mit Switch Case Java Basics - Anfänger-Themen 2
berti99 Switch-Case || Problem... Java Basics - Anfänger-Themen 6
R Switch-Case Selektion Java Basics - Anfänger-Themen 13
O Switch-Case - Case 4 erhöhen Java Basics - Anfänger-Themen 9
M Frage zu Mehrfachauswahl mit switch ... case Java Basics - Anfänger-Themen 3
R Umlaute mit Switch-Case tauschen Java Basics - Anfänger-Themen 26
J switch-case Java Basics - Anfänger-Themen 19
G Switch-Case harmoniert nicht mit Random-Zahl Java Basics - Anfänger-Themen 3
I If abfrage in switch case einbauen Java Basics - Anfänger-Themen 5
R Erlaubte Selektoren bei Switch-Case Java Basics - Anfänger-Themen 2
Silas89 String in switch - case Java Basics - Anfänger-Themen 19
G Switch Case Java Basics - Anfänger-Themen 8
G zu blöd für switch case? Java Basics - Anfänger-Themen 6
G switch-case mit Strings Java Basics - Anfänger-Themen 7
T Switch Case Java Basics - Anfänger-Themen 6
A Aus switch case an den Anfang? Java Basics - Anfänger-Themen 7
P switch-case Konstrukt auch mit case i < 6: s = 6 ? Java Basics - Anfänger-Themen 10
G switch-case mit Fehler auf return-Wert-Typ Java Basics - Anfänger-Themen 2
S Zählen mit switch case Java Basics - Anfänger-Themen 8
J Aufgabe mit Arrays, Schleifen & Switch/Case Java Basics - Anfänger-Themen 7
M switch-case und array Java Basics - Anfänger-Themen 3
C switch-case mit bedingungen? Java Basics - Anfänger-Themen 5
C Switch / Case Problem, break funktioniert nicht! Java Basics - Anfänger-Themen 3
J Switch Anweisung: Case "Wert1" bis "Wert2&quo Java Basics - Anfänger-Themen 2
D switch case must be constant expression Java Basics - Anfänger-Themen 7
A Switch Case Java Basics - Anfänger-Themen 4
G Mit Switch/Case Zahlen zu Array hinzufügen Java Basics - Anfänger-Themen 14
M HILFE bei switch & case Java Basics - Anfänger-Themen 15
A switch case mit einem String Java Basics - Anfänger-Themen 4
M switch case Java Basics - Anfänger-Themen 5
_so_far_away_ Inventarisierungssystem brauche switch Cases und weiß nicht, wie ich e implementieren muss Java Basics - Anfänger-Themen 5
M error: '.class' expected switch(char) Java Basics - Anfänger-Themen 32
A switch statement Java Basics - Anfänger-Themen 4
volcanos enum und switch (neu): falschen Wert mit IllegalArgumentException oder mit EnumConstantNotPresentException abfangen ? Java Basics - Anfänger-Themen 51
X Enum Abfrage ohne if, for, while oder switch Java Basics - Anfänger-Themen 21
Lion.King switch-Befehl Java Basics - Anfänger-Themen 6
U Warum kann ich die Methode in der ENUM Klasse nicht aufrufen? Und warum geht die Switch nicht? Java Basics - Anfänger-Themen 8
U Warum gibt das eine Nullpointerexception? (Switch) Java Basics - Anfänger-Themen 6
C if-Konstrukt durch switch-Konstrukt ersetzen Java Basics - Anfänger-Themen 14
C Taschenrechner (switch) in Taschenrechner mit Methoden umwandeln Java Basics - Anfänger-Themen 115
V Switch Methode macht Code kaputt Java Basics - Anfänger-Themen 18
J Parameterübergabe in switch? Java Basics - Anfänger-Themen 2
M Switch Java Basics - Anfänger-Themen 2
F Erste Schritte Frage zu simplem Taschenrechner(switch) Java Basics - Anfänger-Themen 16
NoMercy BitFlags Programm (switch on/off , swap und isSet) Java Basics - Anfänger-Themen 7
L Taschenrechner mit switch und while funktioniert noch nicht richtig Java Basics - Anfänger-Themen 22
B Problem bei switch statement Java Basics - Anfänger-Themen 4
E Input/Output Switch ausgabe anpassen bzw. anders darstellen Java Basics - Anfänger-Themen 13
A Warum funktioniert switch aber nicht if/else? Java Basics - Anfänger-Themen 23
K Erste Schritte switch - Warum sind long/float/double/... nicht erlaubt? Java Basics - Anfänger-Themen 5
Ponychan95 Erste Schritte Switch fällt immer bis zum default durch Java Basics - Anfänger-Themen 4
P Bei Switch-Anweisung wird default-Anweisung angezeigt Java Basics - Anfänger-Themen 4
D kleiner Taschenrechner mit switch fehlerhaft Java Basics - Anfänger-Themen 1
O This in switch anweisung Java Basics - Anfänger-Themen 5
V Fehlerhafte BufferedReader/switch Benutzung? Java Basics - Anfänger-Themen 2
R Methoden Switch wählt das Falsche Java Basics - Anfänger-Themen 17
B Erste Schritte Addition von double in switch-Anweisung Java Basics - Anfänger-Themen 2
M Endlosschleife bricht durch switch ab Java Basics - Anfänger-Themen 17
D Array in switch Java Basics - Anfänger-Themen 3
Devil0s if vs. switch Java Basics - Anfänger-Themen 27
F Reset in der switch Anweisung Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben