Junior
Cum sunt transmise parametrii în metodele din Java?
sobes.tech AI
Răspuns de la AI
În Java, parametrii din metode sunt transmişi prin valoare (pass-by-value).
Tipuri primitive:
- Se transmite o copie a valorii primitive. Modificarea parametrului în interiorul metodei nu afectează variabila originală din afara acesteia.
// Exemplu pentru tip primitiv
public void changeValue(int x) {
x = x + 10; // Se modifică copia lui x din interiorul metodei
}
// Utilizare:
int original = 5;
changeValue(original);
// original va rămâne 5
Obiecte (tipuri referențiale):
- Se transmite o copie a referinței către obiect. Ambele referințe (cea originală și cea din parametru) indică același obiect în memorie.
- Modificarea stării obiectului (de exemplu, apelarea unui setter, modificarea câmpurilor) prin referința transmisă în metodă va afecta obiectul original.
- Reasignarea parametrului la un nou obiect în interiorul metodei nu va schimba referința originală din afara acesteia.
// Exemplu pentru tip referențial (obiect)
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); // Se modifică starea obiectului original
}
public void reassignObject(MyObject obj) {
obj = new MyObject(200); // Parametrul obj acum indică către un nou obiect, referința originală nu se schimbă
}
// Utilizare:
MyObject originalObject = new MyObject(10);
modifyObject(originalObject);
// originalObject are acum value = 100
MyObject anotherObject = new MyObject(50);
reassignObject(anotherObject);
// anotherObject încă indică către obiectul original cu value = 50
Pe scurt: Se transmite valoarea referinței (adresa), nu obiectul în sine. Acest lucru permite modificarea obiectului prin această referință, dar nu schimbarea referinței originale pentru a indica către alt obiect.