Sobes.tech
Junior

Чӣ гуна параметрҳо дар методҳо дар Java гузаронида мешаванд?

sobes.tech AI

Ҷавоб аз AI

Дар Java параметрҳо дар методҳо бо арзиш (pass-by-value) гузаронида мешаванд.

Типҳои ибтидоӣ:

  • Нусхаи арзиши ибтидоӣ гузаронида мешавад. Тағйир додани параметр дар дохили метод ба тағйир додани тағйирёбандаи аслӣ дар берун таъсир намерасонад.
// Мисол барои типи ибтидоӣ
public void changeValue(int x) {
    x = x + 10; // Нусхаи x дар дохили метод тағйир меёбад
}

// Истифода:
int original = 5;
changeValue(original);
// original боқӣ мемонад 5

Объектҳо (типы истинодӣ):

  • Нусхаи истинод ба объект гузаронида мешавад. Ҳар ду истинод (оригиналӣ ва он дар параметр) ба як объект дар хотира ишора мекунанд.
  • Тағйир додани ҳолати объект (масалан, даъвати setter, тағйир додани майдонҳо) тавассути истинод дар дохили метод ба объекти аслӣ таъсир мерасонад.
  • Тағйир додани параметр ба объекти нав дар дохили метод ба истинодҳои аслӣ дар берун таъсир намерасонад.
// Мисол барои типи истинодӣ (объект)
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); // Ҳолати объектро тағйир медиҳад
}

public void reassignObject(MyObject obj) {
    obj = new MyObject(200); // Параметр ҳоло ба объекти нав ишора мекунад, истиноди аслӣ тағир намеёбад
}

// Истифода:
MyObject originalObject = new MyObject(10);
modifyObject(originalObject);
// originalObject ҳоло дорои value = 100

MyObject anotherObject = new MyObject(50);
reassignObject(anotherObject);
// anotherObject ҳоло ба объекти аслӣ бо value = 50 ишора мекунад

Хулоса: Арзиши истинод (суроға) гузаронида мешавад, на худи объект. Ин имкон медиҳад, ки объект тавассути ин истинод тағйир дода шавад, аммо истиноди аслӣ ба объекти дигар тағйир наёбад.