【发布时间】:2023-03-04 19:42:01
【问题描述】:
当在 java 中遇到 new 关键字时,会创建一个对象并调用构造函数。
那么在创建数组对象时调用了哪个构造函数。
例如 int[] a = new int[];
我们知道数组是对象。
【问题讨论】:
当在 java 中遇到 new 关键字时,会创建一个对象并调用构造函数。
那么在创建数组对象时调用了哪个构造函数。
例如 int[] a = new int[];
我们知道数组是对象。
【问题讨论】:
数组不使用构造函数进行初始化。如果你尝试编译int[] array = new int[10];,你会得到类似下面的字节码:
bipush 10
newarray int
astore_1
另一方面,Person p = new Person(); 的字节码指令如下所示(注意对 new 和 init 的调用表示对构造函数的调用):
new test/Person
dup
invokespecial test/Person/<init>()V
astore_2
因此,在 JVM 中,数组有自己的创建方式,这与创建类对象不同。
【讨论】: