CodeGym /Java-Kurse /Java Syntax /Bedingungen vergleichen und festlegen

Bedingungen vergleichen und festlegen

Java Syntax
Level 4 , Lektion 6
Verfügbar

„Ich möchte dir zeigen, wie man Variablen in Java vergleichen kann.

„Du kennst bereits die einfachsten Vergleichsoperatoren – kleiner als (<) und größer als (>).“

„Ja.“

„Es gibt auch Operatoren wie gleich (==) und ungleich (!=). Außerdem kleiner als oder gleich (<=) und größer als oder gleich (>=).“

„Jetzt wird die Sache interessant.“

„Beachte, dass es die Operatoren =< oder => in Java nicht gibt!“

„Das Zeichen = wird für Zuweisungsoperationen verwendet. Deshalb werden zwei Gleichheitszeichen (==) verwendet, um die Gleichheit zu prüfen. Um zu überprüfen, ob Variablen nicht gleich sind, verwende den Operator !=.“

„Ach so.“

„Wenn wir zwei Variablen in Java mit dem ==-Operator vergleichen, vergleichen wir den Inhalt der Variablen.“

„Also werden bei primitiven Variablen deren Werte verglichen.“

„Bei Referenzvariablen werden die Referenzen verglichen. Angenommen, wir haben identische, aber eigenständige Objekte. Weil Referenzen auf sie unterschiedlich sind, zeigt ein Vergleich der beiden an, dass sie nicht gleich sind, d.h. das Ergebnis des Vergleichs lautet false. Ein Vergleich von Referenzen ist nur dann true, wenn beide Referenzen auf das gleiche Objekt verweisen.

„Zum Vergleichen der internen Inhalte von Objekten verwenden wir die spezielle Methode equals. Diese Methode (und alle Methoden der Objektklasse) werden vom Compiler zu deiner Klasse hinzugefügt, auch wenn du sie nicht deklarierst. Ich will dir einige Beispiele zeigen:“

Code Erläuterung
1
int a = 5;
int b = 5;
System.out.println(a == b);
Vergleiche primitive Typen.
true wird auf dem Bildschirm angezeigt.
2
Cat cat1 = new Cat("Oscar");
Cat cat2 = cat1;
System.out.println(cat1 == cat2);
Vergleiche Referenzen.
true wird auf dem Bildschirm angezeigt.
Beide Variablen enthalten Referenzen auf das gleiche Objekt.
3
String s = new String("Mom");
String s2 = s;
System.out.println(s == s2);
Vergleiche Referenzen.
true wird auf dem Bildschirm angezeigt.
Beide Variablen enthalten Referenzen auf das gleiche Objekt.
4
Cat cat1 = new Cat("Oscar");
Cat cat2 = new Cat("Oscar");
System.out.println(cat1 == cat2);
Vergleiche Referenzen.
false wird auf dem Bildschirm angezeigt.
Die beiden Variablen referenzieren identische Katze-Objekte, aber nicht das gleiche.
5
String s = new String("Mom");
String s2 = new String("Mom");
System.out.println(s == s2);
Vergleiche Referenzen.
false wird auf dem Bildschirm angezeigt.
Die beiden Variablen referenzieren identische String-Objekte, aber nicht das gleiche.
6
String s = new String("Mom");
String s2 = new String("Mom");
System.out.println(s.equals(s2));
Vergleiche Objekte.
true wird auf dem Bildschirm angezeigt.
Die beiden Variablen referenzieren identische Katze-Objekte.

„Oh, das hätte ich fast vergessen! Hier sind ein paar Übungen für dich:“

