Когда вы печатаете два массива сразу после их операторов объявления, становится очевидной одна причина:
Первая печатает [null, null]
, а вторая [[0.0, 0.0, 0.0], [0.0, 0.0, 0.0]]
(протестировано с rows = 2
и columns = 3
)
Первый инициализирует внутренние массивы только тогда, когда доступны их данные, а второй создает и инициализирует эти внутренние массивы нулями (значение по умолчанию для double
).Это различие, по сути, связано с тем, когда создаются объекты (и последствия этого при использовании памяти)Для небольших массивов эта разница, вероятно, будет незначительной.
Кроме того, внутренние массивы не обязательно должны быть одинаковой длины, поэтому:
double[][] matrix = new double[rows][columns]
заставляет всевнутренние массивы должны иметь длину columns
. double[][] matrix = new double[rows][]
позволяет добавить new double[12]
к внешнему массиву, поэтому внутренние массивы могут иметь различную длину.