我正在攻读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);
}
}
答案 0 :(得分:3)
执行main
方法将显式创建五个对象。
Dozens[]
对象Dozens
个对象int[]
个对象;请参阅dz
字段。此外,可以通过println
调用在幕后创建一些 对象。
答案 1 :(得分:0)
发现错误,每个对象都有一个数组字段,因此每次创建十几个对象时都会创建2个对象。