Junior — Middle
W jaki sposób odbywa się przekazywanie zmiennych przez referencję podczas wywoływania metod?
sobes.tech AI
Odpowiedź od AI
W Javie przekazywanie parametrów do metod zawsze odbywa się przez wartość, czyli kopiuje się wartość zmiennej. Jednak, jeśli przekazywany jest obiekt, kopiowana jest referencja do obiektu, a nie sam obiekt. Często nazywa się to "przekazem przez referencję", ale w rzeczywistości przekazywana jest kopia referencji.
Oznacza to, że wewnątrz metody można zmienić stan obiektu, na który wskazuje parametr, ale nie można zmienić samej referencji, aby wskazywała na inny obiekt.
Przykład:
class MyObject {
int value;
}
public class Example {
public static void modifyObject(MyObject obj) {
obj.value = 10; // zmieniamy stan obiektu
obj = new MyObject(); // zmieniamy lokalną kopię referencji
obj.value = 20; // ta zmiana nie wpłynie na obiekt poza metodą
}
public static void main(String[] args) {
MyObject myObj = new MyObject();
myObj.value = 5;
modifyObject(myObj);
System.out.println(myObj.value); // wyświetli 10
}
}
Widać, że zmiana stanu obiektu wewnątrz metody jest zachowana, ale przypisanie referencji do innego obiektu nie wpływa na oryginalny obiekt.