Массивы

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

1. Массив — это контейнер элементов

Скорее всего вы слышали, что компьютеры могут обрабатывать громадные объемы информации. Условный оператор (if-else) и циклы (for, while), конечно, в этом помогают. Но далеко на них не уедешь, ведь обрабатываемые данные нужно как-то хранить.

На этот случай в Java, как и практически во всех языках программирования, есть такая отличная вещь как массивы (Array). Их еще называют таблицами.

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

Массивы (Array) Java

Если раньше мы сравнивали переменную с коробкой (где можно хранить какое-нибудь значение), то массив — это скорее коробка, разделенная внутри на секции. У каждой секции в «коробке-массиве» есть ее номер. Нумерация, конечно же, с нуля...

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

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

Для этого после имени переменной в квадратных скобках надо указать индекс ячейки, к которой обращаемся. Это довольно просто:

array[индекс] = значение;

Где аrray — это имя переменной-массива, индекс — номер ячейки в массиве, а значение — значение, которое мы хотим занести в указанную ячейку.

Но давайте для начала разберемся, как создавать массивы.


2. Создание массива элементов в Java

Создание массива элементов в Java

Допустим, вашей программе нужно где-то хранить 100 целых чисел. Скорее всего, для этого подошел бы массив. И как же его создать?

Если бы мы хотели хранить одно целое число, нам бы подошел тип int, ну а если мы хотим хранить 100 целых чисел, вероятно, нам нужен массив типа int. Вот как будет выглядеть код по его созданию:

int[] array = new int[100];

Давайте разберемся, что тут написано.

Как вы уже возможно догадались, слева от знака равенства у нас находится объявление переменной по имени array и типа int[]. После типа int следуют квадратные скобки, которые как бы намекают, что в «коробках» этого типа можно будет хранить не одно значение, а несколько.

Справа от знака равенства у нас написано «создание объекта» (слово new) на 100 элементов (ячеек) типа int. Тоже не слишком сложно.

Если бы мы хотели, например, создать массив на 20 ячеек для хранения вещественных чисел, код его создания выглядел бы примерно так:

double[] vals = new double[20];

Количество ячеек в массиве называют размером массива или длиной массива. А из-за способности хранить много значений массивы еще называют контейнерами.

Важный факт: размер контейнера массива нельзя изменить после создания.

Можно создать новый, но длину уже созданного контейнера поменять нельзя.


6
Задача
Java Syntax Pro, 6 уровень, 1 лекция
Недоступна
Создаем массивы
В методе main проинициализируй переменные intArray и doubleArray массивами соответствующих типов, размер которых равен 10.

3. Работа с ячейками массива

Работа с ячейками массива

Хорошо, создавать массивы мы научились, а как правильно с ними работать?

Да практически так же, как и с обычными переменными, только после имени переменной-массива обязательно нужно указывать номер ячейки, с которой мы работаем.

Нумерация ячеек массива всегда начинается с нуля. Если у нас массив на 10 элементов, то номера (индексы) его ячеек 0..9, если массив на 200 элементов, то 0..199. И дальше по аналогии.

Примеры:

Код Пояснение
int[] a = new int[10];
a[2] = 4;
a[7] = 9;
a[9] = a[2] + a[5];
Создаем массив на 10 элементов типа int.
В ячейку с индексом 2 записываем значение 4.
В ячейку с индексом 7 записываем значение 9.
В ячейку с индексом 9 записываем сумму значений, которые хранятся в ячейках 2 (хранится 4) и 5 (хранится 0).

Вот что будет храниться в памяти после выполнения данного кода:

Работа с ячейками массива типа int

Колонка слева (серым цветом) — это номера (индексы) ячеек. В ячейках хранятся внесенные значения: 4, 9 и 4. Сразу после создания ячейки массива заполнены нулями.

Важно. Все ячейки массива имеют одинаковый тип данных. Если мы создали массив строк String, в его ячейках можно хранить только строки. Тип данных массива задается при его создании. Ни тип данных, ни длину массива в дальнейшем поменять нельзя.


6
Задача
Java Syntax Pro, 6 уровень, 1 лекция
Недоступна
Четные и нечетные ячейки массива
В методе main(String[]) тебе нужно заполнить массив strings значениями. Если индекс массива чётный - присвоить значение "Чётный"(ноль - цифра чётная), иначе присвоить "Нечётный". Вывод текста в консоль в тестировании не участвует.
6
Задача
Java Syntax Pro, 6 уровень, 1 лекция
Недоступна
Работаем с элементами массива
Реализуй метод main(String[]), который меняет знак элемента массива array на противоположный, если значение этого элемента чётное.

