Массивы представляют собой последовательность элементов одного типа, например чисел или строк. Задача массива — представить такие списки в виде единой структуры, которая позволяет работать с ними как с единым целым, будь то курсы на Хекслете или друзья в вашей любимой социальной сети.
Определение массива
Начнем с создания. Для создания массива надо знать тип элементов в массиве и имя новой переменной, которая будет ссылаться на массив:
// Массив - ссылочный тип
int[] numbers = {1, 2, 3};
String[] cars = {"kia", "bmw", "ford"};
// Массив может быть даже пустым
int[] fruits = {};
В примере создаются и сразу инициализируются (наполняются значениями) два массива. Один состоит из чисел, другой из строк. Тип массива задается как тип хранящихся элементов, соединенный с парными скобками, например, так int[]
.
Обратите внимание на именование переменных, содержащих массивы. Они во множественном числе. Это подчеркивает природу переменной и делает код проще для анализа.
Массивы в Java фиксированного размера, поэтому если мы хотим создать пустой массив, но не знаем заранее что должно быть внутри, мы можем создать пустой массив нужной длины и затем заполнить его нужными значениями:
// Это особый синтаксис создания массива, а не объектов по типу
// Обратите внимание на то, что скобки квадратные, а не круглые
int[] numbers = new int[3];
String[] cars = new String[3];
// И так далее для всех остальных типов
Здесь 3 - нужный размер массива, в переменной numbers
будет зарезервировано место для трех переменных которые можно будет записать в массив в дальнейшем.
Вывод на экран
Массивы относятся к ссылочным типам данных. Эту тему мы обсудим позже, но прямо сейчас нужно знать как распечатать на экран такие данные. Обычный способ не работает:
String[] cars = {"kia", "bmw", "ford"};
System.out.println(cars); // => java.lang.String;@27bc2616
Для печати нужно использовать метод Arrays.toString()
, который формирует из массива строку. Затем эту строку можно вывести на экран:
import java.util.Arrays;
String[] cars = {"kia", "bmw", "ford"};
System.out.println(Arrays.toString(cars));
// => ["kia", "bmw", "ford"]
Получение данных
Элементы в массиве упорядочены слева направо. Каждый элемент имеет порядковый номер, называемый индексом. Индексация массива начинается с нуля. То есть первый элемент массива доступен по индексу 0
, второй — по индексу 1
и так далее. Для извлечения элемента из массива по индексу используется свой синтаксис:
String[] animals = {"cats", "dogs", "birds"};
animals[0]; // "cats"
animals[1]; // "dogs"
// Последний индекс в массиве всегда меньше размера массива на единицу
// В этом массиве три элемента, но последний индекс равен двум
animals[2]; // "birds"
Узнать размер массива можно, обратившись к его свойству length
.
String[] animals = {"cats", "dogs", "birds"};
animals.length; // 3
В реальных задачах индекс часто вычисляется динамически, поэтому обращение к конкретному элементу происходит с использованием переменных:
var i = 1;
String[] animals = {"cats", "dogs", "birds"};
animals[i]; // "dogs"
И даже так:
var i = 1;
var j = 1;
String[] animals = {"cats", "dogs", "birds"};
animals[i + j]; // "birds"
Такой вызов возможен по одной простой причине — внутри скобок ожидается выражение. А там, где ожидается выражение, можно подставлять все, что вычисляется. В том числе вызовы метода:
String[] animals = {"cats", "dogs", "birds"};
animals[someMethod()]; // "dogs"
Довольно часто в задачах с использованием массивов нужно взять последний элемент. Для этого вычисляется последний индекс массива по формуле размер_массива - 1, по которому и можно обратиться к последнему элементу:
String[] animals = {"cats", "dogs", "birds"};
animals[animals.length - 1]; // "birds"
Дополнительные материалы
Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты
Для полного доступа к курсу нужен базовый план
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.