Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Справочник Java

System.arraycopy()

Копирует часть одного массива в другой (или в тот же) массив.

Доступно с: Java 1.0

Синтаксис

public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)

Параметры

ПараметрТипОписание
srcObjectМассив-источник.
srcPosintИндекс, с которого начинается копирование в источнике.
destObjectМассив-приёмник.
destPosintИндекс, куда кладётся первый скопированный элемент.
lengthintСколько элементов скопировать.

Примеры

Копирование трёх элементов из середины массива:

void main() {
    int[] source = {10, 20, 30, 40, 50};
    int[] target = new int[5];
 
    System.arraycopy(source, 1, target, 0, 3);
    IO.println(Arrays.toString(target));
}

Результат:

[20, 30, 40, 0, 0]

Сдвиг внутри одного массива, чтобы освободить место для вставки:

void main() {
    int[] data = {1, 2, 4, 5, 0};
 
    System.arraycopy(data, 2, data, 3, 2);
    data[2] = 3;
    IO.println(Arrays.toString(data));
}

Результат:

[1, 2, 3, 4, 5]

Выход за границы массива:

void main() {
    int[] small = {1, 2, 3};
    System.arraycopy(small, 1, new int[10], 0, 5);
}

Результат:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: arraycopy: last source index 6 out of bounds for int[3]

Примечания

Метод ничего не создаёт: приёмник должен существовать и иметь достаточный размер. Перекрывающиеся области одного массива копируются правильно. Если нужен новый массив, проще Arrays.copyOf() или Arrays.copyOfRange() — они сами создают массив нужной длины. Типы элементов должны совпадать, иначе будет ArrayStoreException.

См. также

  • Arrays.copyOf() — Копирует массив в новый — той же или другой длины. Часть массива копирует copyOfRange().
  • Arrays.fill() — Заполняет весь массив или его часть одним значением.
  • array.length — Длина массива — количество элементов. Поле, а не метод: пишется без скобок.

В учебнике

  • Класс Arrays — Утилиты класса java.util.Arrays: toString, sort, fill, copyOf, copyOfRange, equals и binarySearch.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.