Java - 为什么为变量赋值"null"并不能使它可用于GC?(在此代码段中)

nme*_*e32 3 java variables null garbage-collection

我正在浏览oracle提供的在线教程.其中一个练习有一个问题如下:


以下代码创建一个数组和一个字符串对象.代码执行后,对这些对象有多少引用?对象是否有资格进行垃圾回收?

...
String[] students = new String[10];
String studentName = "Peter Smith";
students[0] = studentName;
studentName = null;
...
Run Code Online (Sandbox Code Playgroud)

答:有一个对students数组的引用,该数组有一个对字符串Peter Smith的引用.这两个对象都没有资格进行垃圾回收.

(http://docs.oracle.com/javase/tutorial/java/javaOO/QandE/objects-answers.html)


当然最后一行意味着studentName有资格获得GC吗?真的很困惑,我认为这意味着我没有理解"null"的本质,也没有理解对象引用,这就是我要问的原因.

Tom*_*Tom 10

在分配之前null,studentName有两个引用"彼得史密斯"(studentNamestudents[0]).在null分配给studentName之后,"Peter Smith"仍被引用students[0]