| Baustein | Wirkung im Programm | Planning use (Entscheidung) |
|---|---|---|
| if mit boolescher Bedingung | Prüft einen Ausdruck, der true oder false ergibt | Wählen, wenn eine Anweisung nur bei erfüllter Bedingung laufen soll |
| else | Läuft, wenn der Boolean-Ausdruck false ist | Ergänzen, wenn auch der Gegenfall eine eigene Reaktion braucht |
| if-else-if | Prüft mehrere Bedingungen nacheinander | Einsetzen, wenn es mehr als zwei Fälle zu unterscheiden gibt |
| verschachteltes if | Das innere if läuft nur, wenn die äußere Bedingung true ist | Nutzen, wenn eine Prüfung die vorherige voraussetzt |
| == bei Objekten | Liefert true nur, wenn beide Operanden auf dasselbe Objekt zeigen | Für Texte nicht verwenden, sondern equals |
| equals bei Strings | Liefert true, wenn beide Strings exakt dieselben Zeichen enthalten | Standard für jeden inhaltlichen Textvergleich |
Die Angaben zu if, else und Verschachtelung stammen aus einer Einführung zu if-Anweisungen in Java, die zu == und equals aus einer Erläuterung typischer Java-Fehler.
Eine java if else verzweigung prüft eine boolesche Bedingung und führt den if-Block aus, wenn sie true ist, sonst den else-Block. Texte vergleicht man dabei mit equals, nicht mit ==.
Wer Java für die Schule lernt, braucht Verzweigungen in fast jedem Programm. Die Einordnung in den gesamten Lernweg steht im Überblick java lernen schule. Dieser Beitrag führt von der Bedingung über Vergleichs- und logische Operatoren bis zur Wahl zwischen if-else und switch.
Was die Wahl der Verzweigung im Programm verändert
Die Verzweigung entscheidet, welcher Teil des Programms überhaupt ausgeführt wird. Eine falsche Wahl zeigt sich deshalb nicht als Syntaxfehler, sondern als Verhalten, das nicht zur Aufgabe passt. Die folgenden Entscheidungen helfen bei der Auswahl.
- Nur if, wenn der Gegenfall nichts tun soll: Ist die Bedingung false, wird der Block übersprungen und das Programm läuft danach normal weiter.
- if mit else, wenn beide Fälle eine Reaktion brauchen: Der else-Block läuft genau dann, wenn der Boolean-Ausdruck false ist. Typisch ist eine Rückmeldung für bestanden und nicht bestanden.
- if-else-if, wenn mehrere Bedingungen geprüft werden: Das passt zu gestaffelten Fällen, etwa bei einer Zuordnung von Punkten zu Notenstufen, bei der Wertebereiche verglichen werden.
- Verschachteltes if, wenn eine Prüfung von der anderen abhängt: Die innere Bedingung wird nur ausgewertet, wenn die äußere true ist. Das spart Fehler, wenn die zweite Prüfung ohne die erste keinen Sinn hätte.
- switch, wenn eine einzelne Variable mit festen Werten verglichen wird: Jeder Wert bekommt einen case-Zweig. Bei Bereichen und kombinierten Bedingungen bleibt if-else-if die klarere Lösung.
Ob eine Kette aus if-else-if lesbar bleibt, hängt von der Zahl der Fälle ab. Werden die Zweige unübersichtlich, lohnt sich ein Blick auf switch oder auf eine Schleife, wie sie unter java schleifen erklärt beschrieben ist.
Bedingung und boolean: Woraus eine Verzweigung entsteht
Eine Bedingung ist ein Ausdruck, dessen Ergebnis true oder false ist. Genau diesen boolean-Wert prüft die if-Anweisung, wie die Einführung zu if-Anweisungen beschreibt. Der Datentyp boolean ist deshalb die Grundlage jeder Verzweigung. Wie er sich zu den übrigen Typen verhält, erklärt der Beitrag variablen und datentypen java.
Das hat eine praktische Folge: Eine Bedingung muss immer einen Wahrheitswert liefern. Ein Ausdruck, der eine Zahl oder einen Text ergibt, taugt nicht als Bedingung, solange kein Vergleich daraus einen boolean macht.

Logische Operatoren verknüpfen Bedingungen
Reicht ein einzelner Vergleich nicht aus, verknüpfen logische Operatoren mehrere boolesche Werte. UND verlangt, dass beide Teile true sind, ODER genügt mit einem wahren Teil, NICHT kehrt den Wert um. In Java schreibt man dafür &&, || und !. Wer eine zusammengesetzte Bedingung liest und sich über die Auswertungsreihenfolge nicht sicher ist, setzt Klammern. So steht die Absicht im Quelltext und nicht nur in der Regel zur Rangfolge.

