Первый способ инициализации массива

Для инициализации массива используется операция new и указание размера массива, то есть количества ячеек, которые массив будет содержать. Например, для массива b, который мы только что использовали в качестве примера, эта инициализация может выглядеть так:

b=new int[10];

После выполнения этой строки мы получаем возможность использовать одномерный массив размером 10 ячеек.

И вот тут мы сталкиваемся с одной очень важной, даже исключительно важной разницей между "обычными" переменными и массивами.

После инициализации "обычной" переменной можно совершенно спокойно говорить "в переменной хранится значение":

int a=5;

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

Массив же, по сути дела, "хранит" не значение (точнее – значения, так предназначен, в принципе, для работы под одним именем сразу с несколькими значениями) – массив хранит ссылку на ту область памяти, в которой записаны значения.

Кстати, это отличие вы, возможно, заметили уже в самом способе инициализации: в нем было использована операция new. Это такой элемент языка Java, который создает не "простые" переменные, имя которых напрямую связано со значением, а "объект ссылочного типа". Иными словами, создает указание на место, в котором, собственно, значение и хранится.

Мы пока не станем углубляться в специфику различий, но вы и сами увидите, насколько разными инструментами в языке Java являются переменные, которые массивы, и переменные, которые "простые".

Во-первых, можно объявить массив размером… 0!

int [] a=new int[0];

Разумеется, такая возможность сразу вызывает вопрос: а зачем нужен массив, размер которого равен 0, что в него можно поместить, для чего его можно использовать? Оказывается, при написании классов, которые используют сложные типы данных (объекты) есть немало ситуаций, когда массив нулевого размера как раз очень даже удобен. Но рассмотрение задач этого уровня выходит за рамки данного курса – и пока мы ограничимся констатацией факта: можно создавать массив нулевого размера.

Исключительно важной особенностью языка Java является возможность так задавать размер массива, чтобы никакие конкретные числа при этом не указывались вообще. Можно сказать, что с помощью этого способа размер массива задается "гибко", потому что при этом удается избежать указания заранее известного размера с помощью конкретного числа:

int x=reader.nextInt();

int [] a=new int[x];

И можно даже так:

int [] a=new int[reader.nextInt()];

В этом случае, как видите, в принципе нет никакой возможности(!) ответить на вопрос: какого размера (в числах!) будет массив?

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

Мы совсем не случайно употребили в предыдущем абзаце несколько восклицательных знаков: использование гибкого создания массивов – действительно очень сильный инструмент.

Следует только иметь в виду: после того, как размер массива будет установлен в виде числового значения (не важно, каким способом) – изменять размер массива еще раз уже нельзя.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: