int数组初始化

uml:

我这里有一个与Java有关的简单问题。假设您有一个int数组作为实例变量:

int[] in = new int[5];

因此,现在默认情况下它包含5个零。但是,如果您具有与局部变量相同的数组,该怎么办。它是否初始化为零?那不是家庭作业,我正在学习Java语言。最好的祝福

罗希特·贾恩(Rohit Jain):

首先要了解的是,局部变量存储在堆栈中,它们没有使用其默认值进行显式初始化。尽管实例变量存储在Heap上,并且默认情况下会使用默认值对其进行初始化

同样,对象也会在Heap上创建,而不管实例引用变量是保留其引用还是本地引用变量。


现在,发生的是,当您将这样的数组引用声明为局部变量,并使用数组对其进行初始化时:-

int[] in = new int[5];

数组引用(in)存储在stack上,并为能够堆上容纳5个整数元素的数组分配内存(请记住,对象是在Heap上创建的)。然后,Heap上分配5个连续的内存位置,用于存储数值并且数组对象上的每个索引都顺序保存对这些内存位置引用然后,数组引用指向该数组。因此,由于在Heap上分配了5个整数值的内存,因此将它们初始化为默认值。(size = 5)

而且,在声明数组引用时,不要使用任何数组对象对其进行初始化:-

int[] in;

数组引用是在Stack上创建的(因为它是局部变量),但默认情况下不会初始化为数组null,实例变量也不会初始化为


因此,这是使用数组声明和初始化的第一种方式时分配的外观:-

"Your array reference"
     "on stack"    

       |    |          "Array object on Heap"
       +----+                  
       | in |---------->  ([0, 0, 0, 0, 0])
       +----+
       "Stack"                  "Heap"

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章