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.