Kursinhalt
Java-Grundlagen
Java-Grundlagen
String Pool, Methode Equals()
Die equals()-Methode
Dieses Kapitel bietet einen kurzen Überblick über die equals()
-Methode. Diese Methode wird verwendet, um Objekte zu vergleichen und wird häufig mit String-Objekten verwendet. Lassen Sie uns ein Beispiel für die Erstellung von zwei identischen String-Variablen und deren Vergleich mit ==
untersuchen:
Main
package com.example; public class Main { public static void main(String[] args) { String first = new String("string"); String second = new String("string"); System.out.println(first == second); } }
In der Antwort erhalten wir "false", aber warum? Die Werte der beiden String-Variablen sind gleich und entsprechen "string". Das liegt daran, dass ==
die Referenzen zu Objekten im Speicher vergleicht, nicht die tatsächlichen Werte. Unsere Objekte befinden sich außerhalb des String-Pools.
String-Pool
Was ist der String-Pool? Es ist ein Bereich im Heap-Speicher, der beim Erstellen von String-Objekten zugewiesen wird. Wenn wir ein String-Objekt mit dem Wert "string" erstellen und dann ein weiteres String-Objekt mit demselben Wert erstellen, verweisen beide Objekte auf dasselbe Objekt im Speicher, das sich im String-Pool befindet.
Warum haben wir in unserem Fall "false" erhalten? Das liegt daran, dass wir den String-Pool umgangen haben, indem wir Objekte mit der Syntax String first = new String("string");
erstellt haben. Wenn wir ein String-Objekt mit einer anderen Syntax erstellen, wie String first = "string";
, wird es im String-Pool platziert.
Betrachten wir ein Beispiel für Code:
Main
package com.example; public class Main { public static void main(String[] args) { String first = "string"; String second = "string"; String third = new String("string"); System.out.println("Result of comparing first and second: " + (first == second)); System.out.println("Result of comparing first and third: " + (first == third)); } }
Betrachten wir ein Diagramm, das erklärt, wie es funktioniert und welche Objekte sich im String Pool
befinden.
Wie vergleichen wir die Werte von Strings im String Pool und außerhalb davon? Zu diesem Zweck stellt Java die equals
-Methode zur Verfügung, die die Werte unserer String
-Objekte anstelle ihrer Referenzen vergleicht. Betrachten wir ein Beispielcode, in dem wir Strings mit der equals
-Methode anstelle von ==
vergleichen.
Main
package com.example; public class Main { public static void main(String[] args) { String first = "string"; String second = "string"; String third = new String("string"); System.out.println("Result of comparing first and second: " + (first.equals(second))); System.out.println("Result of comparing first and third: " + (first.equals(third))); } }
Jetzt können wir sehen, dass wir den korrekten Vergleich haben.
Danke für Ihr Feedback!