if, else

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");
}
itmapa.de - X2H V 0.20

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");
}
itmapa.de - X2H V 0.20

switch

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");
    }
  }
}
itmapa.de - X2H V 0.20

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");
    }
  }
}
itmapa.de - X2H V 0.20

Als Ergebnis des Programmes erscheint auf der Systemausgabe:

value <= 3
            

Der Fragezeichenoperator

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).