java: primitive arrays — are they initialized?

2020-02-05 06:34发布

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.

标签: java arrays
4条回答
虎瘦雄心在
2楼-- · 2020-02-05 06:47

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
查看更多
够拽才男人
3楼-- · 2020-02-05 06:52

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.

查看更多
兄弟一词,经得起流年.
4楼-- · 2020-02-05 06:56

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
查看更多
男人必须洒脱
5楼-- · 2020-02-05 07:05

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.

查看更多
登录 后发表回答