Sobes.tech
Junior

Jak se parametry předávají v metodách v Javě?

sobes.tech AI

Odpověď od AI

V jazyce Java jsou parametry v metodách předávány hodnotou (pass-by-value).

Primitivní typy:

  • Předává se kopie hodnoty primitivního typu. Změna parametru uvnitř metody neovlivní původní proměnnou mimo ni.
// Příklad pro primitivní typ
public void changeValue(int x) {
    x = x + 10; // Kopie x uvnitř metody se změní
}

// Použití:
int original = 5;
changeValue(original);
// original zůstane 5

Objekty (referenční typy):

  • Předává se kopie reference na objekt. Obě reference (původní a ta v parametru) ukazují na stejný objekt v paměti.
  • Změna stavu objektu (například volání setteru, modifikace polí) přes předanou referenci uvnitř metody se projeví na původním objektu.
  • Přepsání parametru na nový objekt uvnitř metody nezmění původní referenci mimo ni.
// Příklad pro 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); // Změní stav původního objektu
}

public void reassignObject(MyObject obj) {
    obj = new MyObject(200); // Parametr nyní ukazuje na nový objekt, původní odkaz se nemění
}

// Použití:
MyObject originalObject = new MyObject(10);
modifyObject(originalObject);
// originalObject má nyní value = 100

MyObject anotherObject = new MyObject(50);
reassignObject(anotherObject);
// anotherObject stále ukazuje na původní objekt s value = 50

Stručně: Předává se hodnota reference (její adresa), nikoli samotný objekt. To umožňuje modifikaci objektu přes tuto referenci, ale nezmění původní odkaz na jiný objekt.