Ответ
Массив в Java — это объект, который представляет собой контейнер фиксированной длины для хранения упорядоченной последовательности элементов одного типа.
Ключевые характеристики:
- Фиксированный размер: Длина массива (
length) задаётся при создании и не может быть изменена. - Индексация: Доступ к элементам осуществляется по целочисленному индексу, начиная с
0. Попытка доступа к индексу за пределами[0, length-1]вызываетArrayIndexOutOfBoundsException. - Однородность: Все элементы массива должны быть одного типа (примитивного или ссылочного).
- Память: Элементы располагаются в памяти последовательно, что обеспечивает быстрый доступ по индексу (O(1)).
Способы создания и инициализации:
// 1. Объявление и создание с последующим заполнением
int[] numbers = new int[5]; // Массив из 5 нулей (для примитивов - значения по умолчанию)
numbers[0] = 10;
numbers[1] = 20;
// 2. Объявление с одновременной инициализацией
int[] primes = {2, 3, 5, 7, 11};
String[] words = {"Hello", "World"};
// 3. Многомерные массивы (массивы массивов)
int[][] matrix = new int[2][3]; // 2 строки, 3 столбца
int[][] identity = {{1, 0}, {0, 1}}; // Инициализация
Важные особенности и методы:
- Свойство
length(не метод):int size = numbers.length; - Массивы — это объекты, наследуются от
Object. Однако они не переопределяютtoString(),equals()иhashCode(), что часто приводит к неочевидному поведению.int[] a = {1, 2}; int[] b = {1, 2}; System.out.println(a.equals(b)); // false! Сравниваются ссылки, а не содержимое. System.out.println(Arrays.equals(a, b)); // true - для сравнения содержимого используйте java.util.Arrays - Копирование массивов:
int[] source = {1, 2, 3}; int[] shallowCopy = source.clone(); // или Arrays.copyOf(source, source.length)
Когда использовать:
- Когда размер коллекции известен заранее и не меняется.
- Когда критически важна производительность при доступе по индексу.
- Для работы с низкоуровневыми API, которые требуют массивов.
Альтернатива: Для динамических коллекций используйте ArrayList, LinkedList из Java Collections Framework.