java: primitive arrays — are they initialized?

2020-02-05 06:46发布

问题:

If I use a statement in my code like

int[] a = new int[42];

Will it initialize the array to anything in particular? (e.g. 0) I seem to remember this is documented somewhere but I am not sure what to search for.

回答1:

At 15.10 Array Creation Expressions the JLS says

[...] a single-dimensional array is created of the specified length, and each component of the array is initialized to its default value

and at 4.12.5 Initial Values of Variables it says:

For type int, the default value is zero, that is, 0.



回答2:

When created, arrays are automatically initialized with the default value of their type - in your case that would be 0. The default is false for boolean and null for all reference types.



回答3:

The array would be initialized with 42 0s

For other data types it would be initialized with the default value 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 

And so on.

For objects in general it would be null:

String [] sa = new String[42]; // 42 nulls 

Date [] da = new Date[42]; // 42 nulls


回答4:

All elements in the array are initialized to zero. I haven't been able to find evidence of that in the Java documentation but I just ran this to confirm:

int[] arrayTest = new int[10];
System.out.println(arrayTest[5]) // prints zero


标签: java arrays