Mittwoch, 2026-02-25_Programmiertechnik_UDEMY¶
1) Warum gibt es StringBuilder?¶
Wichtiges Grundprinzip:
String ist immutable (unveränderlich)
StringBuilder ist mutable (veränderlich)
Das bedeutet:
String s = "Hello";
s.concat(" World");
➡️ erzeugt ein neues Objekt
➡️ das alte bleibt unverändert
➡️ wenn nicht zugewiesen → Ergebnis geht verloren
2) String vs StringBuilder – Unterschied¶
String¶
String text = "Hello";
text.concat(" World");
System.out.println(text);
Ausgabe:
Hello
Warum?
- concat() erstellt neues String-Objekt
- Ergebnis wurde nicht gespeichert
Richtig wäre:
text = text.concat(" World");
StringBuilder¶
StringBuilder builder = new StringBuilder("Hello");
builder.append(" World");
System.out.println(builder);
Ausgabe:
Hello World
Warum?
- append() verändert dasselbe Objekt
- kein neues Objekt nötig
3) Konstruktoren von StringBuilder¶
Vier wichtige Varianten:
new StringBuilder()
new StringBuilder("Text")
new StringBuilder(32)
new StringBuilder(CharSequence)
Beispiel: Kapazität¶
StringBuilder b1 = new StringBuilder();
StringBuilder b2 = new StringBuilder(32);
Standard-Kapazität:
16 Zeichen
Mit Zahl:
Kapazität = angegebene Größe
4) capacity() vs length()¶
StringBuilder b = new StringBuilder();
System.out.println(b.length()); // 0
System.out.println(b.capacity()); // 16
- length() = tatsächliche Zeichenanzahl
- capacity() = Speicherreserve
Wenn capacity überschritten wird: → Speicher wird neu reserviert → Daten werden kopiert
Deshalb:
Bei viel Text → gleich große Kapazität wählen
5) Wichtige Methoden¶
append()¶
builder.append(" Text");
Fügt Text an.
Sehr wichtig für Prüfung:
→ Gibt das gleiche Objekt zurück
→ Method Chaining möglich
deleteCharAt()¶
builder.deleteCharAt(5);
Entfernt Zeichen an Position.
insert()¶
builder.insert(5, "X");
Fügt Text an bestimmter Position ein.
replace()¶
Unterschied zu String.replace:
builder.replace(3, 6, "ABC");
- Start inklusiv
- Ende exklusiv
reverse()¶
builder.reverse();
Dreht Text um.
setLength()¶
builder.setLength(5);
Schneidet Text ab (truncation).
6) Method Chaining¶
Weil append() das gleiche Objekt zurückgibt:
builder.append("A")
.append("B")
.append("C");
Sehr effizient.
7) Performance-Unterschied (wichtig!)¶
Viele String-Verkettungen:
String s = "";
for(int i = 0; i < 1000; i++){
s += "A";
}
Problem: - jedes Mal neues Objekt - ineffizient
Besser:
StringBuilder sb = new StringBuilder();
for(int i = 0; i < 1000; i++){
sb.append("A");
}
8) Wann benutzt man was?¶
String verwenden wenn:¶
- Text konstant ist
- wenig Änderungen
- Literale
StringBuilder verwenden wenn:¶
- viel Text zusammengesetzt wird
- Schleifen
- Performance wichtig
- dynamische Manipulation
9) Prüfungsrelevante Punkte¶
- String ist immutable
- StringBuilder ist mutable
- append() verändert Objekt
- concat() erzeugt neues Objekt
- capacity() ≠ length()
- Method Chaining möglich
- besser für viele Verkettungen
10) Mini-Merkblock¶
String:
sicher, einfach, unveränderlich
StringBuilder:
schnell, flexibel, veränderlich