Programmieren in Java - LSW
Programmieren in Java - LSW
Programmieren in Java - LSW
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
FACHHOCHSCHULE MUENCHEN FAKULTÄT FÜR ELEKTROTECHNIK UND INFORMATIONSTECHNIK<br />
FG TECHNISCHE INFORMATIK V – JV – 277 – 00 – TH – 04<br />
------------------------------------------------------------------------------------<br />
Die Klasse Str<strong>in</strong>gBuffer <strong>in</strong> <strong>Java</strong> (3)<br />
• Erzeugung e<strong>in</strong>es Str<strong>in</strong>g-Objekts aus e<strong>in</strong>em Str<strong>in</strong>gBuffer-Objekt<br />
◇ Mittels der Str<strong>in</strong>gBuffer-Memberfunktion :<br />
public Str<strong>in</strong>g toStr<strong>in</strong>g()<br />
▻ Sie erzeugt e<strong>in</strong> neues Str<strong>in</strong>g-Objekt, dass mit der aktuell im aktuellen Str<strong>in</strong>gBuffer-Objekt enthaltenen<br />
Zeichenfolge <strong>in</strong>itialisiert ist und gibt e<strong>in</strong>e Referenz auf dieses als Funktionswert zurück.<br />
▻ Dieses Str<strong>in</strong>g-Objekt ist die Str<strong>in</strong>g-Repräsentation des Str<strong>in</strong>gBuffer-Objekts<br />
▻ Beispiel : Str<strong>in</strong>gBuffer strb = new Str<strong>in</strong>gBuffer();<br />
// ... Manipulation von strb<br />
Str<strong>in</strong>g str1 = strb.toStr<strong>in</strong>g();<br />
◇ Mittels des Str<strong>in</strong>g-Konstruktors :<br />
public Str<strong>in</strong>g(Str<strong>in</strong>gBuffer buf)<br />
▻ Beispiel : // ...<br />
Str<strong>in</strong>g str2 = new Str<strong>in</strong>g(strb);<br />
◇ Mittels der statischen Str<strong>in</strong>g-Memberfunktion :<br />
public static Str<strong>in</strong>g valueOf(Object obj)<br />
▻ Dieser Funktion ist das Str<strong>in</strong>gBuffer-Objekt als Parameter zu übergeben.<br />
▻ Sie erzeugt e<strong>in</strong> neues Str<strong>in</strong>g-Objekt, dass mit der aktuell im übergebenen Str<strong>in</strong>gBuffer-Objekt enthaltenen<br />
Zeichenfolge <strong>in</strong>itialisiert ist und gibt e<strong>in</strong>e Referenz auf dieses als Funktionswert zurück.<br />
▻ Beispiel : // ...<br />
Str<strong>in</strong>g str3 = Str<strong>in</strong>g.valueOf(strb);<br />
• Verwendung der Klasse Str<strong>in</strong>gBuffer durch den Compiler<br />
◇ Der Compiler realisiert e<strong>in</strong>e mehrfache Str<strong>in</strong>g-Konkatenation unter Verwendung e<strong>in</strong>es temporären Str<strong>in</strong>gBuffer-<br />
Objekts.<br />
Beispiel : Str<strong>in</strong>g s1 = "Morgenstund";<br />
Str<strong>in</strong>g s2;<br />
s2 = '';<br />
Der Ausdruck s2 = '' wird vom Compiler umgesetzt <strong>in</strong> :<br />
s2 = new Str<strong>in</strong>gBuffer().append('').toStr<strong>in</strong>g()<br />
Hier wird nur e<strong>in</strong> temporär benötigtes Str<strong>in</strong>gBuffer-Objekt erzeugt. Da se<strong>in</strong> Inhalt veränderlich ist, können die<br />
zu konkatenierenden Str<strong>in</strong>gs bzw Str<strong>in</strong>grepräsentationen angehängt werden. E<strong>in</strong>e explizite Erzeugung von Str<strong>in</strong>g-<br />
Objekten für die Nicht-Str<strong>in</strong>g-Operanden ist nicht erforderlich.<br />
◇ Ohne das temporäre Str<strong>in</strong>gBuffer-Objekt müsste für jede Str<strong>in</strong>grepräsentation e<strong>in</strong>es Nicht-Str<strong>in</strong>g-Operanden<br />
e<strong>in</strong> neues Str<strong>in</strong>g-Objekt erzeugt werden. Ausserdem würde nach jedem Zwischenschritt (jeder ausgeführten<br />
Konkatenation) zusätzlich e<strong>in</strong> weiteres Str<strong>in</strong>g-Objekt erzeugt werden.<br />
Diese zusätzlichen Str<strong>in</strong>g-Objekte werden nach Abschluß der Gesamtoperation nicht mehr benötigt.<br />
unnötige Speicherallokationen (und danach wieder durchgeführte Speicherfreigaben).<br />
Im obigen Beispiel würden erzeugt werden :<br />
"