# Strings kopieren



## Guest (30. Mai 2008)

Hallo

werden Strings wenn man sie per = zuweist (String1 = String2) zur Gänze kopiert oder nur die Referenz?

Wenn nur die Referenz, wie wirkt sich das auf den GarbageCollector aus?

Ausserdem: wenn ich nun eine der beiden Variablen verändere, ändert sich damit auch die andere?

danke


----------



## Der Müde Joe (30. Mai 2008)

auspropbieren ;-)


----------



## L-ectron-X (30. Mai 2008)

Lies mal hier, kann zumindest den zweiten Teil deiner Frage klären: http://www.java-forum.org/de/viewtopic.php?t=5390


----------



## Marco13 (30. Mai 2008)

Da hast du glaubich versehentlich den falschen FAQ-Eintrag verlinkt  ???:L 

In diesem Fall wird nur die Referenz kopiert. Inwiefern das Einfluß auf den Garbage collector hat, ist schwer zu sagen. Strings werden intern ein bißchen anders behandelt, als normale Objekte. Sie liegen in einem "pool". Das sorgt dafür, dass bei

String a = "Hallo";
String b = "Hallo";
System.out.println(a==b);

"true" ausgegeben wird, obwohl man Strings praktisch immer mit .equals vergleichen sollte!

Bei sowas wie
String a = "Hallo";
String c = new String("Hallo");
System.out.println(a==c);

wird eine echte Kopie des Strings erstellt, und es wird false ausgegeben.


----------



## Leroy42 (30. Mai 2008)

Marco13 hat gesagt.:
			
		

> String c = new String("Hallo");
> ...
> wird eine echte Kopie des Strings erstellt, und es wird false ausgegeben.



Korrekt! Nur, um genauer zu sein, wird die Kopie des
Strings bereits bei _new String("Hallo")_ erzeugt.

Die anschließende Zuweisung an _c_ erzeugt wiederum
keine Kopie mehr.


----------

