int[] a=new int[4];
我认为在创建数组时...会有 构造函数调用(将元素分配给默认值) 如果我是正确的......那就是那个构造函数..
答案 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的原始操作。