Проблема в следующем коде:
ArrayExample[] no1 = new ArrayExample[5];
System.out.println(Arrays.toString(no1));
Это объявляет массив определенного типа (ArrayExample
) и определенной длины (5), но больше ничего не делает. Эта первая строка приводит к ссылке на переменную no1
, содержащей пять нулевых значений. Это то, что вы видите при распечатке.
[null, null, null, null, null]
Вот еще один пример, но с использованием Object
, чтобы подчеркнуть, что код ничего не делает, кроме создания пустого массива и печати нулевых значений.
Object[] no2 = new Object[5];
System.out.println(Arrays.toString(no2));
Этот код имеет такой же вывод:
[null, null, null, null, null]
Вот код, который инициализирует массив (как вы уже делали), а затем создайте новый экземпляр ArrayExample
и сохранить его на каждом элементе массива. (Я также переместил ArrayExample
из определения основного класса, чтобы он компилировался).
public class Example {
public static void main(String[] args) {
ArrayExample[] no1 = new ArrayExample[5];
no1[0] = new ArrayExample(10);
no1[1] = new ArrayExample(10);
no1[2] = new ArrayExample(10);
no1[3] = new ArrayExample(10);
no1[4] = new ArrayExample(10);
System.out.println(Arrays.toString(no1));
}
}
class ArrayExample {
// use same class contents as your original post
}
Вот результат запуска этого обновленного кода:
[6474373150570442153, 27524825597078735826, 58127219204026904839, 90611080549351937198, 6503557163540938849]
Еще один вариант настройки содержимое вашего массива будет использовать этот однострочный:
Arrays.setAll(no1, k -> new ArrayExample(10));