Modyfikacja parametru podstawowego.

0

Witam
W mądrych książkach wyczytałem że "Metoda nie może modyfikować parametru typu podstawowego" lub "nie można napisać metody aktualizującej parametry które są typami prostymi".
To dlaczego taka prosta metoda działa, jeśli widzimy tutaj że parametr n jest bezsprzecznie aktualizowany.

    public static int metoda (int n){
        n+=2;
        return n;
    }

System.out.println(metoda(3));  // wynik 5
1

Poczytaj jeszcze o referencjach i jak działają.

Typy proste są kopiowane do metod, a obiekty przekazywana jest wtedy referencja.

To co napisałem NIE MA sensu, bo i tak zwracasz ten obiekt do println, wiec zawsze wyświetli Ci to co dasz w return.

1

A co ma twój przykład do podanego zdania? Prymitywy lecą do funkcji jako kopia, więc ich zmiana nie jest widoczna poza funkcją. Ty sobie ZWRÓCIŁEŚ kopię nowej wartości i ją wypisałeś. Jedno z drugim nie ma nic wspólnego. Zdanie jest na temat sytuacji:

public static void metoda (int n){
    n= n+2;
}
//
int n = 1;
metoda(n);
// tutaj n nadal ma wartość 1 bo w funkcji zmieniła się tylko lokalna kopia!

Obiekty za to przekazywane są w inny sposób, bo poprzez referencje i to referencja jest kopiowana, wię cały czas pracujesz z tym samym obiektem pod spodem. Przykład:

public static void metoda (List<Integer> takaTamLista){
    takaTamLista.add(1);
}
//
List<Integer> lista = new ArrayList<>();
metoda(lista);
// tutaj lista ma juz 1 element bo funkcja zmieniła oryginalny obiekt!
0

OK dzięki Panowie już rozumiem.

1 użytkowników online, w tym zalogowanych: 0, gości: 1