Java STX und ETX aus String ersetzen

Robert L. schrieb:
> kann man ja (bedenkenlos)
>
> derString = derString.replace('\3', 'a')
>
> oder ?

Man kann nicht nur man muss sogar wenn die Werte in dem 'selben' String 
geändert werden sollen.
Suche nach "String" und "immutable" im Java Buch deines Vertrauens.
Das sind elementarste Grundlagen in der Stringverarbeitung in Java.
Gast
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
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...
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

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.