Es wird angenommen, dass es im Allgemeinen vorzuziehen ist, einen StringBuilder für die String-Verkettung in Java zu verwenden. Ist dies immer der Fall?
Was ich meine, ist Folgendes: Ist der Aufwand, ein StringBuilder
-Objekt zu erstellen, die append()
-Methode und schließlich toString()
aufzurufen, bereits geringer als die Verkettung vorhandener Strings mit dem +
-Operator für zwei Strings, oder ist es nur bei mehr (als zwei) Strings ratsam?
Wenn es einen solchen Schwellenwert gibt, wovon hängt er ab (vielleicht von der Länge der Zeichenfolge, aber auf welche Weise)?
Und schließlich, würden Sie die Lesbarkeit und Prägnanz der +
-Verkettung gegen die Leistung des StringBuilders
in kleineren Fällen wie zwei, drei oder vier Zeichenketten eintauschen?
Die explizite Verwendung von StringBuilder
für reguläre Verkettungen wird sowohl unter obsolete Java optimization tips als auch unter Java urban myths als obsolet bezeichnet.
Generell sollte man immer den besser lesbaren Code verwenden und nur refaktorisieren, wenn die Leistung ein Problem ist. In diesem speziellen Fall optimieren die meisten neueren JDK's den Code in jedem Fall auf die StringBuilder-Version.
In der Regel müssen Sie dies nur dann manuell tun, wenn Sie die String-Verkettung in einer Schleife oder in komplexem Code durchführen, den der Compiler nicht so einfach optimieren kann.
Schauen Sie mal rein: http://www.javaspecialists.eu/archive/Issue068.html und http://www.javaspecialists.eu/archive/Issue105.html
Führen Sie die gleichen Tests in Ihrer Umgebung durch und prüfen Sie, ob neuere JDK oder Ihre Java-Implementierung irgendeine Art von String-Operation besser mit String
oder besser mit StringBuilder
ausführen.
Das Microsoft-Zertifizierungsmaterial geht auf diese Frage ein. In der .NET-Welt macht der Overhead für das StringBuilder-Objekt eine einfache Verkettung von 2 String-Objekten effizienter. Ich würde eine ähnliche Antwort für Java-Strings vermuten.