我是 Java 新手,正在阅读 Oracle 教程。
每个部分之后都有问题和答案,我不明白一个答案中的一句话(见下面的粗体线)。
来源是https://docs.oracle.com/javase/tutorial/java/javaOO/QandE/objects-answers.html https://docs.oracle.com/javase/tutorial/java/javaOO/QandE/objects-answers.html
我指的是问题2,请参阅粗体字。据我了解,如果没有对数组的引用,则该数组有资格进行垃圾回收。是否存在对此数组所持有的对象的引用并不重要,因为内部对象(在数组内)有自己的引用计数。是对的吗?请解释一下加粗的句子。
引用oracle教程:https://docs.oracle.com/javase/tutorial/java/javaOO/QandE/objects-answers.html https://docs.oracle.com/javase/tutorial/java/javaOO/QandE/objects-answers.html
-
问题:下面的代码创建一个数组和一个字符串对象。
代码执行后存在多少个对这些对象的引用?是
哪个对象符合垃圾回收条件?
String[] students = new String[10];
String studentName = "Peter Smith";
students[0] = studentName;
studentName = null;
答案:有一个对 Students 数组和那个数组的引用
有一次提到字符串 Peter Smith。两个对象都不是
有资格进行垃圾收集。该数组学生不符合资格
用于垃圾收集,因为它有一个对该对象的引用
即使该对象已被分配值,studentName
无效的。物体studentName
也不符合资格,因为students[0]
仍然引用它。
数组 Students 不符合垃圾回收条件,因为它有一个对对象 StudentName 的引用,即使该对象已被分配了值 null。
是的,这句话……很奇怪。这个不成立。
数组可以进行垃圾回收,无论它对其他对象持有什么引用。
students
是对数组的引用,因此只要满足以下条件,它就没有资格进行垃圾回收:students
仍在范围内。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)