Комментарии (660)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Anonymous #3600057 Уровень 7
15 июля 2025
а мне показалось что НОЛЬ делить нельзя написал так for ( int i = 0; i < strings.length; i++){ if (i == 0) { strings[i] = EVEN; } else if (i % 2 == 0){ strings[i] = EVEN; } else strings[i] = ODD; } //напишите тут ваш код
12 июня 2025
Вторую задачу решил так, пришлось гуглить, как получить длину массива:
 
	   for (int i = 0; i < strings.length; i++) {
			if (i % 2 == 0) {
				strings[i] = EVEN;
			} else {
				strings[i] = ODD;
			}
 
Проверку прошел, и не сомневался, так как тут всë удовлетворяет условиям, но когда из любопытства глянул решение, то понял, я явно всë усложнил 🤣 Третья задача тоже заставила погуглиль, как инвентировать знак числа, узнал для себя много чего интересного и в очередной раз убедился, что программирование это не математика ))
 
for (int i = 0; i<array.length; i++){
            if (array[i]%2==0){
               array[i] = -array[i];   
            }         
                          
        }
 
Anonymous #3576323 Уровень 7
17 мая 2025
Ребят в 3 задачке только через условный оператор if работает я вот вообще хз почему так поэтому даже не пытайтесь через цикл for сделать
Артём Уровень 11
19 мая 2025
Через for приняло задачу...
Что?Где?Когда? Уровень 16
16 мая 2025
Все же верно, условие задачи выполняется, почему проверку не проходит? public static int[] array = new int[]{-1, 2, 3, -4, -5}; public static void main(String[] args) { for (int i = 0; i < 5; i++) { if (i % 2 == 0) { array[i] = - array[i]; } } System.out.println(array[0]); System.out.println(array[1]); System.out.println(array[2]); System.out.println(array[3]); System.out.println(array[4]); } }
Anonymous #3576379 Уровень 8
17 мая 2025
if (i % 2 == 0) { вы проверяете четность индекса, а нужно проверять значение, хранящееся в массиве под этим индексом (array[i], а не просто i)
Vadim_N Уровень 10
11 мая 2025
После решения 2 задачи через for, глянул "правильный ответ"... Короче, предложен был вариант "заката Солнца вручную". )) Не ожидал даже. З/Ы: И Output, одинаков... Я в шоке.
REK.QA Уровень 11
3 мая 2025
Господа знатоки, подскажите. Попробовал вторую задачу решить таким методом (почему бы всё не автоматизировать))). Но идея ругается. Что мог не так написать? public static void main(String[] args) { for (int index = 0; index <= 5; ){ strings[index] = index++; if (index % 2 == 0) { index = EVEN; } else { index = ODD; } }
Сергей К Уровень 26
3 мая 2025
1) index < 5 в цикле; так как элементы массива нумеруются с 0 до 4 for (int index = 0; index < 5; index++; ){ 2) strings[index] = index++; это убери 3) strings[index] = EVEN или strings[index] = ODD
Anonymous #3576323 Уровень 7
17 мая 2025
в условии должно быть строго меньше а не строго равно потому что если сторого равно то ты выходишь за пределы массива так как массив начинается считаться с 0 то есть с 0 до 4
Роман Гришин Уровень 6
1 апреля 2025
Смотрю во многих решениях используется цикл и условие i < array.length. Так вот вопрос, мы подобное разве где-то использовали уже? Или кто-то чуть более опытный разок решение написал и все начали это к себе добавлять? Помню, что длину определяли только для стринговых значений, но никак не для массивов. Может где-то что-то пропустил, подскажите пж?)
Anonymous #3560516 Уровень 10
3 апреля 2025
нет, не использовали цикл и условие i < array.length
Сергей Карпеев Уровень 93 Expert
12 апреля 2025
Видимо процесс обучения построен так, что ты, разобрав как работает метод ".length" для String-ов, понимаешь уже что написано в 12 строке. Я думаю, это кто-то придумал еще до языка java. Программисты в принципе сегодня работают с тем, что уже давно написано, переделывая под конкретные новые задачи) разве же это не прекрасно!
Aura Уровень 19
21 апреля 2025
Я неделю назад что-то гуглил и случайно увидел, как в массиве используют length, вот и подумал чего его в цикл сюда не присобачить! =)
якстер якстер Уровень 11
23 марта 2025
не понимаю что у меня тут неправильно, помогите! вроде всё лаконично и адекватно в сравнении с кодом из правильного решения) for (int i = 0; i < 5; i++) if (array[i] < 0 && (array[i]%2) == 0) array[i] = Math.abs(array[i]);
YurievaAS Уровень 26
24 марта 2025
Здесь нужно не сделать число положительным, а поменять знак числа на противоположный. Т.е. если было 4, оно станет -4. Проверка array[i] < 0 лишняя. Math.abs(array[i]); не нужно.
20 марта 2025
когда в 3 задаче вместо предложенных 10 строк кода в правильных ответах, догадался и уместил все в 3 строчках
Егор Уровень 12
18 марта 2025
Почему пройдя циклы, нельзя решать эту задачу используя цикл?
Arpine Aleksanyan Уровень 8
20 марта 2025
можно, я так и сделала, но тыкнув кнопку "Правильное решение" сильно удивилась. Почему впихиваете людам плохой код как правильный ? ну хотя бы напишите "вариант решения задачи" , или напишите пометку что можно использовать циклы.

        for(int i=0; i<array.length; i++) {
            if(array[i] % 2 == 0){
                array[i] = - array[i];
            }
        }