string.replace funktioniert nicht

  • Themenstarter Themenstarter sdajfaw4890a
  • Beginndatum Beginndatum
S

sdajfaw4890a

Gast
hallo leute,
ich lese folgende zeile ein: @KnotenAnzahl = 3

mein code sieht folgendermaßen aus
Java:
if (zeile.contains("@KnotenAnzahl = ")) {
                            System.out.println(zeile);
                            zeile.replace("@KnotenAnzahl = ", "");
                            System.out.println(zeile);
                            this.knotenAnzahl = Integer.parseInt(zeile);
                        }

bei beiden sysos bekomme ich das ausgegeben: @KnotenAnzahl = 3
 
Java:
zeile.replace("@KnotenAnzahl = ", "");
//ist verkehrt, so müsste es aussehen
zeile = zeile.replace("@KnotenAnzahl = ", "");
 
Strings sind immutable (unveränderbar). Du bekommst bei replace also ein neues String Objekt zurück.
Versuche es mit:
zeile = zeile.replace...
 
string.replace funktioniert nicht
doch ;-) du verwendest es falsch... naja is ein häufiger anfänger fehler... denk dir nix.

Strings sind in java nicht veränderbar. replace verändert den string nicht, sondern gibt das neue ergebnis zurück ...
zeile = zeile.replace("@KnotenAnzahl = ", "");
 
unveränderliche Objekte, die bei Methoden eine (veränderte) Kopie zurückgeben,
sind aber je nach Programmiersichtweise alles andere als 'böse', sondern erfreulicher Vorteil,

BigDecimal etwa reagiert genauso, darauf sollte man schon bewußt achten
 
...es sind schon Objekte, die aber keine Methoden beinhalten, die deren Attribute ändern. Außerdem noch ist die Klasse final und damit nicht erwiterbar
 
> hab ich so nicht geschrieben

"die so tun als wären sie echte objekte, es irgendwie aber nicht sind " == "sind keine echten objekte"
doch 😉
 
>.> ach man
kanns nich mehr editieren um es so zu formulieren, das alle glücklich sind

was gemeint war ist doch wohl offensichtlich und der insel link korrigiert sowieso was auch immer ich vorher schreibe!

String: Eine Klasse mit bevorzugter Behandlung

Die Entwickler von Java haben eine Symbiose zwischen dem String als Objekt und dem String als eingebautem Datentyp vorgenommen. Die Sprache ermöglicht zwar die direkte Konstruktion von String-Objekten etwa aus String-Literalen (Zeichenketten in doppelten Anführungszeichen) und die Konkatenation (Aneinanderreihung von Strings mit +) von mehreren Strings, doch intern ist die Aneinanderreihung über Methoden der Klassen String, StringBuilder beziehungsweise StringBuffer realisiert. Mit dem Plus auf String-Objekten ist also ein besonderer Operator auf der Klasse String definiert, der nicht eigenständig auf anderen Klassen definiert werden kann. Java unterstützt keine überladenen Operatoren für Klassen, und dieses Plus ist ein Abweichler.
 
Zuletzt bearbeitet von einem Moderator:

Zurück
Oben