undefined

Массивы

Java Syntax
7 уровень , 1 лекция
Доступна

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

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

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

Массивы - 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[10]);
Будет сгенерировано исключение (ошибка программы) – выход за границы массива.

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

Комментарии (245)
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION
Jonnius Уровень 7 Санкт Петербург Россия
1 июля 2021
"Доступ к конкретной ячейке идёт ..." - куда он идет? грамманаци нэгодуэ, замените плж на "осуществляется"
Gonsalez Уровень 7
15 июня 2021
Наконец-то дошел до массивов) Понимал, что много прошлых задач можно было решить через массивы, но не хотелось лезть вперед, не поняв предыдущие темы
Taras Уровень 35 Киев Украина
10 марта 2021
На канале есть блок коротких задач по массивам, вроде что будет выведено на экран? И ответиы 0, 1, 2.... или 1, 2, 3... telegram @javaquiz_mentor
Игорь Уровень 35 Братск Россия
16 января 2021
Создал сервер в дискорде для совместного прохождения курса JavaRush. Если кто-то хочет обсуждать сложные лекции, задачи, получать помощь, тогда перейдите по ссылке- нажав здесь.
Oleg Уровень 7 Санкт-Петербург Россия
24 декабря 2020
Опять потратил материю а задач нет( Хитрая система.
UVM Уровень 8
7 декабря 2020
Настоятельно рекомендую перед этой лекцией прочитать!!! https://javarush.ru/groups/posts/massivy-java https://javarush.ru/groups/posts/1932-koe-chto-o-massivakh https://javarush.ru/groups/posts/1933-klass-arrays-i-ego-ispoljhzovanie https://javarush.ru/groups/posts/klass-arraylist http://proglang.su/java/arrays Читать не бегло!
Игорь Уровень 35 Братск Россия
28 ноября 2020
Создал сервер в дискорде для совместного прохождения курса JavaRush. Если кто-то хочет обсуждать сложные лекции, задачи, получать помощь, тогда перейдите по ссылке- нажав здесь.
Сергей Уровень 28 Киев Украина
21 ноября 2020
ну Здрастє😁
Alexandra Averyanova Уровень 8 Санкт-Петербург Россия
20 ноября 2020
как же сладко, хахаха) убила 2 часа на решение крайней задачи прошлой лекции ( спойлер: не решила) и сразу начинается нужная тема, хаха) 😅
Денис Ferondo Уровень 16 Yalta
15 ноября 2020
та ладно..еще и лекции по массивам сразу дали)) https://javarush.ru/groups/posts/massivy-java https://javarush.ru/groups/posts/1932-koe-chto-o-massivakh