Kursinhalt
Java-Grundlagen
Java-Grundlagen
String-Pool, Methode Equals()
Die equals()-Methode
Dieses Kapitel bietet einen kurzen Überblick über die Methode equals()
. Diese Methode wird verwendet, um Objekte zu vergleichen, und wird häufig mit String-Objekten eingesetzt. Betrachten wir ein Beispiel, in dem zwei identische String-Variablen erstellt und mit ==
verglichen werden:
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 Ausgabe erhalten wir "false", aber warum? Die Werte der beiden String-Variablen sind gleich und entsprechen "string". Das liegt daran, dass ==
die Referenzen auf Objekte im Speicher vergleicht und nicht die tatsächlichen Werte. Unsere Objekte befinden sich außerhalb des String-Pools.
String-Pool
Was ist der String-Pool? Es handelt sich um einen Bereich im Heap-Speicher, der beim Erstellen von String-Objekten zugewiesen wird. Wenn wir ein String-Objekt mit dem Wert "string" erstellen und anschließend ein weiteres String-Objekt mit demselben Wert erzeugen, verweisen beide Objekte auf dasselbe Objekt im Speicher, das sich im String-Pool befindet.
Warum haben wir in unserem Fall also "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 wie String first = "string";
erzeugen, wird es im String-Pool abgelegt.
Betrachten wir ein Beispiel für einen 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 solchen außerhalb davon? Zu diesem Zweck stellt Java die Methode equals
bereit, die die Werte unserer String
-Objekte anstelle ihrer Referenzen vergleicht. Betrachten wir ein Beispiel, in dem wir Strings mit der Methode equals
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))); } }
Nun können wir sehen, dass wir den korrekten Vergleich haben.
Danke für Ihr Feedback!