SmartQuery /ВОПРОС → ПРИМЕР → ПОНЯТНЫЙ ОТВЕТ
Языки и платформы

Что возвращает Java-метод с массивом

В Java массив — объект, а переменная типа int[] хранит ссылку на него. Метод с возвращаемым типом int[] возвращает значение такой ссылки, а не автоматически созданную независимую копию элементов.

Создать и вернуть массив

import java.util.Arrays;

public class ArrayExample {
    static int[] getNumbers() {
        return new int[] {1, 2, 3, 4, 5};
    }

    public static void main(String[] args) {
        int[] numbers = getNumbers();
        System.out.println(Arrays.toString(numbers));
    }
}

Вывод: [1, 2, 3, 4, 5]. Каждый вызов getNumbers() в этом примере создаёт новый массив, потому что внутри выполняется new.

Две ссылки на один объект

int[] first = getNumbers();
int[] second = first;
second[0] = 99;
System.out.println(first[0]); // 99

Присваивание second = first копирует ссылку. Изменение элемента видно через обе переменные. При передаче массива другому методу ссылка также передаётся по значению.

Независимая копия

int[] copy = first.clone();
copy[0] = 7;
System.out.println(first[0]); // остаётся 99

Для int[] копируются значения примитивных элементов. Для массива объектов clone() создаёт новый массив, но ссылки на сами объекты остаются общими: это поверхностная копия. Если метод может вернуть null, проверьте это до обращения к length или элементу.

Документация