Kommentare (19)
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION
Lukas Level 13, Germany, Germany
26 Dezember 2023
Falls man bei vier Zahlen sich haufenweise Vergleiche ersparen möchte, kann man eine Methode schreiben, die zwei Zahlen miteinander vergleicht und die größere zurückgibt. Dann erstellt man neben seinen vier Zahlen noch drei weitere Variabeln mithilfe der erstellten Methode. Die ersten beiden Variabeln sind die jeweils größeren Zahlen der Vergleiche "zahl1 & zahl2" sowie "zahl3 & zahl4". Die dritte Variabel ist dann der Vergleich der vorherigen zwei gespeicherten Variabeln. Die dritte Variabel wird dann als Ergebnis ausgegeben. int z1 = scan.nextInt(); int z2 = scan.nextInt(); int z3 = scan.nextInt(); int z4 = scan.nextInt(); int z1_z2 = biggerNumber(z1, z2); int z3_z4 = biggerNumber(z3, z4); int biggest = biggerNumber(z1_z2, z3_z4); System.out.println(biggest); } public static int biggerNumber(int a, int b) { return a >= b ? a : b; }
Marcellus Level 6, Denmark
4 Januar 2023
Wenn Ziel erfasst als easy gilt, dann weiß ich nicht mehr weiter.
Anonymous #11330618 Level 7, Germany, Germany
11 Mai 2023
Ich fand die sogar ganz gut machbar. Einfach vier Vergleiche und dann ne Ausgabe
Willson Level 10, Nürnberg, Germany
20 August 2023
für die lesson ist die eigentlich sogar relativ einfach, da es (falls du die aufgaben von davor auch fleißig gemacht hast) nichts anderes ist.
LoOky Level 11, Ludwigshafen, Germany
4 Januar 2024
2 Zahlen einlassen und 4 Bedingungen formulieren, die dir sogar vorgeben wurden. Jede Bedingung nur mit ein Sout befehle versehen mit den Gewünschten zahl und fertig.
Anubis Level 22, Germany, Germany
25 Juli 2022
Falls bei euch auch wie bei mir immer der 2. Name leer ist versucht String namen1 = reader.readLine(); System.in.read(); String namen2 = reader.readLine(); Von der ersten Eingabe hängt dann noch das Enter im reader fest wodurch der 2. Name leer bleibt. durch das System.in.read(); dazwischen wird das einmal geleert und die Eingabe vom 2. Namen wird korrekt eingelesen. Dann funktioniert allerdings die Abgabe der Aufgabe nicht mehr
CodingCalle Level 15, Germany, Germany
16 Mai 2022
Einfach nur frustrierend, wenn man Aufgaben vorgewurfen bekommnt über Themen die man noch nicht behandelt hat.
Andreas Rinas Level 8, Germany, Germany
17 Mai 2022
Welche sind denn gemeint? Auf dieser Seite konnte man alle Aufgaben mit den behandelten Themen lösen.
claudia Level 19, Hamburg, Germany
21 Mai 2022
Hi AndreasRinas, ich habe alles durchforstet, aber "length" habe ich in den vorhergehenden Lektionen nicht gefunden. Magst du mir sagen, wo du es gesehen hast?
Konsti314 Level 8, Delmenhorst, Germany
14 Juni 2023
Ich habe die Methode .length auch nicht gesehen... Das ist nervig, wenn man anscheinend irgendwelche Methoden nutzen muss, die, die String Klasse anscheinend hat, aber noch nicht gesehen hat oder von ihrer Existenz bescheid weiß... und ineffizient, falls man das Internet durchsuchen muss...
Sneaky One Level 5, Germany, Germany
6 Dezember 2021
Mal eine Anmerkung zur Aufgabe "Jen oder Jen?" Hallo zusammen, bei dieser Aufgabe ist mir etwas aufgefallen, für das ich bisher noch keine zufriedenstellende Antwort gefunden habe. Es geht dabei um den Vergleich der Strings. Ich hab, wie in der Aufgabe gefordert, die Strings durch den Reader einlesen lassen. Folglich lautete die Initialisierung der Strings: String name1 = reader.readLine(); String name2 = reader.readLine(); Versuche ich die beiden Strings jetzt mit == zu vergleichen, dann funktioniert das Ganze nicht. Ich muss auf die Methode .equals() zurückgreifen, damit die Strings, oder besser deren eigentliche Werte, miteinander verglichen werden. Der Vergleich mit == scheint nur die Referenz a.k.a. den Hash zu vergleichen. Wenn ich die Strings jetzt aber wie folgt initialisiere, dann wird es seltsam... String name 1 = "John"; String name 2 = "John"; Wenn ich jetzt die beiden Strings mit == vergleiche, dann funktioniert es! Jetzt stell sich für mich die Frage, "Was verändert sich dadurch, dass ich die Namen von einem Reader einlesen lasse, so dass ich den Vergleich mit .equals() und nicht mit == machen muss?" Eine fundierte Erklärung dafür würde mir echt den Tag versüßen! ;-)
Spydrow Level 14, Germany, Germany
1 Juni 2022
In dem Fall String name 1 = "John"; String name 2 = "John"; verweisen beide Strings auf denselben Speicherpunkt mit dem Wert "John" (mit name1 hast du ihn zugewiesen und name2 verweist dann auf denselben Wert "John", weil er bereits vorliegt und Java das erkennt. Wenn du aber über die Tastatur die Strings eingibst, dann bekommt jeder String seinen eigenen Speicherplatz von vornerein zugewiesen. Selbst wenn man nachher 2x denselben Namen eingibt, sind sie doch an unterschiedlichen Stellen gespeichert. Ich hoffe das ist einigermaßen verständlich.
iSimuulation Level 16, Germany, Germany
25 August 2022
Der „==“-Operator prüft auf Wert-Gleichheit, während die equals Methode auf (inhaltliche) Objekt-Gleichheit prüft.
Thomas Level 7, Nuremberg, Germany Expert
8 Januar 2023
Heißt das, dass dann auch der name2 verändert wird, wenn ich z.B. "John" durch name1 = "Jack" in Verlauf des Programms verändere ?
Damokles Level 7, Erfurt, Germany
9 Januar 2023
Nein, name2 bleibt John
Bernhard M Level 4, Germany, Germany
12 Januar 2023
boolean c = a.equals(b); if (c == true){..... Da muss man erstmal drauf kommen!
Markus Level 8, Germany
24 Juli 2021
Hello Daniel, its the same but Java is very correctly by the language not print :-)
Daniel Ritter Level 17, Augsburg, Deutschland
3 April 2021
:-) Ich muss damit klar kommen, dass "nichts ausgeben" tatsächlich meint, dass kein print()/println() aufgerufen werden soll. Ich fall jedes mal drauf rein, und geb nen leeren String aus :-D
Anonymous #11330618 Level 7, Germany, Germany
11 Mai 2023
geht mir genauso :D