Sobes.tech
Junior

Java'da metodlarda parametrlar qanday o'tkaziladi?

sobes.tech AI

AIdan javob

Java'da metodlardagi parametrlər qiymət ilə (pass-by-value) o'tkaziladi.

Primitiv turlar:

  • Primitiv qiymatning nusxasi o'tkaziladi. Metod ichida parametrni o'zgartirish tashqaridagi asl o'zgaruvchini ta'sir qilmaydi.
// Primitiv tur uchun misol
public void changeValue(int x) {
    x = x + 10; // Metod ichida x ning nusxasi o'zgartiriladi
}

// Foydalanish:
int original = 5;
changeValue(original);
// original 5 qoladi

Ob'ektlar (referens turlar):

  • Ob'ektga referensning nusxasi o'tkaziladi. Ikkala referens (asl va metoddagi parametr) bir xil ob'ektga ishora qiladi.
  • Referens orqali ob'ekt holatini o'zgartirish (masalan, setter chaqirish, maydonlarni o'zgartirish) original ob'ektga ta'sir qiladi.
  • Parametrni yangi ob'ektga qayta tayinlash metod ichida tashqaridagi referensni o'zgartirmaydi.
// Referens tur uchun misol (ob'ekt)
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); // Asl ob'ekt holatini o'zgartiradi
}

public void reassignObject(MyObject obj) {
    obj = new MyObject(200); // Parametr ob'ekt yangi ob'ektga ishora qilmoqda, asl referens o'zgarmaydi
}

// Foydalanish:
MyObject originalObject = new MyObject(10);
modifyObject(originalObject);
// originalObject ning value = 100 bo'ladi

MyObject anotherObject = new MyObject(50);
reassignObject(anotherObject);
// anotherObject hali ham asl ob'ektga ishora qilmoqda, value = 50

Qisqacha: Referensning qiymati (adres) o'tkaziladi, ob'ekt emas. Bu ob'ektni ushbu referens orqali o'zgartirish imkonini beradi, lekin asl referensni boshqa ob'ektga yo'naltirishni o'zgartirmaydi.