gpt4 book ai didi

java - int 数组初始化

转载 作者:IT老高 更新时间:2023-10-28 20:36:59 28 4
gpt4 key购买 nike

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

int[] in = new int[5];

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

最佳答案

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

此外,对象也在 Heap 上创建,无论实例引用变量是持有其引用还是局部引用变量。


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

int[] in = new int[5];

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

而且,当你声明你的数组引用时,不要用任何数组对象初始化它:-

int[] in;

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


所以,这就是使用第一种数组声明和初始化方式时的分配方式:-

"Your array reference"
"on stack"

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

关于java - int 数组初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13511702/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com