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

sar*_*nan 4 java arrays

int[] a=new int[4];
Run Code Online (Sandbox Code Playgroud)

我认为当数组创建时..如果我是正确的,那么构造函数将调用(将元素赋值为默认值).其中就是构造函数..

Boz*_*zho 14

不,没有这样的事情.原始数组元素初始化为默认原始值(0for int).对象数组元素初始化为null.

您可以java.util.Arrays.fill(array, defaultElementValue)在创建数组后使用它来填充数组.

引用JLS

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

如果使用初始值设定项,则会分配值. int[] ar = new int[] {1,2,3}

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

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


Jcs*_*Jcs 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
Run Code Online (Sandbox Code Playgroud)