当前位置: 首页 > 知识库问答 >
问题:

int数组初始化

周翼
2023-03-14

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

int[] in = new int[5];

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

共有3个答案

南宫阳焱
2023-03-14

对于基元类型数组,它被初始化为其默认值。在留档里写着:

将创建指定长度的一维数组,数组的每个组件都将初始化为其默认值

对于整数类型,默认值为0。

芮瑾瑜
2023-03-14

如果你这样做,情况也是一样的:

int[]in=newint[5]作为实例变量或局部变量。中的数组对象在这两种情况下都包含零。

不同的是,如果你做这样的事情:

>

本地变量:int[]in;(它必须由用户初始化)将生活在堆栈中

巢安澜
2023-03-14

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

此外,对象也在堆上创建,无论实例引用变量是保存其引用还是本地引用变量。

现在,当您将数组引用声明为局部变量,并用数组初始化它时,会发生什么情况:-

int[] in = new int[5];

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

另外,当您声明数组引用,并且不使用任何数组对象初始化它时:-

int[] in;

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

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

"Your array reference"
     "on stack"    

       |    |          "Array object on Heap"
       +----+                  
       | in |---------->  ([0, 0, 0, 0, 0])
       +----+
       "Stack"                  "Heap"
 类似资料:
  • 问题内容: 我这里有一个与Java有关的简单问题。假设您有一个int数组作为实例变量: 因此,现在默认情况下它包含5个零。但是,如果您具有与局部变量相同的数组,该怎么办。它是否初始化为零?那不是家庭作业,我正在学习Java语言。最好的祝福 问题答案: 首先 要了解的是, 局部变量 存储在 堆栈中 ,它们没有使用其默认值进行显式初始化。尽管 实例变量 存储在 Heap上 ,并且默认情况下会使用 默认

  • 根据 JLS, 数组应由零填充。但是,我面临的情况并非如此。这种行为首先发生在JDK 7u4中,也发生在所有以后的更新中(我使用64位实现)。下面的代码引发异常: 异常发生在JVM执行代码块编译之后,并且不会以标志出现。此外,语句(与此代码中的所有其他语句一样)是必要的,如果不存在异常,则不会发生。很明显,这个可能的错误与一些JVM优化有关。对于这种行为的原因有什么想法吗? 更新:< br >我在

  • 问题内容: 我有一堂课,在那堂课我有: 然后在我的构造函数中: 如果这样做,一切正常。默认数据值已初始化,但如果我改为这样做: 它说: 为什么? 在构造函数内部初始化数组的最佳方法是什么? 问题答案: 这已经将您的数组元素初始化为0。您无需在构造函数中再次重复该操作。 在您的构造函数中,它应该是:

  • 我在中用C创建了一个包含10个元素的数组,并仅为其中一些元素声明了值。当打印出数组时,我注意到其中一个元素(保持不变)没有初始化为零。相反,每次都将其初始化为不同的大值(即)。然后,我注释掉了所有代码,只保留了最初声明的数组。 运行代码时,数组的前8个元素被初始化为零,数组中的第9个元素被初始化为一个大值(如),该值每次都会更改,最后一个元素被一致地初始化为相同的非零数字。 有人知道为什么会这样吗

  • 问题内容: 我正在尝试初始化一个2D数组,其中每个元素的类型为 char 。到目前为止,我只能按照以下方式初始化此数组。 我认为如果数组是10 * 10,这是简单的方法。 有什么有效的方法吗? 问题答案: 这样的事情怎么样: 以下完整的Java程序: 输出: 之所以有效,是因为Unicode中的数字是连续的,从\ u0030开始(这是您从中得到的)。 表达式(您可以在其中变化以及介于两者之间(包括

  • 本文向大家介绍C++ 数组初始化,包括了C++ 数组初始化的使用技巧和注意事项,需要的朋友参考一下 示例 数组只是特定类型变量的顺序存储位置的块。数组的分配方式与普通变量相同,但是在其名称后附加方括号,方括号[]中包含适合数组内存的元素数。 下面的数组示例使用typ int,变量名arrayOfInts和[5]数组可以容纳的元素数: 可以像这样同时声明和初始化数组 通过列出其所有成员来初始化数组时