Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我们需要用Java初始化数组吗?_Java - Fatal编程技术网

我们需要用Java初始化数组吗?

我们需要用Java初始化数组吗?,java,Java,我注意到,如果我将数组声明为: int[] myarr = new int[10]; 我可以直接使用myarr[1]++以便myarr[1]=1。这是否意味着在Java中,不需要初始化数组并通过以下方法将每个值设置为0 for (int i = 0; i < myarr.length; i++) { myarr[i] = 0; } for(int i=0;i

我注意到,如果我将数组声明为:

int[] myarr = new int[10];
我可以直接使用
myarr[1]++
以便
myarr[1]=1
。这是否意味着在Java中,不需要初始化数组并通过以下方法将每个值设置为0

for (int i = 0; i < myarr.length; i++) {
     myarr[i] = 0;
}
for(int i=0;i

我从一些评论中看到数组可能包含垃圾值。如果数组是整数数组,它是否包含除0以外的任何垃圾?

在Java中,所有数组元素都会自动初始化为默认值。对于基本数字类型,即
0
0.0
。对于布尔型,这是
false
。对于对象,这是
null


在其他语言如C++中,未初始化数组中的值未定义。为了安全起见,一些编译器可能会以类似的方式初始化为0/null,依赖于此是非常糟糕的做法。但是,这种行为在Java中有很好的定义,因此创建一个基本数组并相信值为0是完全可以的。

否,所有Java数组都用适当的类型默认值填充(0表示整数,0.0表示双精度,null表示引用…)

否,必须在Java中初始化数组。。在编写程序时,我没有初始化数组,编译器(jdk7)给了我一个错误,如:

java:4:变量myArray可能尚未初始化


因此编译失败。

根据语言规范,新初始化的
int[]
将用零填充

指:

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

指:

  • 每个类变量、实例变量或数组组件在创建时都会使用默认值进行初始化(§15.9、§15.10.2):
    • 对于byte类型,默认值为零,即(byte)0的值
    • 对于short类型,默认值为零,即(short)0的值
    • 对于int类型,默认值为零,即0
    • 对于long类型,默认值为零,即0L
    • 对于类型float,默认值为正零,即0.0f
    • 对于double类型,默认值为正零,即0.0d
    • 对于char类型,默认值为空字符,即“\u0000”
    • 对于boolean类型,默认值为false
    • 对于所有参考类型(§4.3),默认值为空

不能跳过数组初始化,但不必初始化数组的每个元素。如果不初始化数组中的元素,它的工作方式与不初始化该特定类型的成员变量的工作方式完全相同:Java将使用类型默认值对其进行初始化,对于数值基元类型(int、double、float…)为0,对于布尔值为false,对于对象(包括字符串)为null.

这不是同一件事:这是说您从未初始化数组变量,而不是它的组件。对于非数组变量,它也会做同样的事情。这一要求称为明确赋值。如果您想知道,请参见:“局部变量(§14.4,§14.14)在使用前必须通过初始化(§14.4)或赋值(§15.26)明确给定一个值,并且可以使用明确赋值规则(§16(明确赋值))进行验证。”谢谢你的参考..看你需要用Java初始化什么吗?