Junior — Middle
Peut-on en Java obtenir une référence à un tableau modifié à l'intérieur d'une méthode depuis le code appelant?
sobes.tech IA
Réponse de l'IA
В 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
}
Таким образом, получить ссылку на новый массив, созданный внутри метода, из вызывающего кода напрямую нельзя, но можно изменить содержимое переданного массива.