Back to questions
Junior — Middle
74
Можно ли в Java получить ссылку на массив, который был изменен внутри метода, из вызывающего кода?
Answer from AI
sobes.tech AI
В Java параметры передаются по значению, но для объектов (включая массивы) передается копия ссылки на объект. Это значит, что если внутри метода изменить содержимое массива, то эти изменения будут видны в вызывающем коде, так как оба ссылаются на один и тот же объект.
Однако, если внутри метода присвоить параметру новый массив (например, arr = new int[]{...}), то эта новая ссылка не повлияет на ссылку в вызывающем код.
Пример:
public void modifyArray(int[] arr) {
arr[0] = 10; // изменение содержимого массива
arr = new int[]{1, 2, 3}; // присвоение новой ссылки - не повлияет на внешний массив
}
public static void main(String[] args) {
int[] myArray = {0, 0, 0};
modifyArray(myArray);
System.out.println(myArray[0]); // выведет 10
}
Таким образом, получить ссылку на новый массив, созданный внутри метода, из вызывающего кода напрямую нельзя, но можно изменить содержимое переданного массива.