Junior — Middle
Kaip vyksta kintamųjų perdavimas nuoroda jų kvietimo metu?
sobes.tech AI
Atsakymas iš AI
Java, parametrų perdavimas į metodus visada vyksta pagal reikšmę, tai yra, kopijuojama kintamojo reikšmė. Tačiau, jei perduodamas objektas, kopijuojama nuoroda į objektą, o ne pats objektas. Tai dažnai vadinama "nuorodos perdavimu", tačiau iš tikrųjų perduodama nuorodos kopija.
Tai reiškia, kad metodo viduje galima pakeisti objekto būseną, į kurį nurodo parametrą, tačiau negalima pakeisti pačios nuorodos, kad ji rodytų į kitą objektą.
Pavyzdys:
class MyObject {
int value;
}
public class Example {
public static void modifyObject(MyObject obj) {
obj.value = 10; // keičiame objekto būseną
obj = new MyObject(); // keičiame vietinę nuorodos kopiją
obj.value = 20; // ši pakeitimas nepaveiks objekto už metodo ribų
}
public static void main(String[] args) {
MyObject myObj = new MyObject();
myObj.value = 5;
modifyObject(myObj);
System.out.println(myObj.value); // išves 10
}
}
Čia matyti, kad objekto būsenos keitimas metodo viduje išlieka, tačiau nuorodos perrašymas neturi įtakos originaliam objektui.