Junior
Waarom maken we geen string met de constructor new String()?
sobes.tech AI
Antwoord van AI
Het maken van een string met new String() creëert altijd een nieuw String-object op de heap, zelfs als er al een string met die waarde bestaat in de String Pool.
Aan de andere kant worden stringliteralen (bijvoorbeeld "hallo") geplaatst in de String Pool. Als er al een string met die waarde in de String Pool bestaat, wordt het bestaande object gebruikt. Het gebruik van literalen stelt de JVM in staat het geheugengebruik te optimaliseren.
Dus leidt new String() tot overmatig geheugenverbruik en kan de prestaties verminderen door het creëren van onnodige objecten. We geven de voorkeur aan het gebruik van stringliteralen of andere methoden om strings te maken (zoals String.valueOf()) om middelen te besparen.
// Niet aanbevolen. Maakt altijd een nieuw object op de heap.
String str1 = new String("hallo");
// Aanbevolen. Gebruikt de String Pool, kan een bestaand object gebruiken.
String str2 = "hallo";
// Het resultaat van de vergelijking kan verschillend zijn
System.out.println(str1 == str2); // Meestal false, omdat het verschillende objecten zijn