Sobes.tech
Junior

Warum erstellen wir keinen String mit dem Konstruktor new String()?

sobes.tech KI

Antwort von AI

Das Erstellen einer Zeichenkette mit new String() erstellt immer ein neues String-Objekt im Heap, auch wenn bereits eine Zeichenkette mit diesem Wert im String Pool existiert.

Im Gegensatz dazu werden String-Literale (z.B. "hallo") im String Pool abgelegt. Wenn bereits eine Zeichenkette mit diesem Wert im String Pool existiert, wird das vorhandene Objekt verwendet. Die Verwendung von Literalen ermöglicht es der JVM, die Speichernutzung zu optimieren.

Daher führt new String() zu übermäßigem Speicherverbrauch und kann die Leistung verringern, da unnötige Objekte erstellt werden. Wir bevorzugen die Verwendung von String-Literalen oder anderen Methoden zur String-Erstellung (wie String.valueOf()), um Ressourcen zu sparen.

// Nicht empfohlen. Erzeugt immer ein neues Objekt im Heap.
String str1 = new String("hallo");

// Empfohlen. Nutzt den String Pool, kann ein bestehendes Objekt verwenden.
String str2 = "hallo";

// Das Ergebnis des Vergleichs kann unterschiedlich sein
System.out.println(str1 == str2); // In der Regel false, da es verschiedene Objekte sind