String-Pool, Methode Equals()
Swipe um das Menü anzuzeigen
Die Methode equals()
Diese Methode wird verwendet, um Objekte zu vergleichen, und wird häufig mit String-Objekten eingesetzt. Im Folgenden wird ein Beispiel betrachtet, bei 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 gespeichert werden. Wenn Strings mit demselben Wert als Literale erstellt werden, verweisen sie auf dasselbe Objekt im Speicher.
Warum haben wir also false erhalten? Weil der String-Pool durch die Verwendung von new String("string") umgangen wurde, wodurch ein neues Objekt im Speicher erzeugt wird. Bei der Verwendung von String first = "string"; wird der String im String-Pool abgelegt und kann gemeinsam genutzt werden.
Im Folgenden ein Codebeispiel:
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)); } }
Betrachten wir ein Diagramm, das erklärt, wie es funktioniert und welche Objekte sich im String Pool befinden.
Wie vergleicht man die Werte von Strings im String Pool und außerhalb davon? Zu diesem Zweck 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 anstelle von == 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.
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