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

bookString-Pool, Methode Equals()

Die equals()-Methode

Diese Methode wird verwendet, um Objekte zu vergleichen, und wird häufig mit String-Objekten eingesetzt. Im Folgenden wird ein Beispiel betrachtet, in dem zwei identische String-Variablen erstellt und mit == verglichen werden:

Main.java

Main.java

copy
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 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 wir den String-Pool durch die Verwendung von new String("string") umgangen haben, 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

Main.java

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

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 bereit, die die Werte unserer String-Objekte anstelle ihrer Referenzen vergleicht. Betrachten wir einen Beispielcode, in dem wir Strings mit der Methode equals anstelle von == vergleichen.

Main.java

Main.java

copy
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.

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

bookString-Pool, Methode Equals()

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 wird ein Beispiel betrachtet, in dem zwei identische String-Variablen erstellt und mit == verglichen werden:

Main.java

Main.java

copy
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 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 wir den String-Pool durch die Verwendung von new String("string") umgangen haben, 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

Main.java

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

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 bereit, die die Werte unserer String-Objekte anstelle ihrer Referenzen vergleicht. Betrachten wir einen Beispielcode, in dem wir Strings mit der Methode equals anstelle von == vergleichen.

Main.java

Main.java

copy
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.

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 5. Kapitel 7
some-alt