Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Массивы.doc
Скачиваний:
9
Добавлен:
02.02.2015
Размер:
104.45 Кб
Скачать
  1. Массивы

В языке Ява массивыявляются объектам, которые создаются динамически, и могут иметь значение переменных типа Object.

Объект массива содержит ряд переменных. Число переменных может быть нулевым, в случае когда массив, как говорят, является пустым. Переменные содержащиеся в массиве не имеют никаких имен; вместо этого ссылаются на массив с помощью выражений доступа, которые используют неотрицательные целые значения индекса. Эти переменные называютсякомпонентами массива. При обращении к компонентам массива используют целочисленные индексы от 0 доn-1включительно.

Все компоненты массива имеют одинаковый тип, который называется типом компонент массива. Если тип компонент массива - T, тогда массив пишетсяT [].

Тип компоненты массива может быть типом массив. Компоненты из такого массива могут содержать ссылки на подмассивы (т.е. на другие массивы). Если, начиная с какого-нибудь типа массив, рассматривать каждый компонент типа, и снова (если он - также является типом массив) компонент типа следующего типа, и так далее, в конечном счете должны достигнуть тип компоненты, который - не является типом массив; он называется типом элементапервоначального массива, и компоненты этого уровня структуры данных называютсяэлементамипервоначального массива.

Существует ситуация, в которой элемент массива может быть массивом: если тип элемента - Object, тогда некоторый, или все элементы могут быть массивами, потому что любой объект массива может быть присвоен любой переменной типа Object .

    1. Типы массива

Тип массива пишется как имя типа элемента, сопровождаемого некоторым числом пустых пар квадратных скобок []. Число пар скобок указывает на глубину вложения массива. Длина массива - не является частью его типа.

Типом элемента массива может быть любой тип, примитивный или cсылка. В частности:

Разрешается массив с интерфейсным типом таким, как тип компонент . Элементы такого массива могут иметь значением пустую ссылку (null) или экземпляры любого классового типа, который реализует интерфейс.

Разрешается массив с классовым типом abstract как тип компонент. Элементы такого массива могут иметь значением - пустую ссылку (null) или экземпляры любого подкласса класса abstract, который сам не abstract.

Возможные следующие варианты объявления массива:

тип[] имя; тип имя[];

Объявить имя для массива и создать сам массив можно было на одной строке по следующей схеме:

тип[] имя = new тип[размер]; тип[] имя = {эл0, эл1, …, элN};

    1. Переменные-массивы

Переменная типа массив содержит ссылку на объект. Объявление переменной типа массив не создает массив объектов или не назначает какое-нибудь место для компонент массива. Оно создает только саму переменную, которая может содержать ссылку на массив. Однако, часть инициализатора оператора объявления может создавать массив, ссылка на который становится тогда начальным значением переменной.

Так как длина массива не является частью его типа, отдельная переменная типа массив может содержать ссылки на массивы различной длины.

Ниже приведены примеры объявления переменных массива, которые не создают массив:

int[] ai; // массив типа int

short[][] as; // массив из массивов типа short

Object[] ao, // массив типа Object

otherAo; // массив типа Object

short s, // скаляр short

aas[][]; // массив из массивов типа short

Ниже приведены некоторые примеры объявления переменных массива, которые создают массив объектов:

Exception ae[] = new Exception[3];

Object aao[][] = new Exception[2][3];

int[] factorial = { 1, 1, 2, 6, 24, 120, 720, 5040 };

char ac[] = { 'n', 'o', 't', ' ', 'a', ' ',

'S', 't', 'r', 'i', 'n', 'g' };

String[] aas = { "array", "of", "String", };

Скобки [] могут появляться как часть типа в начале описаний, или как часть описания для конкретной переменной, или в обоих случаях сразу, как в этом примере:

byte[] rowvector, colvector, matrix[];

Это объявление эквивалентно следующему:

byte rowvector[], colvector[], matrix[][];

Как только объект массива создан, его длина никогда не изменяется. Чтобы создать переменную-массив,ссылающуюся на массив другой длины, нужна ссылка на различные массивы, которая должна быть присвоена переменной.

Если переменная-массив vимеет тип A[], гдеA- ссылочный тип,vможет содержать ссылку на экземпляр любого типа массивB[], при условии чтоBможет быть присвоенA. Это может происходить в результате времени выполнения на позднем присваивании.