Переменная типа массив содержит ссылку на объект. Объявление переменной типа массив не создает массив объектов или не назначает какое-нибудь место для компонент массива. Оно создает только саму переменную, которая может содержать ссылку на массив. Однако, часть инициализатора оператора объявления может создавать массив, ссылка на который становится тогда начальным значением переменной.
Так как длина массива не является частью его типа, отдельная переменная типа массив может содержать ссылки на массивы различной длины.
Ниже приведены примеры объявления переменных массива, которые не создают массив:
int[] ai; // массив типа int
short[][] as; // массив из массивов типа short
Object[] ao, // массив типа Object
otherAo; // массив типа Object
short s, // скаляр short
aas[][]; // массив из массивов типа short
Ниже приведены некоторые примеры объявления переменных массива, которые создают массив объектов:
Скобки [] могут появляться как часть типа в начале описаний, или как часть описания для конкретной переменной, или в обоих случаях сразу, как в этом примере:
byte[] rowvector, colvector, matrix[];
Это объявление эквивалентно следующему:
byte rowvector[], colvector[], matrix[][];
Как только объект массива создан, его длина никогда не изменяется. Чтобы создать переменную-массив, ссылающуюся на массив другой длины, нужна ссылка на различные массивы, которая должна быть присвоена переменной.
Если переменная-массив v имеет тип A[], где A - ссылочный тип, v может содержать ссылку на экземпляр любого типа массив B [], при условии что B может быть присвоен A. Это может происходить в результате времени выполнения на позднем присваивании.