Sobes.tech
Junior — Middle

Как се осъществява предаването на променливи по референция при извикване на методи?

sobes.tech AI

Отговор от AI

В Java, предаването на параметри към методите винаги става по стойност, тоест копира се стойността на променливата. Въпреки това, ако се предаде обект, се копира референцията към обекта, а не самият обект. Това често се нарича "предаване по референция", но всъщност се предава копие на референцията.

Това означава, че вътре в метода може да се промени състоянието на обекта, към който сочи параметърът, но не може да се промени самата референция, за да сочи към друг обект.

Пример:

class MyObject {
    int value;
}

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
    }
}

Тук се вижда, че промяната на състоянието на обекта вътре в метода се запазва, но преназначаването на референцията не влияе на оригиналния обект.