Java STX und ETX aus String ersetzen

Gast #2579825
Lesenswert?

Moin, vielen Dank für Eure Antworten. Alles richtig und ich war heute 
morgen wohl noch zu müde ;-)

Noch eine Frage: da ein String ja final ist, wird mittels

derString = derString.replace('\3', 'a')

ja ein neues Object (mit identischen Namen) angelegt. Das alte wird wohl 
irgendwann vom GC erlegt.

Nun kommt dieser Austausch von Zeichen vier Mal pro Sekunde vor. Unter 
Umständen stört dann irgendwann der GC meine periodische 
Messwerterfassung. Das muss doch eleganter gehen - oder?


Eumel2
Persönliche Seite #2579847
Lesenswert?

Eumel2 schrieb:
> ja ein neues Object (mit identischen Namen) angelegt

Nein, Objekt != Referenz. Ein Objekt hat keinen Namen. Die Referenz mit 
dem Namen derString wird das neue Objekt zugewiesen. Das alte wird 
möglicherweise von der GC gelöscht falls es nirgends mehr referenziert 
wird.

Eumel2 schrieb:
> Nun kommt dieser Austausch von Zeichen vier Mal pro Sekunde vor
> Unter Umständen stört dann irgendwann der GC meine periodische
> Messwerterfassung
Auf einem 386er mit 2MB RAM sicherlich...

Eumel2 schrieb:
> Das muss doch eleganter gehen

Was ist daran "unelegant"? Es hält dich natürlich niemand ab die ganze 
Stringverarbeitung selbst auf einem chararray durchzuführen falls du das 
"eleganter" findest...
#2579848
Lesenswert?

Eumel2 schrieb:
> Noch eine Frage: da ein String ja final ist, wird mittels
>
> derString = derString.replace('\3', 'a')
>
> ja ein neues Object (mit identischen Namen) angelegt. Das alte wird wohl
> irgendwann vom GC erlegt.

So wird wohl enden.

Eumel2 schrieb:
> Nun kommt dieser Austausch von Zeichen vier Mal pro Sekunde vor. Unter
> Umständen stört dann irgendwann der GC meine periodische
> Messwerterfassung. Das muss doch eleganter gehen - oder?

Es gibt auch die Klasse StringBuffer
Manche nehmen auch einfach ein char[xxx].

Nachtrag
Ooops Läubi hat natürlich recht. Es wird kein Objekt identischen Namens 
angelegt, sondern einfach ein neuer String mit dem geänderten Inhalt und 
"derString" zeigt auf dieses neue Objekt.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren