【问题标题】:Array instantiation calls a constructor? [duplicate]数组实例化调用构造函数? [复制]
【发布时间】:2023-03-04 19:42:01
【问题描述】:

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

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

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

我们知道数组是对象。

【问题讨论】:

    标签: java arrays


    【解决方案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 中,数组有自己的创建方式,这与创建类对象不同。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-08
      • 1970-01-01
      • 1970-01-01
      • 2013-03-05
      • 1970-01-01
      • 2011-05-08
      • 2012-02-02
      • 2015-06-09
      相关资源
      最近更新 更多