Sobes.tech
Junior

Kaip parametrai perduodami Java metodose?

sobes.tech AI

Atsakymas iš AI

Java parametrai metodose perduodami pagal reikšmę (pass-by-value).

Primitives:

  • Perduodama kopija primityvo reikšmės. Keisti parametrą metodo viduje neturi įtakos išoriniam kintamajam.
// Pavyzdys primityvui
public void changeValue(int x) {
    x = x + 10; // Keičiasi metodo viduje kopija x
}

// Naudojimas:
int original = 5;
changeValue(original);
// original lieka 5

Objektai (nuorodų tipai):

  • Perduodama nuorodos kopija. Abi nuorodos (pagrindinė ir metodo parametras) nurodo tą patį objektą atmintyje.
  • Objekto būsenos keitimas (pvz., seterio iškvietimas, laukų modifikavimas) per perduotą nuorodą metodo viduje paveiks pirminį objektą.
  • Parametro pakeitimas į naują objektą metodo viduje nepaveiks pirminės nuorodos.
// Pavyzdys nuorodų tipo (objekto)
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); // Keičiasi objekto būsena
}

public void reassignObject(MyObject obj) {
    obj = new MyObject(200); // Parametras obj dabar nurodo naują objektą, pirminis nuoroda nepasikeičia
}

// Naudojimas:
MyObject originalObject = new MyObject(10);
modifyObject(originalObject);
// originalObject dabar turi value = 100

MyObject anotherObject = new MyObject(50);
reassignObject(anotherObject);
// anotherObject vis dar nurodo pirminį objektą su value = 50

Trumpai: Nuorodos reikšmė (jo adresas) perduodama, ne pats objektas. Tai leidžia modifikuoti objektą per nuorodą, bet ne pakeisti pačią nuorodą į kitą objektą.