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:
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!