equals in Java
Vergleiche String-Text mit equals, damit passende Woerter true drucken. In Yard.java schreibe String a = "red"; und String b = "red";, dann drucke a.equals(b). Fuege String c = "blue"; hinzu und drucke a.equals(c). Kompiliere mit javac Yard.java und starte java Yard. Der Bildschirm soll zuerst true, dann false zeigen. Eine zweite Demo baut zwei new String("red")-Objekte, damit == false drucken kann, waehrend equals weiterhin true druckt. Lass debugging fuer die naechste Seite — diese Lektion ist Inhaltsgleichheit gegen Objektidentitaet.
Text mit equals abgleichen
Die Polymorphie-Seite liess verschiedene horn-Koerper ueber Machine-typisierte Variablen laufen. Diese Seite vergleicht Text. Oeffne Yard.java. Halte den oeffentlichen Klassennamen Yard. Loesche uebrige Machine / Truck / Car-Demos, wenn sie die String-Geschichte begraben, uebrige abstract-Fuellungen, Pfaddemos und Tastatur-Scanner. Das Programm darf nicht auf Tippen warten. Du brauchst keine Importzeile fuer diese Demos.
In Yard.main baue drei Strings:
String a = "red";
String b = "red";
String c = "blue";
Drucke die Vergleiche:
System.out.println(a.equals(b));
System.out.println(a.equals(c));
Die Methode equals schaut auf die Zeichen. Gleicher Text liefert true. Anderer Text liefert false.
public class Yard {
public static void main(String[] args) {
String a = "red";
String b = "red";
String c = "blue";
System.out.println(a.equals(b));
System.out.println(a.equals(c));
}
}
Aus dem Ordner, der Yard.java haelt, starte javac Yard.java. Wenn Klammern, geschweifte Klammern und Semikolons passen, schreibt javac keine eigene Zeile. Dann starte java Yard — nicht java Yard.java. Lass die Endung .java beim Startbefehl weg. Halte eine oeffentliche Klasse in der Datei, damit der Name zu Yard passt.
Der Bildschirm zeigt true, dann false. Geh den Lauf einmal durch. Java startet bei Yard.main. a.equals(b) vergleicht red mit red und druckt true. a.equals(c) vergleicht red mit blue und druckt false. Du hast eine Methode auf a aufgerufen und den anderen String als Argument uebergeben.
Wenn du noch tone / honk / beep aus einer Polymorphie-Datei siehst, wechsle zur equals-Lehrdatei und starte java Yard erneut. Wenn du die Strings selbst statt der equals-Ergebnisse druckst, siehst du red und blue auf dem Bildschirm — wickle a.equals(b) in println, damit der boolean erscheint.
Sag die Regel laut, waehrend du den Bildschirm beobachtest: equals fragt, ob der Text Zeichen fuer Zeichen passt. Erfinde auf dieser Seite kein Debugger-Fenster. Debugging wartet auf die naechste Lektion.
== mit equals auf new String gegenueberstellen
Ein zweites Programm baut zwei getrennte String-Objekte mit new. Beide halten den Text red. Das Programm druckt a == b und dann a.equals(b).
public class Yard {
public static void main(String[] args) {
String a = new String("red");
String b = new String("red");
System.out.println(a == b);
System.out.println(a.equals(b));
}
}
Kompiliere mit javac Yard.java, dann starte java Yard. Der Bildschirm zeigt false, dann true. Die ==-Pruefung fragt, ob a und b genau dasselbe Objekt im Speicher sind. Zwei new String("red")-Aufrufe bauen zwei Objekte, also druckt == false. Die equals-Pruefung schaut weiterhin auf die Zeichen, also druckt sie true.
Lies die beiden Zeilen in main noch einmal. Erste Zeile: Identitaet mit ==. Zweite Zeile: Inhalt mit equals. Behalte beide Drucke fuer diese Lehrform, damit der Kontrast auf einem Bildschirm bleibt. Wenn du nur == druckst, verpasst du den Inhaltsabgleich, den diese Seite auch lehrt.
Bei Anfaenger-Literals wie "red" ohne new kann Java dasselbe pooled Objekt wiederverwenden, sodass == manchmal zufaellig true wirkt. Diese zweite Demo nutzt absichtlich new String("red"), damit die Identitaetspruefung klar false bleibt, waehrend der Inhalt true bleibt. Bevorzuge equals, wenn dir der Text wichtig ist.
Wenn uebrige Polymorphie-Demos noch in der Naehe liegen, behalte sie als Geschichte. Fuer diese Lektion starte die equals-Lehrdatei, damit der Bildschirm booleans zeigt, nicht horn-Woerter. Wenn javac ueber doppelte oeffentliche Klassen klagt, halte nur Yard public.
Verglichen mit Polymorphie-Aufrufen
Auf der Polymorphie-Seite liess ein Methodenname verschiedene Koerper ueber eltern-typisierte Variablen laufen. Auf dieser Seite antwortet ein Methodenname — equals — ob zwei Strings denselben Text halten, und == antwortet, ob sie dasselbe Objekt sind. Du kompilierst weiterhin Yard.java und startest java Yard. Die neuen Token sind equals, die boolean-Drucke true / false, und der ==-Kontrast mit new String.
Wenn eine uebrige Datei Machine t = new Truck() noch offen ist, siehst du horn-Aufrufe. Wechsle zur equals-Datei, damit main Strings baut und Vergleichsergebnisse druckt. Halte Debugging-Tool-Demos von dieser Seite fern. Halte Tastatureingabe von dieser Seite fern.
Was diese Seite fuer debugging laesst
Diese Seite vergleicht String-Inhalt und zeigt, warum == die falsche Voreinstellung fuer Text ist. Die naechste Seite zeigt debugging, wo du mit sorgfaeltigem Lesen von Bildschirm und Quelle findest, warum ein Programm falsch laeuft. Bleib hier bei equals und ==. Erzwinge noch keinen vollstaendigen Debugger-Durchgang.
Wenn du spaeter einen falschen Zweig debugst, ist ein fehlgeschlagener equals-Check eine haeufige Ursache. Behandle diese Seite als Vergleichshaelfte jener Nachbargeschichte. Beende beide Yard-Demos, bis true / false und false / true sich automatisch anfuehlen, bevor du die Debugging-Lektion oeffnest.
Vor dem debugging
Du kannst a.equals(b) auf passendem red-Text aufrufen und true sehen, dann false fuer blue. Du kannst zwei new String("red")-Objekte bauen und sehen, dass == false druckt, waehrend equals true druckt. Kompiliere Yard.java und starte java Yard fuer jede behaltene Demo der Reihe nach. Inhaltsgleichheit und Objektidentitaet blieben getrennt. Die naechste Seite ist debugging, wo du Fehler mit Bildschirm und Quelle nebeneinander jagst.
Behalte die Drei-String-equals-Demo fuer einen klaren Inhaltscheck. Behalte die new String-Demo fuer einen klaren ==-Kontrast. Halte Debugging-Dateien von dieser Seite fern. Diese drei Gewohnheiten sind der Checkpoint, bevor du weitergehst. Wenn equals fuer passenden Text true druckt — und wenn == fuer zwei neue Objekte mit diesem Text false druckt — hat diese Lektion ihre Arbeit getan und du bist bereit fuer das naechste Thema ueber debugging.
Ein letzter Gang durch den Ordner: ein oeffentliches Yard, String-Vergleiche in main, kein Tastaturwarten, kein erzwungener Debugger. Starte javac Yard.java und java Yard noch einmal auf der offenen Demo. Wenn der Bildschirm noch die booleans druckt, die du erwartest, ist die Vergleichsgeschichte solid und der Kurs kann auf der naechsten Seite zu debugging wechseln.
🧠 Testen Sie Ihr Wissen
Testen Sie Ihr Wissen
Fordern Sie sich mit diesem interaktiven Quiz heraus und sehen Sie, wie gut Sie das Thema verstehen
📝 Anweisungen
- Lesen Sie jede Frage sorgfältig
- Wählen Sie die beste Antwort für jede Frage
- Sie können das Quiz so oft wiederholen, wie Sie möchten
- Ihr Fortschritt wird oben angezeigt