Sobes.tech
Junior — Middle

Kuidas toimub muutujate edastamine viitega meetodite kutsumisel?

sobes.tech AI

Vastus AI-lt

Java-s toimub parameetrite edastamine meetoditesse alati väärtuse järgi, see tähendab, et muutuja väärtus kopeeritakse. Kuid kui edastatakse objekt, kopeeritakse viide objekti, mitte ise objekt. Seda nimetatakse sageli "viitena edastamiseks", kuid tegelikult edastatakse viite koopiat.

See tähendab, et meetodi sees saab muuta objekti olekut, millele viitab parameeter, kuid ei saa muuta viidet ennast, et see viitaks teisele objekti.

Näide:

class MyObject {
    int value;
}

public class Example {
    public static void modifyObject(MyObject obj) {
        obj.value = 10; // objekti oleku muutmine
        obj = new MyObject(); // lokaalse viite koopiamuutmine
        obj.value = 20; // see muutus ei mõjuta väljastpoolt meetodit objekti
    }

    public static void main(String[] args) {
        MyObject myObj = new MyObject();
        myObj.value = 5;
        modifyObject(myObj);
        System.out.println(myObj.value); // väljastab 10
    }
}

Siin näeme, et objekti oleku muutus meetodi sees jääb, kuid viite ümbermääramine ei mõjuta algset objekti.