Sobes.tech
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.