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

时间:2017-03-25 13:54:24

标签: java arrays

我正在攻读Java OCA考试,我遇到了一个问题。给定以下代码,创建了多少个对象?这本书的作者说5,而我说3.为什么3?因为创建了两个类型为数十的对象,第三个对象就是数组本身。其余数组元素为null,因此我们只创建引用,但不是我认为的对象。我在构造函数中添加了一个打印两次的打印。是否有我遗漏的东西或书中提供的答案是错的?提前谢谢。

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);
    }
}

2 个答案:

答案 0 :(得分:3)

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

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

此外,可以通过println调用在幕后创建一些 对象。

答案 1 :(得分:0)

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