Vergleichsoperatoren
Mit den arithmetischen Operatoren haben wir bereits ein Konstrukt kennengelernt, mit welchem wir Zahlenwerte kombinieren und zu komplexeren Ausdrücke zusammensetzen konnten.
Wenn immer wir Zahlenwerte mit arithmetischen Operatoren kombinieren, ist das Resultat wieder ein Zahlenwert.
Dies ist im folgenden nochmals am Beispiel des Operators +
dargestellt:
int res = 5 + 3;
Auch Vergleichsoperatoren kombinieren zwei Werte.
Das Resultat ist aber nicht ein neuer Zahlenwert, sondern ein Wahrheitswert, also true
oder false
.
Wahrheitswerte und boolsche Variablen
In Java gibt es zwei Wahrheitswerte: true
und false
.
Wie alle Werte haben auch diese einen Datentyp.
true
und false
sind vom Datentyp boolean
.
Diese zwei Werte sind die einzigen die durch den Datentyp repräsentiert werden.
Wie immer können wir den Datentyp einsetzen, um eine Variable zu deklarieren, der wir dann einen entsprechenden Wert zuweisen können:
boolean b;
b = true
oder kürzer:
boolean b = true;
Variablen vom Datentyp boolean
nennt man boolsche Variablen. Diese werden immer dann eingesetzt, wenn wir in einem Programm zwischen nur zwei Werten unterscheiden müssen:
- Hat der Benutzer eine 3 eingegeben, oder nicht?
- Ist das Resultat einer Berechnung gerade oder ungerade?
- Ist die vom Benutzer eingegebene Zahle grösser als 7?
Wie obige Beispiele zeigen, entstehen solche Wahrheitswerte häufig durch Vergleiche zweier Werte. Dies ist das Konzept der Vergleichsoperatoren.
Vergleichsoperatoren
Vergleichsoperatoren nehmen zwei Werte, und kombinieren diese zu einem neuen, boolschen Wert. Wir kennen die typischen Vergleichsoperatoren bereits aus der Mathematik:
Mathematik | Java | Bedeutung |
---|---|---|
> | grösser als | |
< | kleiner als | |
>= | grösser gleich | |
<= | kleiner gleich | |
== | gleich | |
!= | ungleich |
Die folgenden Ausdrücke ergeben alle Wahrheitswerte und können natürlich auch einer boolschen Variable zuweisen:
5 == 3; // false
5 > 3; // true
5 >= 3; // true
5 != 3; // true
boolean b = 5 <= 3;
Im nachfolgenden Trinket können Sie mit diesen Operatoren experimentieren:
Fallstrick: Gleichheit bei Strings
Man könnte nun erwarten, dass man die oben diskutierten Operatoren nicht nur für Zahlenwerte, sondern auch für Strings anwenden könnte. Tatsächlich sind folgende Ausdrücke gültiger Java Code:
"abc" == "cde"; // ergibt false
"abc" != "cde"; // ergibt true
Leider macht dieser Code in den meisten Fällen aber nicht das richtige.
In Java ist nämlich nicht garantiert, dass folgender Code true
ergibt:
String a = "abc";
a == "abc"; // muss nicht unbedingt `true` ergeben
Wir werden dieses Verhalten erst richtig verstehen können, nachdem wir Referenztypen kennengelernt haben.
Im Moment müssen wir uns einfach merken, dass wir Strings nie mit ==
vergleichen sollten.
Stattdessen stellt uns Java die Methode equals
zur Verfügung:
String a = "abc";
a.equals("abc"); // ergibt immer `true`, wenn a den Wert "abc" hat.
Experimente
Experimentieren Sie wieder selbst mit diesem Konzept:
- Testen Sie verschiedene Relationen (
=
,!=
,>
,<
,>=
,<=
) zwischen Zahlen - Testen Sie Strings auf Gleichheit, indem sie
.equals
benutzen. - Was passiert, wenn Sie einen String und eine Zahl vergleichen?
Haben Sie Fragen oder Bemerkungen? Schreiben Sie diese doch ins Forum.