Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen String-Pool und die Equals()-Methode | String
Java Grundlagen

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

Main.java

123456789
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); } }

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

Main.java

1234567891011
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)); } }

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

Main.java

1234567891011
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 sehen wir, dass wir den korrekten Vergleich haben.

Note
Hinweis

Verwendung der Methode equals() anstelle von == beim Arbeiten mit String.

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 5. Kapitel 7

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Abschnitt 5. Kapitel 7
some-alt