Auf Thema antworten

Hallo zusammen, jetzt muss ich mich diesbezüglich doch nochmal melden weil mir ein Beispiel untergekommen ist bei dem ich zu einem anderen Ergebnis gekommen bin bzw. das ich nicht ganz nachvollziehen kann:


[CODE=java]public class Test {

    public static void main (String[] args) {

        Student s1 = new Student("Alice");

        Student s2 = new Student("Bob");

        Student s3 = new Student("Carol");

        s1 = s3;

        s3 = s2;

        s2 = null;               // Line 14

        System.out.println(s1);  // Student@4554617c

        System.out.println(s2);  // null

        System.out.println(s3);  // Student@74a14482

    }

}[/CODE]


Wenn ich mir das ganze Aufzeichne dann sieht das bei mir so aus:

[CODE]s1 --> {s1}

s2 --> {s2}

s3 --> {s3}


       {s1}

s2 --> {s2}

s3 --> {s3} <-- s1


       {s1}

s2 --> {s2} <-- s3, s1

       {s3}

     

s2 --> null

       {s1}

       {s2} <-- s3, s1

       {s3}[/CODE]


Also sind doch nach Line 14 zwei Objekte bereit vom Garbage Collector gesammelt zu werden, nämlich s1 und s2. Die richtige Antwort wäre jedoch das es sich nur um ein Objekt handelt...



Oben