Vergleichsoperatoren in Java
Java stellt Vergleichsoperatoren bereit, deren Ergebnis immer true oder false ist. Die Übersicht zu den Bedingungsoperatoren nennt sechs davon:
- == prüft, ob zwei Werte gleich sind.
- != prüft, ob zwei Werte ungleich sind.
- < prüft, ob der linke Wert kleiner ist als der rechte.
- <= prüft, ob der linke Wert kleiner oder gleich dem rechten ist.
- > prüft, ob der linke Wert größer ist als der rechte.
- >= prüft, ob der linke Wert größer oder gleich dem rechten ist.
Da das Ergebnis ein boolean ist, lässt es sich direkt in einer if-Bedingung verwenden oder mit logischen Operatoren kombinieren. Ein häufiger Anfängerfehler ist die Verwechslung von Gleichheitsvergleich und Zuweisung, deshalb lohnt beim Lesen von Bedingungen ein genauer Blick auf die Zeichen.
Strings und Objekte: equals statt ==
Bei Objekten vergleicht == die Referenzen und nicht den Inhalt. Laut der Erläuterung zu diesem Java-Fehler liefert == nur dann true, wenn beide Operanden auf dasselbe Objekt zeigen. Die Methode equals liefert dagegen true, wenn beide String-Objekte exakt dieselben Zeichen enthalten. Für den Textvergleich in einer Bedingung ist daher equals die richtige Wahl.
Verwirrend ist, dass == bei Strings manchmal trotzdem das erwartete Ergebnis liefert. Der Grund ist der String-Pool: Identische Literale liefern dasselbe String-Objekt. Zwei Texte, die zur Laufzeit erzeugt werden, sind dagegen verschiedene Objekte, auch wenn ihre Zeichen übereinstimmen. Ein Programm, das im Test funktioniert, kann deshalb mit anderer Eingabe falsch verzweigen.
Ähnlich verhält es sich bei Integer-Objekten. Der Quelle zufolge hält Java einen internen Integer-Cache für den Bereich -128 to 127. Innerhalb dieses Bereichs können Vergleiche mit == zufällig stimmen, außerhalb nicht. Wer Objekte konsequent mit equals vergleicht, umgeht diese Falle.
if-else schreiben: Ablauf und Syntax
Der Ablauf einer if-else-Verzweigung lässt sich in wenigen Schritten festhalten.
- Formuliere die Bedingung als Ausdruck, der true oder false ergibt, zum Beispiel mit einem Vergleichsoperator.
- Schreibe if, die Bedingung in runden Klammern und den Anweisungsblock in geschweiften Klammern.
- Ergänze bei Bedarf else mit eigenem Block für den Fall, dass die Bedingung false ist.
- Füge bei mehr als zwei Fällen weitere if-Zweige an, sodass eine if-else-if-Kette entsteht.
Die Form lautet also: if (bedingung) { Anweisungen } else { andere Anweisungen }. Der else-Teil ist optional, wie die Einführung zu if-Anweisungen festhält.

Vom Papier zum Quelltext
Bei verschachtelten Bedingungen hilft eine Skizze vor dem Programmieren. Ein Flussdiagramm zeigt, an welcher Stelle der Programmablauf sich teilt und welcher Weg bei true oder false folgt. Wer die Skizze zuerst anfertigt, erkennt, ob ein einfaches if-else genügt oder eine Kette nötig ist.

Übungsaufgaben: Verzweigung wählen und begründen
Der Lerneffekt entsteht nicht durch das Abtippen von Syntax, sondern durch die Begründung der Wahl. Zu jeder Aufgabe sollten Schülerinnen und Schüler schriftlich festhalten, welche Verzweigung sie einsetzen und warum.
- Notenzuordnung: Ein erreichter Punktwert wird einer Notenstufe zugeordnet. Zu begründen ist, warum hier eine if-else-if-Kette mit Vergleichsoperatoren passt und kein einzelnes if.
- Volljährigkeitsprüfung: Je nach Alter erscheint eine von zwei Meldungen. Zu begründen ist, warum if mit else genügt.
- Passwortabfrage: Eine Eingabe wird mit einem gespeicherten Text verglichen. Zu begründen ist, warum equals und nicht == verwendet wird.
- Anmeldung mit Vorbedingung: Erst wenn ein Konto existiert, wird das Passwort geprüft. Zu begründen ist, warum eine Verschachtelung oder eine UND-Verknüpfung sinnvoll ist.
- Menüauswahl: Eine Eingabe steht für genau eine von mehreren Aktionen. Zu vergleichen ist, ob eine if-else-if-Kette oder ein switch mit case-Zweigen übersichtlicher bleibt.
Eine gute Lösung enthält neben dem Programm einen Satz zur Begründung. Wer die Aufgaben der Reihe nach löst, erkennt, dass die Frage nach der Art der Bedingung die Wahl der Verzweigung bestimmt: ein Wahrheitswert, ein Bereich, ein Textvergleich oder eine Abhängigkeit.
Frequently asked questions
Muss auf jedes if ein else folgen?
Nein. Der else-Teil ist optional. Er wird nur gebraucht, wenn für den Fall, dass der Boolean-Ausdruck false ist, etwas geschehen soll.
Wann wird das innere if einer Verschachtelung ausgeführt?
Die Bedingung des inneren if wird nur ausgewertet, wenn die Bedingung des äußeren if true ist. Ist die äußere Bedingung false, bleibt der innere Teil unberührt.
Kann ich das Ergebnis eines Vergleichs speichern?
Ja. Ein Vergleichsoperator liefert true oder false. Dieser Wert passt zum Datentyp boolean und lässt sich daher in einer boolean-Variablen ablegen und später in einer Bedingung verwenden.



