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
}
}
Тук се вижда, че промяната на състоянието на обекта вътре в метода се запазва, но преназначаването на референцията не влияе на оригиналния обект.