Sobes.tech
Junior

Kako se parametri prenose u metodama u Javi?

sobes.tech АИ

Одговор од АИ

U Javi, parametri u metodama se prenose po vrednosti (pass-by-value).

Primitivni tipovi:

  • Prenosi se kopija vrednosti primitivnog tipa. Izmena parametra unutar metode ne utiče na originalnu promenljivu izvan nje.
// Primer za primitivni tip
public void changeValue(int x) {
    x = x + 10; // Kopija x unutar metode se menja
}

// Upotreba:
int original = 5;
changeValue(original);
// original će ostati 5

Objekti (referentni tipovi):

  • Prenosi se kopija reference na objekat. Obje reference (originalna i ona u parametru) ukazuju na isti objekat u memoriji.
  • Promena stanja objekta (npr. poziv settera, modifikacija polja) putem prosleđene reference unutar metode će uticati na originalni objekat.
  • Prepisivanje parametra na novi objekat unutar metode neće promeniti originalnu referencu izvan nje.
// Primer za referentni tip (objekat)
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); // Menja stanje originalnog objekta
}

public void reassignObject(MyObject obj) {
    obj = new MyObject(200); // Parametar sada ukazuje na novi objekat, originalna referenca se ne menja
}

// Upotreba:
MyObject originalObject = new MyObject(10);
modifyObject(originalObject);
// originalObject sada ima value = 100

MyObject anotherObject = new MyObject(50);
reassignObject(anotherObject);
// anotherObject i dalje ukazuje na originalni objekat sa value = 50

Ukratko: Prenosi se vrednost reference (adresa), a ne sam objekat. To omogućava modifikaciju objekta putem te reference, ali ne i promenu originalne reference da ukazuje na drugi objekat.