Массив – структура данных для хранения набора элементов одного типа с фиксированным размером.
Индексы элементов начинаются с 0. Доступ к элементам осуществляется напрямую по индексу (быстрый доступ за O(1)).
В Java каждый массив – это объект со свойством length (количество элементов).
Массивы обладают однородностью (все элементы одного типа) и размещаются в непрерывной области памяти.
Поддерживаются многомерные массивы – фактически массивы массивов. Возможны “зубчатые” массивы, где вложенные массивы могут иметь разную длину (необязательно прямоугольная структура).
Пояснение:
Массив в Java представляет собой контейнер, способный хранить определенное число значений одного заданного типа. Размер массива задается при создании и в дальнейшем не может быть изменен – это ключевое отличие массивов от коллекций. Например, если нужно хранить 10 целых чисел, можно создать массив на 10 элементов типа int. Доступ к любому элементу осуществляется по индексу, начиная с 0 (первый элемент имеет индекс 0, последний – length-1). Такой прямой индексный доступ очень быстрый, так как элементы расположены подряд в памяти.
Важно помнить, что массив в Java – это реальный объект. У него есть поле length, хранящее количество элементов. Например, myArray.length возвращает размер массива. При выходе за пределы индексов будет сгенерировано исключение ArrayIndexOutOfBoundsException. Тип элементов массива может быть примитивным (int, char, и т.д.) или ссылочным (любые объекты). Все элементы в одном массиве обязательно одного типа (однородность данных).
Создать массив можно несколькими способами. Чаще всего используют литералы инициализации или оператор new. Например:
int[] numbers = { 10, 20, 30, 40, 50 }; // литерал массива с 5 элементами
System.out.println("Длина: " + numbers.length); // выводит 5
System.out.println("Первый элемент: " + numbers[0]); // выводит 10
numbers[0] = 5; // изменение значения первого элемента
System.out.println("Новый первый элемент: " + numbers[0]); // выводит 5
// перебор массива с помощью цикла for-each:for (int num : numbers) {
System.out.println(num);
}
Массивы могут быть многомерными. На практике многомерный массив в Java – это массив массивов. Например, двумерный массив int[][] matrix = new int[3][4]; можно представить как таблицу 3x4. При этом Java позволяет создавать зубчатые массивы (jagged arrays), где каждая строка может иметь свою длину:
int[][] jagged = {
{ 1, 2, 3 },
{ 4, 5 },
{ 6, 7, 8, 9 }
};
System.out.println(jagged[0].length); // длина первой вложенной последовательности (3)
System.out.println(jagged[1].length); // длина второй последовательности (2)
System.out.println(jagged[2][3]); // обращение к элементу '9' (четвертый элемент третьей последовательности)
В примере выше jagged – это “зубчатый” двумерный массив: во вложенных массивах разное количество элементов. Такое возможно, потому что каждая “строка” фактически является отдельным массивом.
Современная практика: В современном Java-коде массивы по-прежнему используются для хранения фиксированных наборов элементов, особенно примитивных типов, и для взаимодействия с низкоуровневыми API. Однако для динамических наборов данных обычно предпочитают коллекции из Java Collections Framework, которые могут менять размер. Ниже мы подробно рассмотрим коллекции – более гибкий механизм работы с группами объектов.
