启动数组时创建的对象数 - Java



我正在为Java OCA考试做准备,遇到了一个问题。给定以下代码,创建多少个对象?这本书的作者说5,而我说3。为什么是3?因为创建了 2 个数十类型的对象,第三个对象是数组本身。其余的数组元素是空的,所以在我看来我们只创建引用,而不是对象。我在构造函数中添加了一个打印两次的打印。是我遗漏了什么,还是书中提供的答案是错误的?提前谢谢。

class Dozens {
    int[] dz = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
    public Dozens(){
        System.out.println("Object created");
    }
    public static void main(String[] args) {
        Dozens[] da = new Dozens[3];
        da[0] = new Dozens();
        Dozens d = new Dozens();
        da[1] = d;
        d = null;
        da[1] = null;
        // do stuff
        System.out.println(da[2] instanceof Object);
    }
}
执行

main 方法将显式创建五个对象。

  • 一个Dozens[]对象
  • 两个Dozens对象
  • 两个int[]对象;请参阅dz字段。

此外,某些对象可能println调用在后台创建。

发现错误,每十几个对象都有一个数组字段,所以每次创建十几个对象时都会创建 2 个对象。

最新更新