数组实例化调用构造函数? [复制]

Posted

技术标签:

【中文标题】数组实例化调用构造函数? [复制]【英文标题】:Array instantiation calls a constructor? [duplicate] 【发布时间】:2014-06-15 15:48:32 【问题描述】:

当在 java 中遇到 new 关键字时,会创建一个对象并调用构造函数。

那么在创建数组对象时调用了哪个构造函数。

例如 int[] a = new int[];

我们知道数组是对象。

【问题讨论】:

【参考方案1】:

数组不使用构造函数进行初始化。如果你尝试编译int[] array = new int[10];,你会得到类似下面的字节码:

bipush 10
newarray int
astore_1

另一方面,Person p = new Person(); 的字节码指令如下所示(注意对 newinit 的调用表示对构造函数的调用):

new test/Person
dup
invokespecial test/Person/<init>()V
astore_2

因此,在 JVM 中,数组有自己的创建方式,这与创建类对象不同。

【讨论】:

以上是关于数组实例化调用构造函数? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

C# 关于 构造函数问题 关于对象实例化

从函数返回对象时调用C ++中的复制构造函数?

有没有一种用构造函数参数实例化类的捷径? [复制]

子类的实例化过程

在 php 中调用类方法(带构造函数)而不实例化对象

11.子类实例化过程