String-Erstellung in Java: Enthüllung der Abwesenheit von „new“
Während Java normalerweise das Schlüsselwort „new“ verwendet, um Objekte zu instanziieren, werden Strings verwendet weisen eine merkwürdige Abweichung von dieser Norm auf. Im Gegensatz zu anderen Objekten können Zeichenfolgen erstellt werden, ohne „new“ aufzurufen. Dies wirft Fragen auf: Warum gibt es diese Ausnahme? Ist es immer noch möglich, „neu“ bei der String-Erstellung zu verwenden?
Den Internierungsmechanismus verstehen
Zusätzlich zu den vorherigen Erklärungen ist es wichtig, den verwendeten Internierungsmechanismus zu erkennen für String-Literale („abcd“, aber nicht new String(„abcd“) in Java). Dieser Mechanismus stellt sicher, dass jede Instanz von „abcd“ auf eine einzelne String-Instanz verweist, wodurch verhindert wird, dass bei wiederholten Referenzen neue Instanzen erstellt werden. Als Ergebnis:
String a = "abcd"; String b = "abcd"; a == b; //True
Vergleich mit nicht internierten Strings
Im Gegensatz dazu sind die resultierenden Objekte beim Erstellen von Strings mit „new“ unterschiedliche Instanzen:
String a = new String("abcd"); String b = new String("abcd"); a == b; // False
Überlegungen zur Leistung
Das Internieren von String-Literalen hat tiefgreifende Auswirkungen auf die Leistung. Zeichenfolgen kommen im Code oft mehrfach vor und durch die Internierung entfällt die Notwendigkeit, sie wiederholt zu instanziieren. Diese Optimierung erweist sich besonders in folgenden Szenarios als vorteilhaft:
for (int i = 0; i < 10; i++) { System.out.println("Next iteration"); }
Ohne Internierung würde die Zeichenfolge „Nächste Iteration“ 10 Instanziierungen erfordern, während Internierung eine einzige Instanziierung gewährleistet.
Das obige ist der detaillierte Inhalt vonWarum können in Java Strings ohne „new“ erstellt werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!