Копирование массивов в языке Java

Копирование массивов в языке JavaПри необходимости одну переменную массива можно скопировать в другую, но в этому случае обе переменные будут ссылаться на один и тот же массив.

Результат копирования переменных массивов показан на рис.1.

Копирование массивов в языке Java

Рис.1. Копирование переменной массива

Если необходимо скопировать все элементы одного массива в другой, следует использовать метод copyTo() из класса Arrays. Его вызов выглядит следующим образом:

Вторым параметром является длина нового массива. Обычно этот метод применяется для увеличения размера массива:

Дополнительные элементы заполняются нулями, если массив содержит числа, и false — если значения типа boolean. В противоположность этому, если длина нового массива меньше длины исходного, то копируются только начальные элементы.

До появления Java SE 6 для копирования элементов массива использовался метод arrayCopy класса System. Синтаксис этого вызова выглядит следующим образом:

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

Ниже приведен фрагмент кода, результаты которого показаны на рис.2. Вначале создаются два массива, а затем последние четыре элемента первого массива копируются во второй. Копирование исходного массива начинается с элемента с номером 2, а в целевой массив копируемые данные помещаются, начиная с элемента с номером 3.

Выполнение данного фрагмента приводит к следующему результату:

Копирование массивов в языке JavaРис.2. Копирование элементов массива.

Массив в языке Java значительно отличается от массива в C++, располагающегося в стеке. Однако переменную массива можно условно сравнить с указателем на динамически созданный массив. Таким образом, выражение Java:

можно сравнить с выражением C++

но оно существенно отличается от следующего:

В языке Java операция [] по умолчанию проверяет диапазон изменения индексов. Кроме того, в языке Java не поддерживается арифметика указателей — нельзя увеличить указатель a, чтобы обратиться к следующему элементу массива.

Видео на сегодня: