Найти в Дзене
Анастасия Софт

Урок 17 для Java-разработчика. 💻💡Масштабное руководство по массивам в Java: от новичка до профи

Даже если вы только начали свой путь в программировании, после этой статьи массивы в Java станут для вас старыми добрыми друзьями. А если вы профи — возможно, тоже найдете пару новых фишек! Массив — это как шкафчик с номерами, в каждый из которых можно положить один элемент определенного типа. У всех ячеек одно имя (название массива), а доступ к ним идёт по номеру (индексу). Например: int[] numbers = new int[3];
numbers[0] = 5;
numbers[1] = 10;
numbers[2] = 15; String[] colors = {"Red", "Green", "Blue"}; Красиво, коротко, по делу. Тут и память выделили, и значения задали сразу. int[] squares = new int[5];
for (int i = 0; i < squares.length; i++) {
squares[i] = i * i;
} Результат: [0, 1, 4, 9, 16] for (int val : squares) {
System.out.println(val);
} Удобно, если не нужно менять элементы. public static int sumArray(int[] arr) {
int sum = 0;
for (int val : arr) {
sum += val;
}
return sum;
} Вызов: int[] nums = {1, 2, 3, 4};
System.out.println(sumArray(nums
Оглавление
Урок 17 для Java-разработчика. 💻💡Масштабное руководство по массивам в Java: от новичка до профи
Урок 17 для Java-разработчика. 💻💡Масштабное руководство по массивам в Java: от новичка до профи

Даже если вы только начали свой путь в программировании, после этой статьи массивы в Java станут для вас старыми добрыми друзьями. А если вы профи — возможно, тоже найдете пару новых фишек!

Что такое массив и зачем он нужен?

Массив — это как шкафчик с номерами, в каждый из которых можно положить один элемент определенного типа. У всех ячеек одно имя (название массива), а доступ к ним идёт по номеру (индексу).

Например:

int[] numbers = new int[3];
numbers[0] = 5;
numbers[1] = 10;
numbers[2] = 15;

Что тут происходит?

  • int[] numbers — объявили массив целых чисел с именем numbers.
  • new int[3] — выделили память под 3 элемента.
  • numbers[0] = 5 — положили значение 5 в первую ячейку.

1. Инициализация массива: короткий путь для ленивых (и умных)

String[] colors = {"Red", "Green", "Blue"};

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

2. Заполнение массива через цикл

int[] squares = new int[5];
for (int i = 0; i < squares.length; i++) {
squares[i] = i * i;
}

Комментарии:

  • squares.length — длина массива.
  • squares[i] = i * i; — кладём в массив квадрат индекса.

Результат: [0, 1, 4, 9, 16]

3. Вывод массива через for-each

for (int val : squares) {
System.out.println(val);
}

Удобно, если не нужно менять элементы.

4. Массив в методе: на вход и на выход

public static int sumArray(int[] arr) {
int sum = 0;
for (int val : arr) {
sum += val;
}
return sum;
}

Вызов:

int[] nums = {1, 2, 3, 4};
System.out.println(sumArray(nums)); // 10

5. Анонимные массивы — безымянные герои

printArray(new int[]{5, 6, 7});

public static void printArray(int[] arr) {
for (int val : arr) {
System.out.print(val + " ");
}
}

Без объявления переменной! Красиво, когда один раз надо.

6. Копирование массива

int[] original = {1, 2, 3};
int[] copy = new int[original.length];
System.arraycopy(original, 0, copy, 0, original.length);

Быстро и безопасно. Не забудьте импортировать System.arraycopy — он встроенный.

7. Изменение длины массива (спойлер: нельзя напрямую)

int[] oldArr = {1, 2, 3};
int[] newArr = new int[5];
System.arraycopy(oldArr, 0, newArr, 0, oldArr.length);

Старый трюк: создаём новый массив побольше и копируем туда старые значения.

8. Найти максимум и заменить отрицательные элементы

int[] data = {2, -5, 7, -3, 9};
int max = data[0];
for (int val : data) {
if (val > max) max = val;
}

for (int i = 0; i < data.length; i++) {
if (data[i] < 0) data[i] = max;
System.out.println("data[" + i + "] = " + data[i]);
}

Тест: самопроверка по массивам

1. Какой метод копирования массива самый быстрый?

  • A) Через цикл for
  • B) System.arraycopy
  • C) Arrays.copyOf

2. Что произойдёт, если обратиться к элементу arr[10] в массиве из 5 элементов?

  • A) Выведется null
  • B) Компилятор пропустит
  • C) Исключение ArrayIndexOutOfBoundsException

3. Что делает цикл for (int val : array)?

  • A) Меняет элементы массива
  • B) Просто выводит копии значений
  • C) Удаляет элементы

Задача перед финалом

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

Пример:

Input: [1, 2, 3, 4] => Output: [3, 5, 7, 4]

Вывод

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

Ответы на тест:

  1. B) — System.arraycopy действительно работает очень быстро.
  2. C) — Java выбросит исключение ArrayIndexOutOfBoundsException.
  3. B) — в for-each переменная — это копия значения, изменения не сохраняются.

Если вам понравилось — дайте знать 🚀 Увидимся в следующем уроке!