Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие Java .pdf
Скачиваний:
134
Добавлен:
16.03.2015
Размер:
1.32 Mб
Скачать

При создании объекта массива должна быть указана, по меньшей мере, его первая, «самая левая», размерность. Другие размерности разрешается не задавать – в этом случае их придётся определить позже, создав объекты «вложенных» массивов. Указание в операторе new единовременно всех размерностей – это самый лаконичный способ создания массива, позволяющий избежать необходимости использования дополнительных операторов new. Выражение объявления и создания массива mat, приведённое в примере 30, равнозначно коду в примере 31. Обратите внимание на то, что в цикле происходит присвоение значений именно одномерного массива mat.

Пример 31. Отложенная инициализация вложенных массивов float[][] mat = new float[4][];

for (int y = 0; y < mat.length; y++) mat[y] = new float[4];

Такая форма инициализации обладает тем преимуществом, что позволяет наряду с получением массивов с одинаковыми размерностями (скажем, 4х4) создавать и т.н. «непрямоугольные массивы», необходимые для хранения различных по длине последовательностей данных: представьте, что будет, если в цикле будет стоять следующее выражение:

mat[y] = new float[y];

2.9.2 Инициализация массивов

При создании объекта массива каждый его элемент получает значение, предусмотренное по умолчанию и зависящее от типа массива: 0 – для числовых типов, '\u0000' – для типа char, false – для boolean и null – для ссылочных типов.

Объявляя массив ссылочного типа, мы на самом деле определяем массив переменных этого ссылочного типа, объекты необходимо создавать дополнительно (пример 32).

81

Пример 32. Создание и инициализация массива объектов

Attr[] attrs = new Attr[12];

for (int i = 0; i < attrs.length; i++) attrs[i] = new Attr(names[i], values[i]);

После выполнения первого выражения, содержащего оператор new, переменная attrs получит ссылку на массив из 12 переменных, которые инициализированы значением null. Объекты типа Attr как таковые будут созданы только в процессе выполнения цикла.

Массив может инициализироваться и не значениями по умолчанию с помощью конструкции в фигурных скобках, в которых перечислены через запятую значения элементов:

String[] dangers = {"Львы", "Тигры", "Медведи"};

Тот же самый результат может быть достигнут и просто поэлементной инициализацией:

String[] dangers = new Srting[3]; dangers[0] = "Львы";

dangers[1] = "Тигры"; dangers[2] = "Медведи";

Первая форма, предусматривающая задание списка инициализаторов в фигурных скобках, не требует явного использования оператора new – он вызывается косвенно исполняющей системой. Длина массива в этом случае определяется количеством значенийинициализаторов.

Также допускается и возможность явного использования оператора new, но размерность всё равно следует опускать – она, как и раньше, определяется автоматически:

String[] dangers = new String[] {"Львы", "Тигры", "Медведи"};

Подобную форму объявления и инициализации массива разрешается применять в любом месте кода, где может находиться ссылка, например, в выражении вызова метода:

82

Соседние файлы в предмете Программирование на Java