StringBuffer, StringBuilder und StringWriter

Status
Nicht offen für weitere Antworten.

paedubucher

Aktives Mitglied
Hallo allerseits

Dass es inperformant ist, Strings mit dem Operator '+' zu verketten, wissen wir mittlerweile alle. Doch was ist das richtige Vorgehen?

1. Den StringBuffer verwenden
2. Den StringBuilder verwenden
3. Den StringWriter verwenden
4. concat() auf String aufrufen

Bzw. verstehe ich den Unterscheid der oben genannten Klassen nicht wirklich. StringBuffer und -Builder stellen einen Konstruktor zur Verfügung, der einen String erwartet. Im Unterschied zum StringWriter wird dann die Methode append() zur Erweiterung des Strings verwendet, beim StringWriter verwendet man write().

Nun, wozu drei Klassen, die (soviel ich weiss) das Gleiche tun? Wo liegt der Unterschied? Was sollte man in welchem Fall verwenden? Wie sieht es eigentlich mit concat() aus? Ist das in irgendeiner Weise "besser" als die Verkettung mit dem '+'-Operator?
 
S

SlaterB

Gast
StringWriter verwendet intern einen StringBuffer,
das ist nur ein Wrapper, der das Interface Writer erfüllt

warum macht StringBuffer das nicht sowieso schon?
gute Frage, aber man muss ja auch nicht unbedingt alle Konzepte zusammenschmeißen,

StringBuilder ist eine modernere Version von StringBuilder, die nicht synchronisiert ist,
der Unterschied ist minimal,
wenn du 'synchronized' nicht kennst, ist das auch erstmal egal

concat ist minimal performanter als +, wenn man nur zwei und nicht mehr Strings zusammenfügen will und der zweite String länger als 16 Zeichen ist,
aber auch zu vernachlässigende Details
 

paedubucher

Aktives Mitglied
Arbeite ich nur mit einem Thread, kann ich die Klassen also beliebig verwenden (StringBuilder ist nicht synchronized)?

Beim StringWriter müsste man konsequenter weise wohl via "Writer" (abstrakte Klasse) zugreifen...
 

Verjigorm

Top Contributor
StringBuilder was added in Java 5. It is identical in all respects to StringBuffer except that it is not synchronized, which means that if multiple threads are accessing it at the same time, there could be trouble. For single-threaded programs, the most common case, avoiding the overhead of synchronization makes the StringBuilder very slightly faster.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
T String vs StringBuilder vs StringBuffer Allgemeine Java-Themen 8
L Doppelte eintraege im Stringbuffer löschen Allgemeine Java-Themen 4
127.0.0.1 StringBuffer leere Zeile löschen Allgemeine Java-Themen 8
K Immutable View auf StringBuffer? Allgemeine Java-Themen 13
S AWT StringBuffer macht nicht, was ich erwarte Allgemeine Java-Themen 2
V Stringbuffer/builder leeren Allgemeine Java-Themen 2
neurox Stringbuffer -> MimeBodyPart Allgemeine Java-Themen 5
T Performance String-Operationen und StringBuffer (1.4und 1.5) Allgemeine Java-Themen 18
G Zeilenweise aus einem StringBuffer lesen Allgemeine Java-Themen 4
B Inhalt von StringBuffer löschen Allgemeine Java-Themen 14
D Inputstream aus StringBuffer Allgemeine Java-Themen 3
M Regex und StringBuffer: Problem mit TAB-Codierung Allgemeine Java-Themen 3
A StringBuffer manipulation Klausur Allgemeine Java-Themen 2
T Kleine Verständnisfrage zu Stringbuffer Allgemeine Java-Themen 2
Zrebna Möglichkeit regelmäßige indentation mittels/innerhalb Stringbuilder Allgemeine Java-Themen 14
Thallius Merkwürdiges StringBuilder verhalten (Char Encoding) Allgemeine Java-Themen 6
V Stringbuilder zickt rum? -> Eclipse Allgemeine Java-Themen 12
B StringBuilder von File einlesen Allgemeine Java-Themen 8
W StringBuilder effektiv auf OutputStream schreiben Allgemeine Java-Themen 3
A Problem mit StringBuilder delete - find den Fehler nicht Allgemeine Java-Themen 9
G Optimierung StringBuilder Allgemeine Java-Themen 9
Escorter StringBuilder automatisch? Allgemeine Java-Themen 7
D StringBuilder kaputt? Allgemeine Java-Themen 2
Y StringBuilder vs. Stringverkettung Allgemeine Java-Themen 61
G wieso wird der String des StringBuilder immer länger? Allgemeine Java-Themen 2
G StringBuilder Allgemeine Java-Themen 4
R StringWriter konvertieren in einen String !!! Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben