Mit Hilfe der if
-Anweisung kann festgelegt werden ob die nächste
Anweisung ausgeführt werden soll oder nicht. Hinter dem Schlüsselwort
if
folgt ein in runden Klammern stehender Ausdruck, der als Ergebnis
ein boolean liefern muss. Ist der Ausdruck wahr (true
) so wird die
folgende Anweisung ausgeführt. Liefert der Ausdruck nicht wahr (false
)
so wird die folgende Anweisung nicht ausgeführt.
Hierbei ist zu beachten, dass
mehrere Anweisungen syntaktisch mit Hilfe von geschweiften Klammern zu einer Anweisung
zusammengefasst werden können.
int i1 = 1; int i2 = 2; if (i1 < i2) System.out.println("Wird ausgeführt"); if (i1 > i2){ System.out.println("Wird nicht ausgeführt"); System.out.println("Wird auch nicht ausgeführt"); }
Optional kann jeder if
-Anweisung eine else
-Anweisung
folgen. Die Anweisung, die der else
-Anweisung folgt, wird in dem Fall
ausgeführt, wenn der Ausdruck für die if
-Anweisung falsch
(false
) ergibt. Auch hier können mehrere Anweisungen mit Hilfe
von geschweiften Klammern zu einer Anweisung zusammengefasst werden.
int i1 = 1; int i2 = 2; if (i1 < i2) System.out.println("Wird ausgeführt"); else System.out.println("Wird nicht ausgeführt"); if (i1 > i2){ System.out.println("Wird nicht ausgeführt"); System.out.println("Wird auch nicht ausgeführt"); } else{ System.out.println("Wird ausgeführt"); System.out.println("Wird auch ausgeführt"); }
Die switch
-Anweisung ist eine Alternative zur
if,else
-Anweisung, insbesondere für
geschachtelte if,else
-Anweisungen.
Der auszuführende Programmteil muss jedoch auf einen
int
-Wert abbildbar sein. D.h., es
ist auch die Verwendung der primitiven Datentypen byte
,
char
und
short
sowie der Wrapperklassen Integer
,
Byte
, Character
, und Short
erlaubt, da sie zur Laufzeit in den entsprechenden int
-Wert
umgewandelt werden.
In der switch
-Anweisung wird der auszuwertende int
-Wert angegeben.
Im nachfolgenden Block werden die enzelnen Sprungmarken mit case
-Ausdruck angegeben.
Sollte keiner der case
-Ausdrücke dem int
-Wert
entsprechen wird der optionale default
-Ausdruck angesprungen.
public class SwitchExample1 { public static void main(String[] args){ int i = 3; switchTest(i); } private static void switchTest(int value){ switch(value){ case 5: System.out.println("value <= 5"); case 4: System.out.println("value <= 4"); case 3: System.out.println("value <= 3"); case 2: System.out.println("value <= 2"); case 1: System.out.println("value <= 1"); case 0: System.out.println("value <= 0"); default: System.out.println("default"); } } }
Als Ergebnis des Programmes erscheint auf der Systemausgabe:
value <= 3 value <= 2 value <= 1 value <= 0 default
Nachdem die dem case
entsprechende Anweisung ausgeführt
wurde werden alle nachfogenden Anweisungen, auch die der folgenden cases
und des optionalen default
, ausgeführt.
Dieses Verhalten wird als Fall through bezeichnet und ist eine
beliebte Quelle für Programmierfehler.
Um einen Fall through zu vermeiden muss nach dem entsprechenden
case
der switch
-Block mit Hilfe
der break
-Anweisung verlassen werden.
public class SwitchExample2 { public static void main(String[] args){ int i = 3; switchTest(i); } private static void switchTest(int value){ switch(value){ case 5: System.out.println("value <= 5"); break; case 4: System.out.println("value <= 4"); break; case 3: System.out.println("value <= 3"); break; case 2: System.out.println("value <= 2"); break; case 1: System.out.println("value <= 1"); break; case 0: System.out.println("value <= 0"); break; default: System.out.println("default"); } } }
Als Ergebnis des Programmes erscheint auf der Systemausgabe:
value <= 3
Der Fragezeichenoperator ist der einzige 3-stellige Operator in Java und hat folgende Syntax:
ergebnis = ausdruck ? rueckgabe1 : rueckgabe 2;
Der Ausdruck vor dem Fragezeichen (ausdruck
) muss vom Typ boolean
sein.
Die Rueckgabewerte rueckgabe1
und rueckgabe2
müssen
entweder einer Referenz oder einem primitiven Datentypen entsprechen. Entspricht das Ergebnis des
Ausdrucks vor dem Fragezeichen true
so ist das Ergebnis
der Wert vor dem Doppelpunkt (rueckgabe1
)
andernfalls ist das Ergebnis der Wert nach dem Doppelpunkt (rueckgabe2
).