启动数组时创建的对象数-Java
我正在准备Java OCA考试,我遇到了一个问题。给定以下代码,将创建多少个对象?这本书的作者说5,而我说3。为什么是3?因为创建了两个类型为Tends的对象,第三个对象是数组本身。数组元素的其余部分为空,所以我认为我们只创建引用,而不创建对象。我在构造函数中添加了一个打印,它打印了两次。是否有我遗漏的东西或书中提供的答案是错误的?提前谢谢启动数组时创建的对象数-Java,java,arrays,Java,Arrays,我正在准备Java OCA考试,我遇到了一个问题。给定以下代码,将创建多少个对象?这本书的作者说5,而我说3。为什么是3?因为创建了两个类型为Tends的对象,第三个对象是数组本身。数组元素的其余部分为空,所以我认为我们只创建引用,而不创建对象。我在构造函数中添加了一个打印,它打印了两次。是否有我遗漏的东西或书中提供的答案是错误的?提前谢谢 class Dozens { int[] dz = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}; pu
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
方法将显式创建五个对象
- 一个<代码>几十个[]对象
- 两个
几十个
对象
- 两个
对象;请参阅int[]
字段dz
此外,一些对象可以通过
println
调用在后台创建。执行main
方法将显式创建五个对象
- 一个<代码>几十个[]对象
- 两个
几十个
对象
- 两个
对象;请参阅int[]
字段dz
println
调用在幕后创建的