构造函数在数组创建中调用

时间:2011-02-07 11:59:12

标签: java arrays

int[] a=new int[4];

我认为在创建数组时...会有 构造函数调用(将元素分配给默认值) 如果我是正确的......那就是那个构造函数..

3 个答案:

答案 0 :(得分:14)

不,没有这样的事情。原始数组元素初始化为默认原始值(0的{​​{1}})。对象数组元素初始化为int

创建数组后,您可以使用null填充数组。

引用JLS

  

数组由数组创建表达式(第15.10节)或数组初始值设定项(第10.6节)创建。

如果使用初始值设定项,则会分配值。 java.util.Arrays.fill(array, defaultElementValue)

如果您正在使用数组创建表达式(如您的示例所示),那么(JLS):

  

每个类变量,实例变量或数组组件在创建时都会使用默认值进行初始化

答案 1 :(得分:7)

不,没有这样的构造函数。 java字节码中有一个专用的操作码 newarray,用于创建数组。

例如,这是此指令的反汇编代码int[] a = new int[4];

0:  iconst_4      // loads the int const 4 onto the stack
1:  newarray int  // instantiate a new array of int 
3:  astore_1      // store the reference to the array into local variable 1

答案 2 :(得分:0)

从概念层面来看,您可以将数组创建视为数组构造函数,但程序员无法自定义构造函数,因为数组类型没有源代码,因此可以顺便说一下,没有任何构造函数(或方法)。

有关数组的概念视图,请参阅我的answer here

实际上,创建数组是Java VM的原始操作。