Sobes.tech
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.