创建的对象数

时间:2016-12-03 07:28:51

标签: java memory-management

今天,我在考试中遇到了以下问题:

String[] subjects=new String[10];
String subname="POPL-201617";
subjects[0]=subName;
subName=null;
  1. 创建了多少个对象?

    我的回答:将创建11个对象。第一个语句中的10个,字符串文字中的一个。

  2. 代码执行后对这些对象有多少引用?

    我的回答:有一个提及" POPL-201617"总计。

  3. 说明这些对象是否符合垃圾回收的条件。

    我的回答:由于引用了#34; POPL-201617",因此不符合垃圾回收的条件。即使没有引用,它也是一个实习字符串,因此无法进行垃圾回收。其余的都有资格进行垃圾收集。

  4. 我担心第一个声明。我们没有将任何参数传递给String类的构造函数。它会形成对象还是只在堆上分配空间?

    另外,我的理解是主题最初指向数组的基础。所以,第一个元素最初有一个参考。但是由于subject [0]现在引用了POPL,所以no数组元素有任何引用。

    我说错了吗?或者我错过了什么?

1 个答案:

答案 0 :(得分:1)

您唯一遗漏的是String[] subjects=new String[10]只创建了一个String[]类型的对象。