Если видео недоступно для просмотра, попробуйте выключить блокировщик рекламы.

Массивы представляют собой последовательность элементов одного типа, например чисел или строк. Задача массива представить такие списки в виде единой структуры, которая позволяет работать с ними как с единым целым, будь то курсы на Хекслете или друзья в вашей любимой социальной сети.

Определение массива

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

int[] intArr = {1, 2, 3};
String[] strArr = {"1", "2", "3"};

В примере выше происходит определение массива {1, 2, 3} и присваивание его переменной intArr, вместо int или String может быть любой нужный нам тип. Массивы в Java фиксированного размера, поэтому если мы хотим создать пустой массив, но не знаем заранее что должно быть внутри, мы можем создать пустой массив нужной длины и затем заполнить его нужными значениями:

int[] arr = new int[3];

Здесь 3 - нужный размер массива, в переменной arr будет зарезервированно место для трех перемменных которые можно будет записать в массив в дальнейшем.

Вы наверное захотите узнать, что же делать если в массив понадобится записать больше переменных, чем было определенно в начале? Об этом вы сможете узнать потом в курсе Списки

Получение данных

Основное свойство массивов заключается в том, что каждый элемент в массиве имеет порядковый номер, называемый индексом и элементы массива можно получать, обращаясь к ним по этому индексу. Важно запомнить, что индексация массива начинается с нуля, то есть первый элемент массива доступен по индексу 0, второй — по индексу 1, и так далее.

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

int[] arr = {1, 2, 3};
arr[0]; // 1
arr[1]; // 2
arr[2]; // 3 

Получить размер массива можно через свойство length:

arr.length; // 3

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

int i = 0;
arr[i]; // 1
i = 2;
arr[i]; // 3 

Так как массивы индексируются с 0, как бы уменьшая реальный индекс на 1, то и индекс последнего элемента также будет равен не длине массива(как если бы в массиве из 3х элементов у третьего элемента был индекс 3), а длине также уменьшенной на 1(в массиве из 3х элементов у третьего элемента будет индекс 2). То есть индекс последнего элемента вычисляется по простой формуле: размер массива - 1. С использованием переменных это будет выглядеть так:

int last = arr.length - 1; // 2
arr[last]; // 3 

Или даже

arr[arr.length - 1]; // 3

Выход за границу

При работе с массивами часто допускается ошибка, называемая «выход за границу массива». Она заключается в том, что из массива извлекается элемент по несуществующему индексу. В разных языках программирования поведение в случае выхода за границу реализовано совершенно по-разному, в джаве это вызовет ошибку, но например в Си подобный выход возвращает случайные данные из соседнего блока памяти, что может привести к катастрофе. В общем случае правильно всегда проверять доступность индекса и никогда не обращаться к массиву за его границами. Это безопасная стратегия, и вам будет проще адаптироваться к новым языкам, используя это универсальное решение.

int[] arr = {1, 2, 3};
arr[3]; // java.lang.ArrayIndexOutOfBoundsException

Изменение элементов массива и прочее

Как уже было замечено раньше массивы имеют фиксированный размер, поэтому уменьшение их размера с целью удаления ненужных элементов не предусмотрено. С изменением же существующих элементов все просто. Синтаксис такой же, как и при обращении к элементу массива с добавлением присвоения нового значения:

int[] arr = new int[3;
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
System.out.println(java.util.Arrays.toString(arr)); // => [1, 2, 3, 4]

Как вы могли заметить для получения текстового представления массивов существует специальный метод Arrays.toString из модуля java.util, этот метод вам часто пригодится при отладке. Без использования же этого метода

System.out.println(arr);

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

import java.util.Arrays;

class Main {
  public static void main(String[] args) {
    int[] arr = new int[3];
    arr[0] = 1;
    arr[1] = 2;
    arr[2] = 3;
    System.out.println(Arrays.toString(arr)); 
  }
}
Мы учим программированию с нуля до стажировки и работы. Попробуйте наш бесплатный курс «Введение в программирование» или полные программы обучения по Node, PHP, Python и Java.

Хекслет

Подробнее о том, почему наше обучение работает →