Sobes.tech
Junior

Ako sa parametre odovzdávajú v metódach v Jave?

sobes.tech AI

Odpoveď od AI

V Jave sa parametre v metódach prechádzajú hodnotou (pass-by-value).

Primitívne typy:

  • Prevodí sa kópia hodnoty primitivného typu. Zmena parametra vo vnútri metódy neovplyvní pôvodnú premennú mimo nej.
// Príklad pre primitívny typ
public void changeValue(int x) {
    x = x + 10; // Kópia x vo vnútri metódy sa zmení
}

// Použitie:
int original = 5;
changeValue(original);
// original zostane 5

Objekty (referenčné typy):

  • Prevodí sa kópia referencie na objekt. Obe referencie (pôvodná a tá v parametri) ukazujú na ten istý objekt v pamäti.
  • Zmena stavu objektu (napríklad volanie settera, modifikácia polí) cez odovzdanú referenciu vo vnútri metódy ovplyvní pôvodný objekt.
  • Prepis parametra na nový objekt vo vnútri metódy nezmení pôvodnú referenciu mimo nej.
// Príklad pre referenčný typ (objekt)
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); // Môže zmeniť stav pôvodného objektu
}

public void reassignObject(MyObject obj) {
    obj = new MyObject(200); // Parametr teraz ukazuje na nový objekt, pôvodná referencia sa nemení
}

// Použitie:
MyObject originalObject = new MyObject(10);
modifyObject(originalObject);
// originalObject má hodnotu 100

MyObject anotherObject = new MyObject(50);
reassignObject(anotherObject);
// anotherObject stále ukazuje na pôvodný objekt s hodnotou 50

Stručne: Hodnota referencie (adresa) sa odovzdáva, nie samotný objekt. To umožňuje modifikáciu objektu cez túto referenciu, ale nezmení pôvodnú referenciu na iný objekt.