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 мебарояд
}
}
Ин ҷо мебинем, ки тағйироти ҳолати объект дар дохили усул нигоҳ дошта мешавад, аммо тағйир додани ишора таъсир намерасонад ба объекти аслӣ.