今天,我在考试中遇到了以下问题:
String[] subjects=new String[10];
String subname="POPL-201617";
subjects[0]=subName;
subName=null;
创建了多少个对象?
我的回答:将创建11个对象。第一个语句中的10个,字符串文字中的一个。
代码执行后对这些对象有多少引用?
我的回答:有一个提及" POPL-201617"总计。
说明这些对象是否符合垃圾回收的条件。
我的回答:由于引用了#34; POPL-201617",因此不符合垃圾回收的条件。即使没有引用,它也是一个实习字符串,因此无法进行垃圾回收。其余的都有资格进行垃圾收集。
我担心第一个声明。我们没有将任何参数传递给String类的构造函数。它会形成对象还是只在堆上分配空间?
另外,我的理解是主题最初指向数组的基础。所以,第一个元素最初有一个参考。但是由于subject [0]现在引用了POPL,所以no数组元素有任何引用。
我说错了吗?或者我错过了什么?
答案 0 :(得分:1)
您唯一遗漏的是String[] subjects=new String[10]
只创建了一个String[]
类型的对象。