public class test {
public static void main(String[] args) {
int MAX = 5;
boolean bit[] = new boolean[MAX];
float[] value = new float[2*3];
int[] number = {10, 9, 8, 7, 6};
System.out.println(bit[0]); // prints “false”
System.out.println(value[3]); // prints “0.0”
System.out.println(number[1]); // prints “9”
}
}
我正在测试上面的代码,为什么Java会为你初始化值?如果我不初始化我的变量,我认为应该抛出编译错误。另外,如果我想将它们全部初始化为0.0?
,我应该怎么做float[] value = new float[2*3];
行
答案 0 :(得分:7)
静态和实例变量以及数组元素被初始化为默认值(0,false,'\0'
,null等)。默认情况下不会初始化局部变量。
在您的代码中,只有数组元素没有显式初始化 - 编译器很难确定您尝试使用的每个数组元素是否都已初始化。如果数组来自参数,您期望会发生什么?例如?
来自Java语言规范,section 15.10.1:
然后,如果出现单个DimExpr,则创建具有指定长度的一维数组,并将该数组的每个组件初始化为其默认值(§4.12.5)。
(这就是你所处的情况 - DimExpr是你的3 * 2表达式。)
答案 1 :(得分:2)
您的浮点数组将隐式初始化为0.0。如果您尝试在方法中使用未初始化的变量,编译器将发出警告,但对象状态始终为默认值(除非您选择覆盖这些默认值)。您可以检查这些默认值对Java语言规范的影响。
答案 2 :(得分:0)
原始数据类型数组的元素会自动初始化为默认值:0.0
为float
,false
为boolean
等。未明确初始化。在value
的情况下,该数组的元素应该已经初始化为0.0
,因为这是默认值。
答案 3 :(得分:0)
Per @Kublai,由于浮点数的默认值为0.0,因此您的整个float []已经初始化为0.0。你不必做任何其他事情。这就是它为值[3]打印0.0的原因。