Sobes.tech
Junior — Middle

Metodlarni chaqirishda o'zgaruvchilarni referens orqali o'tkazish qanday amalga oshiriladi?

sobes.tech AI

AIdan javob

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 чиқади
    }
}

Бу ерда, методда объект ҳолатини ўзгартириш сақланади, аммо ҳаволани қайта тайинлаш таъсир қилмайди.