Nein. Die Anweisung
str = wert ;
verlangt (offensichtlich), dass der primitive Datenwert, der in wert enthalten ist, in der Referenzvariable str untergebracht wird.
Das geht nicht.
Hier ist eine weitere Modifikation des Beispielprogramms:
class BspString3
{
public static void main ( String[] args )
{
String str;
str = new String("Der Gingham Hund");
System.out.println(str);
str = new String("Die Calico Katze");
System.out.println(str);
}
}
|
Das Programm macht genau das, was Sie erwarten. Es gibt aus:
Der Gingham Hund Die Calico Katze
Schauen wir uns einige Details an, die dazu gehören um das zu tun.
| Anweisung | Aktion |
|---|---|
str = new String("Der Gingham Hund"); |
Das ERSTE Stringobjekt erzeugen.
Eine Referenz auf das Objekt in str stellen. |
System.out.println(str); |
Der Referenz in str zu dem ERSTEN Objekt folgen.Daten holen und ausgeben. |
str = new String("Die Calico Katze"); |
Ein ZWEITES Objekt erzeugen.
Eine Referenz auf das ZWEITE Objekt in str stellen.Ab dieser Stelle gibt es keine Referenz auf das erste Objekt. Es ist jetzt "Garbage". |
System.out.println(str); |
Der Referenz in str zu dem ZWEITEN Objekt folgen.Daten holen und ausgeben. |
Beachten Sie, dass:
new-Operator verwendet wird, wird ein neues Objekt erzeugt.Das Wort Ausschuss (Garbage) ist der korrekte Begriff für Objekte, auf die keine Referenzvariable mehr verweist. Da sie nicht gefunden werden können (durch Ihr Programm), existieren sie in Wirklichkeit nicht mehr. Diese Situation ist üblich und gewöhnlich kein Fehler. Wenn ein Programm ausgeführt wird, werden Objekte erzeugt. Dann, wenn sie nicht länger gebraucht werden, werden die Referenzen auf sie ausrangiert. Aber ein Teil des Java Systems, Garbage Collector (Speicherbereinigung) genannt, kümmert sich um die verlorenen Objekte (Garbage), so dass der Speicher aus dem sie gemacht wurden erneut verwendet werden kann.