— Привет, Амиго!

— День добрый, Элли!

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

Массивы - 1

— Начну с аналогии. Давай сравним обычный жилой дом и многоэтажку. В обычном доме чаще всего живет одна семья, а многоэтажка разбита на квартиры. Чтобы написать письмо семье, которая живет в обычном доме, надо указать его уникальный адрес. А чтобы написать письмо семье, которая живет в квартире, надо указать уникальный адрес дома и еще номер квартиры.

— Да, тут все понятно.

— Так вот, переменная-массив – это переменная-многоэтажка. В ней можно хранить не одно значение, а несколько. В такой переменной есть несколько квартир (ячеек), к каждой из которых можно обратиться по ее номеру (индексу). Для этого после имени переменной в квадратных скобках надо указать индекс ячейки, к которой обращаемся. Это довольно просто.

— Надеюсь.

— Переменная-многоэтажка (переменная-массив) может быть любого типа, надо лишь вместо «ИмяТипа имяПеременной», написать «ИмяТипа[] имяПеременной».

— Примеры:

Код Описание
String[] list = new String[5];
Создание массива на 5 элементов типа «строка»
System.out.println(list[0]);
System.out.println(list[1]);
System.out.println(list[2]);
System.out.println(list[3]);
System.out.println(list[4]);
На экран будет выведено пять значений “null”.

Чтобы получить значение, которое хранится в определенной ячейке массива, используйте квадратные скобки и номер ячейки

int listCount = list.length;
listCount получит значение 5 – количество ячеек в массиве list.
list.length хранит длину(количество ячеек) массива.
list[1] = "Mama";
String s = list[1];
При присваивании объектов ячейкам массива нужно указывать индекс/номер ячейки в квадратных скобках.
for (int i = 0; i < list.length; i++)
{
     System.out.println(list[i]);
}
Вывод всех значений массива на экран.

— Как интересно.

— Переменная-массив требует дополнительной инициализации.

— ?

— Обычную переменную нужно было просто объявить и уже можно присваивать ей различные значения. С массивом все немного сложнее.

— Сначала надо создать контейнер на N элементов, а затем в него уже можно класть значения.

Код Описание
String[] list = null;
Переменная-массив list, ее значение – null. Она может хранить только контейнер для элементов. Контейнер надо создавать отдельно.
String[] list = new String[5];
Мы создаем контейнер на 5 элементов и кладем ссылку на него в переменную list. Этот контейнер содержит 5 квартир (ячеек) с номерами 0, 1, 2, 3, 4.
String[] list = new String[1];
Мы создаем контейнер на 1 элемент и кладем ссылку на него в переменную list. Чтобы занести что-то в этот контейнер надо написать list[0] = “Yo!”;
String[] list = new String[0];
Мы создаем контейнер на 0 элементов и кладем ссылку на него в переменную list. Ничего в этот контейнер занести нельзя!

— Ага. Кое-что проясняется.

— Основные факты о массивах:

1) Java массив состоит из множества ячеек.

2) Доступ к конкретной ячейке идёт через указание её номера.

3) Все ячейки одного типа.

4) Начальное значение для всех ячеек – null, для примитивных типов – 0, 0.0 (для дробных), false (для типа boolean). Точно такое же, как и у простых неинициализированных переменных.

5) String[] list — это просто объявление переменной. Сначала нужно создать массив (контейнер) и положить его в эту переменную, а потом уже им пользоваться. См. пример ниже.

6) Когда мы создаём объект массив (контейнер), нужно указать, какой он длины – сколько в нем ячеек. Это делается командой вида: new TypeName[n];

Массивы - 2

— Примеры:

Код Описание
String s;
String[] list;
s равно null
list равно null
list = new String[10];
int n = list.length;
Переменная list хранит ссылку на объект — массив строк из 10 элементов.
n равно 10
list = new String[0];
Теперь list содержит массив из 0 элементов. Массив есть, но хранить элементы он не может.
list = null;
System.out.println(list[1]);
Будет сгенерировано исключение (ошибка программы) – программа аварийно завершится. list содержит пустую ссылку – null
list = new String[10];
System.out.println(list[11]);
Будет сгенерировано исключение (ошибка программы) – выход за границы массива.

Если list содержит 10 элементов/ячеек, то их разрешённые индексы: 0,1,2,3,4,5,6,7,8,9 – всего 10 штук.