以下代码创建一个数组和一个字符串对象.代码执行后,对这些对象有多少引用?对象是否有资格进行垃圾回收?
...
String[] students = new String[10];
String studentName = "Peter Parker";
students[0] = studentName;
studentName = null;
...
Run Code Online (Sandbox Code Playgroud)
我的回答是studentName有资格进行垃圾收集.但是给出的答案都不符合条件.我认为学生[0]指的是字符串"Peter Parker",studentName也是这样.现在studentName指的是null,学生[0]仍然指的是"Peter Parker"(我通过打印出来检查了这一点).给出的解释是学生[0]仍然指的是studentName所以studentName也没有资格进行垃圾收集.但我不理解因为studentName现在指的是null而学生[0]指的是"Peter Parker".我的理解是错的吗?
之前studentName = null;被执行,studentName并且students[0]都持有相同的参考String对象(其值"Peter Parker").当你分配null时studentName,students[0]仍然引用那个对象,所以它不能被垃圾收集.
Java不会垃圾收集引用变量,一旦没有对这些变量的引用,它就会收集这些变量引用的对象.
| 归档时间: |
|
| 查看次数: |
213 次 |
| 最近记录: |