JavaRush /Курсы /Java Syntax /Массивы

Массивы

Java Syntax
7 уровень , 1 лекция
Открыта

Фрагмент лекции JavaRush - университета.


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

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

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

Массивы - 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 штук.

7
Задача
Java Syntax Pro, 7 уровень, 1 лекция
Недоступна
Разделяй понятия
Метод main выводит слишком много строк информации о различных понятиях. Было бы логично разделить вывод информации о водороде и об острове Ява на разные методы. Создай public static void printHydrogenInfo() метод, который должен выводить все строки о водороде. Также создай public static void printJa
7
Задача
Java Syntax Pro, 7 уровень, 1 лекция
Недоступна
Упорядоченная информация
Перед тобой — плохой пример использования методов: 1. Методы разделили двустишие; 2. Одну строку кода не стоит оборачивать в отдельный метод. Перепиши код так, чтобы весь текст выводился в методе main, а остальные методы удали. Вывод программы не должен измениться.
Комментарии (267)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
bakvit Уровень 13
22 июля 2023
Rolik Уровень 41
16 марта 2023
То, что сейчас кажется сложным, с течением времеми окажется простым. Массив - объект. Он статичен, т.е., в нем нельзя удалить/добавить элемент.
JAVA CHED Уровень 13
21 февраля 2024
4 года учил?
катя Уровень 13
26 ноября 2022
Пожалуйста, переходите по всем доп.ссылкам, данным в статье! Они очень полезные и помогают при решении задач. По результату вы получите довольно цельную картину, особенно такого сложного материала, как массивы Вот несколько ссылок на статьи, которые и так даны в материалах: https://javarush.com/groups/posts/massivy-java https://javarush.com/groups/posts/1932-koe-chto-o-massivakh https://javarush.com/groups/posts/1997-algoritmih-sortirovki-v-teorii-i-na-praktike
Ekaterina K Уровень 7
6 декабря 2022
а где их находить?
Raf Java Master Уровень 31
25 декабря 2022
3 ссылка не правильно изображает начало кода для сортировки. Буквально скопировав будет ошибка swap
Ruslan Zalikov Уровень 9
13 января 2022
Java Rush это про задачи. Читайте HeadFirst или Г. Шилдт.
Ivy Уровень 41
2 декабря 2021
За такой короткий текст (это не тянет на статью) несколько раз ввести новичков в заблуждение! Я молчу о неточностях в формулировках.
zero to hero Уровень 44
27 февраля 2023
Кому как, а читать портянки с 10 000 символов - удручающее занятие и утомляет. Лучше неполное понимание и освоенный курс программирования чем фундаментальные знания, брошенные на половине.
BucketOnHead Уровень 51 Expert
27 ноября 2021
Подскажите, пожалуйста, правильно ли я понял, что это просто сокращенное объявление массива? Полная запись:

int[] arr = new int[5];
Краткая:

arr = new int[5];
Егор Чичерин Уровень 5
27 ноября 2021
да, но чтобы не путаться лучше использовать полную запись
Lepert Уровень 16
19 января 2022
Воу, погодите Int[] arr; - это и есть краткое ОБЪЯВЛЕНИЯ массива arr = new int[5]; - это мы резервируем память для массива int[] arr = new int[5]; - это сокращенная запись объявления массива + резервирования памяти под него
Игорь Топоров Уровень 14
26 сентября 2021
Объясните пожалуйста, уже не первый раз попадается list.length, я не пойму что это! Что ещё за length и где мы его взяли???
Андрей Уровень 6
26 сентября 2021
если я правильно понял, то length это метод он уже есть в джаве, как System.out.println к примеру. Мы берем наш массив list и вызываем этот метод list.length, и этот метод вычисляет сколько у массива list ячеек, он возвращает целое число пример.

list = new String[10];
int n = list.length;
BenderRB Уровень 11
23 октября 2021
Подсчитывать вручную количество элементов в массиве - это хорошо, но что, если элементов очень много... Вряд ли у Вас хватит терпения подсчитать 3 000 элементов. Если использовать свойство массива length, длина массива будет подсчитана автоматически.
Зенур Уровень 1
20 ноября 2021
length - это не метод, это специальное поле у массива. Не путать с методом length() у объектов класса Stgring.
Jazzy Уровень 10
11 августа 2021
В начале лекции указан один синтаксис для создания массива String[] list = new String[5]; Далее по тексту другой вариант: list = new String[5]; Они равнозначны??
Masha Frolova Уровень 22
20 августа 2021
да,они равноправны, но первый из них лучше соответствует стилю Java https://javarush.com/groups/posts/massivy-java тут почитай
Edward Northwind Уровень 37
26 апреля 2022
Не вводите людей в заблуждение. Вы можете разделить объявление и присвоение, но не пропустить объявление вовсе.
hidden #2707993 Уровень 8
14 июля 2021
да пребудет с нами сила))
Jonnius Уровень 7
1 июля 2021
"Доступ к конкретной ячейке идёт ..." - куда он идет? грамманаци нэгодуэ, замените плж на "осуществляется"