Что возвращает 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 или элементу.