今天,我考试时遇到了以下问题:
String[] subjects=new String[10];
String subname="POPL-201617";
subjects[0]=subName;
subName=null;
创建了多少个对象?
我的回答:将创建 11 个对象。第一个语句中的 10 个是字符串文字。
代码执行后存在多少个对这些对象的引用?
我的回答:总共有一次引用“POPL-201617”。
解释这些对象是否符合垃圾回收的条件。
我的回答:由于存在对“POPL-201617”的引用,因此它不符合垃圾回收的条件。即使没有引用,它也是一个内部字符串,因此不能被垃圾收集。其余的都有资格进行垃圾收集。
我对第一个陈述感到担忧。我们没有向 String 类的构造函数传递任何参数。它会形成对象还是仅在堆上分配空间?
另外,我的理解是,subject 最初指向数组的底部。因此,第一个元素最初有一个引用。但由于 subject[0] 现在引用 POPL,因此数组元素没有任何引用。
我说得对吗?或者我错过了什么?
最佳答案
您错过的唯一一件事是 String[]subjects=new String[10]
仅创建了一个 String[]
类型的对象。
关于java - 创建的对象数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40945360/