String-Pool und die Equals()-Methode
Swipe um das Menü anzuzeigen
Die equals()-Methode
Diese Methode wird verwendet, um Objekte zu vergleichen, und wird häufig mit String-Objekten eingesetzt. Im Folgenden betrachten wir ein Beispiel, in dem zwei identische String-Variablen erstellt und mit == verglichen werden:
Main.java
123456789package 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); } }
Das Ergebnis ist false, da == Objektverweise und nicht deren tatsächliche Werte vergleicht. Obwohl beide Strings "string" enthalten, handelt es sich um unterschiedliche Objekte im Speicher, die außerhalb des String-Pools erstellt wurden.
String-Pool
Der String-Pool ist ein Teil des Heap-Speichers, in dem String-Literale abgelegt werden. Wenn Strings mit demselben Wert als Literale erstellt werden, verweisen sie auf dasselbe Objekt im Speicher.
Warum haben wir also false erhalten? Weil wir den String-Pool umgangen haben, indem wir new String("string") verwendet haben, was ein neues Objekt im Speicher erzeugt. Bei der Verwendung von String first = "string"; wird der String im String-Pool abgelegt und kann gemeinsam genutzt werden.
Sehen wir uns ein Codebeispiel an:
Main.java
1234567891011package 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)); } }
Betrachtung eines Diagramms, 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? Dafür stellt Java die Methode equals zur Verfügung, die die Werte unserer String-Objekte anstelle ihrer Referenzen vergleicht. Betrachten wir ein Beispiel, in dem wir Strings mit der Methode equals statt mit == vergleichen.
Main.java
1234567891011package 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 sehen wir, dass wir den korrekten Vergleich haben.
Verwendung der Methode equals() anstelle von == beim Arbeiten mit String.
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen