Sobes.tech
Back to questions
Junior — Middle
92

Объясните, что происходит при передаче переменной по ссылке в функции или методе.

Companies where asked
IT OneIT One

Answer from AI

sobes.tech AI

В Java передача параметров в методы всегда происходит по значению. Это значит, что при передаче переменной в метод копируется значение переменной.

Для примитивных типов (int, boolean и т.д.) копируется само значение.

Для объектов копируется значение ссылки на объект, то есть копируется указатель на объект, а не сам объект. Поэтому внутри метода можно изменить состояние объекта, на который ссылается параметр, но нельзя изменить саму ссылку, чтобы она указывала на другой объект вне метода.

Пример:

public class Example {
    public static void modifyObject(MyObject obj) {
        obj.value = 10; // изменит поле объекта
        obj = new MyObject(); // изменение ссылки локально, не повлияет на внешний объект
        obj.value = 20;
    }

    public static void main(String[] args) {
        MyObject myObj = new MyObject();
        myObj.value = 5;
        modifyObject(myObj);
        System.out.println(myObj.value); // выведет 10
    }
}

class MyObject {
    int value;
}

Таким образом, в Java нет передачи по ссылке в классическом смысле, а есть передача по значению, где для объектов передается копия ссылки.