Heim >Java >javaLernprogramm >Warum können Sie in Java Zeichenfolgen ohne das Schlüsselwort „new' erstellen?

Warum können Sie in Java Zeichenfolgen ohne das Schlüsselwort „new' erstellen?

Barbara Streisand
Barbara StreisandOriginal
2024-11-16 21:51:03584Durchsuche

Why Can You Create Strings in Java Without the

Strings: Objekte ohne das Schlüsselwort „new“

Java-Strings sind tatsächlich Objekte, dennoch sind sie insofern einzigartig, als sie ohne das Schlüsselwort „new“ erstellt werden können das Schlüsselwort „neu“. Dies wirft die Frage auf: Warum?

Anfangs scheinen Strings wie andere Objekte erstellt zu werden:

Object obj = new Object();

Strings werden jedoch nicht auf diese Weise initialisiert:

String str = "Hello World";

Internierung von String-Literalen

Um diese Diskrepanz zu verstehen, müssen wir uns mit dem Konzept der String-Internierung befassen. Internierung bedeutet, dass sich jedes Vorkommen eines bestimmten String-Literals (z. B. „abcd“) auf eine einzelne Instanz dieses Strings bezieht, anstatt jedes Mal eine neue Instanz zu erstellen.

In Java werden Strings mit doppelten Anführungszeichen deklariert werden als Literale behandelt und automatisch interniert. Dies bedeutet, dass:

String a = "abcd";
String b = "abcd";

zu Folgendem führt:

a == b; // True

String-Erstellung mit „new“

Obwohl die Internierung für String aktiviert ist Literale können Sie weiterhin Zeichenfolgen mit dem Schlüsselwort „new“ erstellen:

String a = new String("abcd");
String b = new String("abcd");

In diesem Fall ist jedoch Folgendes möglich:

a == b; // False

Vorteile von Interning

Das Internieren von Zeichenfolgenliteralen bietet mehrere Vorteile:

  • Leistung: Durch die Verwendung einer einzelnen Instanz für jede eindeutige Zeichenfolge reserviert die JVM weniger Speicher und leistet weniger weniger Objekterstellung.
  • Speichereinsparungen: Interning stellt sicher, dass für jede eindeutige Zeichenfolge nur eine einzige Instanz vorhanden ist, wodurch der Speicherbedarf reduziert wird.
  • Gleichheitsprüfung: Die Verwendung von „==" für String-Literale ist gültig, da dadurch die physische Gleichheit überprüft wird, die durch das Internieren gewährleistet ist.

Hinweis: Es wird immer empfohlen, . equal()-Methode zum Vergleichen von Zeichenfolgen, auch für interne Zeichenfolgen, da sie auf Inhaltsgleichheit prüft.

Das obige ist der detaillierte Inhalt vonWarum können Sie in Java Zeichenfolgen ohne das Schlüsselwort „new' erstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn