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.