Рубрики
Без рубрики

Инициализация массивов в Java

Откройте для себя различные способы инициализации массивов в Java.

Автор оригинала: baeldung.

1. Обзор

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

Дальнейшее чтение:

Массивы в Java: Справочное руководство

Операции с массивами в Java

Инициализация списка Java в одной строке

2. По одному элементу за раз

Давайте начнем с простого метода, основанного на цикле:

for (int i = 0; i < array.length; i++) {
    array[i] = i + 2;
}

И давайте также посмотрим, как мы можем инициализировать многомерный массив по одному элементу за раз:

for (int i = 0; i < 2; i++) {
    for (int j = 0; j < 5; j++) {
        array[i][j] = j + 1;
    }
}

3. Во время декларирования

Давайте теперь инициализируем массив во время объявления:

String array[] = new String[] { 
  "Toyota", "Mercedes", "BMW", "Volkswagen", "Skoda" };

При создании экземпляра массива нам не нужно указывать его тип:

int array[] = { 1, 2, 3, 4, 5 };

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

4. Использование массивов.заполните()

Файл java.util.Класс Arrays имеет несколько методов с именем fill () , которые принимают различные типы аргументов и заполняют весь массив одним и тем же значением:

long array[] = new long[5];
Arrays.fill(array, 30);

Метод также имеет несколько альтернатив, которые устанавливают диапазон массива на определенное значение:

int array[] = new int[5];
Arrays.fill(array, 0, 3, -50);

Обратите внимание, что метод принимает массив, индекс первого элемента, количество элементов и значение.

5. Использование массивов.copyOf()

Метод Arrays.copyOf() создает новый массив путем копирования другого массива. Метод имеет множество перегрузок, которые принимают различные типы аргументов.

Давайте рассмотрим краткий пример:

int array[] = { 1, 2, 3, 4, 5 };
int[] copy = Arrays.copyOf(array, 5);

Несколько заметок здесь:

  • Метод принимает исходный массив и длину создаваемой копии
  • Если длина больше длины копируемого массива, то дополнительные элементы будут инициализированы с использованием их значений по умолчанию
  • Если исходный массив не был инициализирован, то возникает исключение NullPointerException
  • Если длина исходного массива отрицательна, то возникает исключение NegativeArraySizeException

6. Использование массивов.setAll()

Метод Arrays.setAll() устанавливает все элементы массива с помощью функции генератора:

int[] array = new int[20];
Arrays.setAll(array, p -> p > 9 ? 0 : p);

// [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

Если функция генератора равна нулю, то возникает исключение NullPointerException .

7. Использование ArrayUtils.clone()

Наконец, давайте используем ArrayUtils.clone() API из Apache Commons Lang 3, который инициализирует массив, создавая прямую копию другого массива:

char[] array = new char[] {'a', 'b', 'c'};
char[] copy = ArrayUtils.clone(array);

Обратите внимание, что этот метод перегружен для всех примитивных типов.

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

В этой статье мы рассмотрели различные способы инициализации массивов в Java.

Как всегда, полная версия кода доступна на GitHub .