Итак, я объявляю и инициализирую массив int:
static final int UN = 0;
int[] arr = new int[size];
for (int i = 0; i < size; i++) {
arr[i] = UN;
}
Скажи, что я делаю это вместо этого ...
int[] arr = new int[5];
System.out.println(arr[0]);
... 0
будет печатать в стандартном формате. Также, если я сделаю это:
static final int UN = 0;
int[] arr = new int[5];
System.out.println(arr[0]==UN);
... true
будет печатать в стандартном формате. Так как же Java инициализирует мой массив по умолчанию? Безопасно ли предполагать, что при инициализации по умолчанию устанавливаются индексы массива, 0
что означало бы, что мне не нужно перебирать массив и инициализировать его?
Спасибо.
java
arrays
initialization
Христо
источник
источник
Ответы:
Все в Java-программе, явно не установленной программистом, инициализируется нулевым значением.
null
.0
.0.0
false
.'\u0000'
(десятичный эквивалент которого равен 0).Когда вы создаете массив чего-либо, все записи также обнуляются. Таким образом, ваш массив содержит пять нулей сразу после его создания
new
.Примечание (на основе комментариев): Виртуальная машина Java не обязана обнулять базовую память при выделении локальных переменных (это позволяет при необходимости выполнять эффективные операции стека), поэтому во избежание случайных значений Спецификация языка Java требует инициализации локальных переменных.
источник
Из спецификации языка Java :
источник
null
.JLS четко говорит
Инициализатор массива создает массив и предоставляет начальные значения для всех его компонентов.
и это независимо от того, является ли массив переменной экземпляра или локальной переменной или переменной класса.
Значения по умолчанию для примитивных типов: документы
Для значений объектов по умолчанию является
null
.источник
По словам Ява,
источник
Торбьерн Равн Андерсен ответил за большинство типов данных. Так как была горячая дискуссия о массиве,
Цитирование из спецификации jls http://docs.oracle.com/javase/specs/jls/se7/html/jls-4.html#jls-4.12.5 «Компонент массива инициализируется значением по умолчанию при его создании»
Я думаю, независимо от того, является ли массив локальным или переменная экземпляра или класса это будет со значениями по умолчанию
источник
У каждого класса в Java есть конструктор (конструктор - это метод, который вызывается при создании нового объекта, который инициализирует поля переменных класса). Поэтому, когда вы создаете экземпляр класса, при создании объекта вызывается метод конструктора, и все значения данных инициализируются в это время.
Для объекта целочисленного типа массива все значения в массиве инициализируются в 0 (ноль) в методе конструктора. Аналогично для объекта логического массива все значения инициализируются как false.
Таким образом, Java инициализирует массив, выполняя метод конструктора при создании объекта.
источник
Java говорит, что по умолчанию длина массива JAVA во время инициализации будет 10.
Но
size()
метод возвращает количество вставленных элементов в массиве, и, поскольку во время инициализации, если вы не вставили ни одного элемента в массив, он вернет ноль.источник