Junior
Чӣ гуна параметрҳо дар методҳо дар Java гузаронида мешаванд?
sobes.tech AI
Ҷавоб аз AI
Дар Java параметрҳо дар методҳо бо арзиш (pass-by-value) гузаронида мешаванд.
Типҳои ибтидоӣ:
- Нусхаи арзиши ибтидоӣ гузаронида мешавад. Тағйир додани параметр дар дохили метод ба тағйир додани тағйирёбандаи аслӣ дар берун таъсир намерасонад.
// Мисол барои типи ибтидоӣ
public void changeValue(int x) {
x = x + 10; // Нусхаи x дар дохили метод тағйир меёбад
}
// Истифода:
int original = 5;
changeValue(original);
// original боқӣ мемонад 5
Объектҳо (типы истинодӣ):
- Нусхаи истинод ба объект гузаронида мешавад. Ҳар ду истинод (оригиналӣ ва он дар параметр) ба як объект дар хотира ишора мекунанд.
- Тағйир додани ҳолати объект (масалан, даъвати setter, тағйир додани майдонҳо) тавассути истинод дар дохили метод ба объекти аслӣ таъсир мерасонад.
- Тағйир додани параметр ба объекти нав дар дохили метод ба истинодҳои аслӣ дар берун таъсир намерасонад.
// Мисол барои типи истинодӣ (объект)
public class MyObject {
private int value;
public MyObject(int value) {
this.value = value;
}
public void setValue(int value) {
this.value = value;
}
public int getValue() {
return value;
}
}
public void modifyObject(MyObject obj) {
obj.setValue(100); // Ҳолати объектро тағйир медиҳад
}
public void reassignObject(MyObject obj) {
obj = new MyObject(200); // Параметр ҳоло ба объекти нав ишора мекунад, истиноди аслӣ тағир намеёбад
}
// Истифода:
MyObject originalObject = new MyObject(10);
modifyObject(originalObject);
// originalObject ҳоло дорои value = 100
MyObject anotherObject = new MyObject(50);
reassignObject(anotherObject);
// anotherObject ҳоло ба объекти аслӣ бо value = 50 ишора мекунад
Хулоса: Арзиши истинод (суроға) гузаронида мешавад, на худи объект. Ин имкон медиҳад, ки объект тавассути ин истинод тағйир дода шавад, аммо истиноди аслӣ ба объекти дигар тағйир наёбад.