Как объявить и инициализировать массив в Java

Научитесь объявлять и инициализировать массивы, используя различные методы и их различия. Помимо прямого доступа к массивам, мы также будем использовать java.util.Arrays и Stream API, которые предоставляют несколько полезных методов для работы с массивами в Java.

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

Также стоит напомнить, что индексы массива всегда начинаются с 0. Первый элемент массива имеет индекс 0. Если размер массива равен n, то последний элемент массива будет иметь индекс n-1.

1. Инициализация массива во время объявления

Объявление и инициализация массива в одном операторе( инициализатор массива ) является хорошей идеей, если:

  • Мы заранее знаем набор предметов
  • Размер массива небольшой
String status[] = new String[] {"Active", "Inactive", "Purged" };

Обратите внимание, что информация о типе является необязательной при инициализации массива во время объявления.

String status[] = { "Active", "Inactive", "Purged" };

Информация о типе является обязательной, если мы пытаемся инициализировать массив после его объявления, в противном случае мы получим ошибку компиляции «Константы массива могут использоваться только в инициализаторах».

 Статус строки[] = новая строка[3];// Это не компиляция//status = {"Активно", "Неактивно", "Очищено" };

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

Этот подход полезен при заполнении массива по одному. Самый простой способ — пройтись по индексам массива и поместить нужный элемент в указанное место индекса.

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

3. API Arrays.fill()

Метод fill() принимает значение и присваивает указанное значение каждому элементу указанного массива. В данном примере мы заполняем все элементы массива значением 1.

int numbers[] = new int[10];Arrays.fill(numbers, 1); //[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]

Обратите внимание, что fill() — это перегруженный метод, который может принимать начальный и конечный индексы, до которых должен быть заполнен массив. В данном примере мы заполняем массив с позиций индекса 2 по 9.

int numbers[] = new int[10];Arrays.fill(numbers, 2, 9, 1); //[0, 0, 1, 1, 1, 1, 1, 1, 1, 0]

4. API Arrays.setAll()

Функция setAll() устанавливает все элементы массива, используя предоставленную функцию-генератор для вычисления каждого элемента.

int[] squares = new int[6];Arrays.setAll(squares, p -> p * p); //[0, 1, 4, 9, 16, 25]

Обратите внимание, что любое исключение, выдаваемое функцией генератора, передается вызывающей стороне, а массив остается в неопределенном состоянии.

5. Использование потоков

API потоков Java предоставляет множество встроенных классов, которые могут генерировать потоки и поддерживать последовательные и параллельные агрегатные операции над этими потоками. IntStream, LongStream и DoubleStream являются примерами таких потоков.

int[] intArray = IntStream.range(1, 11).toArray();int[] intArray = IntStream.rangeClosed(1, 10).toArray();int[] intArray = IntStream.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10).toArray();

6. Arrays.copyOf() и Arrays.copyOfRange()

Метод copyOf() очень полезен, если нам нужен новый массив, содержащий элементы из существующего массива. Размер нового массива может быть меньше или больше существующего массива.

После копирования элементов из старого массива новый массив усекается или дополняется нулями для получения необходимой длины.

int array[] = {0, 1, 2, 3, 4, 5};int[] smallCopy = Arrays.copyOf(array, 3); //[0, 1, 2]int[] largeCopy = Arrays.copyOf(array, 10); //[0, 1, 2, 3, 4, 5, 0, 0, 0, 0]

Аналогично метод copyOfRange() можно использовать для копирования диапазона элементов старого массива в новый массив.

int array[] = {0, 1, 2, 3, 4, 5};int[] smallCopyRange = Arrays.copyOfRange(array, 1, 3); // [1, 2]int[] largeCopyRange = Arrays.copyOfRange(array, 2, 10); // [2, 3, 4, 5, 0, 0, 0, 0]

7. Заключение

В этом коротком руководстве по Java мы изучили различные способы объявления и инициализации массива в Java. Изучите другие темы в руководстве по массивам в Java.

Исходный код на Github

Прокрутить вверх