Java: примитивные массивы - они инициализированы?
Если я использую оператор в своем коде, например
int[] a = new int[42];
Будет ли инициализация массива чем-либо в частности? (например, 0) Кажется, я помню, что это документировано где-то, но я не уверен, что искать.
Ответы
Ответ 1
В 15.10 Выражения создания массива в JLS говорится
[...] создается одномерный массив указанной длины, и каждый компонент массива инициализируется значением по умолчанию
и 4.12.5 Начальные значения переменных:
Для типа int
значение по умолчанию равно нулю, то есть 0
.
Ответ 2
При создании массивы автоматически инициализируются значением по умолчанию их типа - в вашем случае это будет 0
. По умолчанию используется false
для boolean
и null
для всех типов ссылок.
Ответ 3
Массив будет инициализирован с помощью 42 0s
Для других типов данных он будет инициализирован значением по умолчанию, то есть.
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
Ответ 4
Все элементы массива инициализируются нулем. Я не смог найти доказательства этого в документации Java, но я просто запустил это, чтобы подтвердить:
int[] arrayTest = new int[10];
System.out.println(arrayTest[5]) // prints zero