java:原始数组 – 它们被初始化了吗?
如果我在我的代码中使用一个语句,比如
int[] a = new int[42];
它会将数组初始化为特定的东西吗? (例如0)我似乎记得这是在某处记录但我不知道该搜索什么。
在15.10arrays创建表达式中 ,JLS说
[…]创建具有指定长度的一维数组,并将数组的每个组件初始化为其默认值
在4.12.5变量的初始值它说:
对于
int
类型,默认值为零,即0
。
创建时,数组会自动使用其类型的默认值进行初始化 – 在您的情况下为0
。 boolean
的默认值为false
,所有引用类型的默认值为null
。
该arrays将使用42 0进行初始化
对于其他数据类型,它将使用默认值ie初始化。
new boolean[42]; // would have 42 falses new double[42]; // would have 42 0.0 ( or 0.0D ) new float[42]; // 42 0.0fs new long[42]; // 42 0Ls
等等。
对于一般的对象,它将为null:
String [] sa = new String[42]; // 42 nulls Date [] da = new Date[42]; // 42 nulls
数组中的所有元素都初始化为零。 我无法在Java文档中找到相关证据,但我只是运行以确认:
int[] arrayTest = new int[10]; System.out.println(arrayTest[5]) // prints zero