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.