Копирование массивов в языке 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, чтобы обратиться к следующему элементу массива.

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

Один комментарий на “Копирование массивов в языке Java

  1. Добрый день! Совершенно случайно (может и не случайно, ведь информацию-то искал по Java) наткнулся на этот сайт. Даже с первого взгляда могу сказать: «Впечатляет!». Не люблю модное словечко «круто!», но это реально хорошо и доходчиво. Вот только не нашёл где бы можно было вопрос задать. Я же пока что не java-программист, даже не заготовка… Только-только начал учить. И вот уже несколько дней пытаюсь понять, как бы передавать значения из одного массива в другие (полностью или выборочно). Вот такую конструкцию сделал:
    import java.util.*;
    public class ScoolMassive {
    public int oneArray[] = new int[15];
    public void createArray(){
    System.out.print(«Исходный массив:\n»);
    for(int i = 0; i < oneArray.length; i++){
    oneArray[i] = (int) (Math.random() * 100 — Math.random() * 10);
    System.out.print(oneArray[i] + " ");
    }
    System.out.print("\n");
    }
    public void minTOmax(){
    System.out.print("Массив, отсортированный от меньшего к большему:\n");
    int[] arr_01;
    arr_01 = oneArray;
    Arrays.sort(arr_01);
    for(int j = 0; j < arr_01.length; j++){
    System.out.print(arr_01[j] + " ");
    }
    System.out.print("\n");
    }
    }
    но во втором случае выдаёт только нули. Чего-то я не пойму в чём заморочка, а посоветоваться не с кем. Нету пока что знакомых программистов. Может подскажете, в каком месте заморочка? Чего тут не так?
    Заранее благодарен, Александр.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *