Modyfikacja parametru podstawowego.

Modyfikacja parametru podstawowego.
RA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 13
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.

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

System.out.println(metoda(3));  // wynik 5
  • Rejestracja: dni
  • Ostatnio: dni
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.

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
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:

Kopiuj
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:

Kopiuj
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!
RA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 13
0

OK dzięki Panowie już rozumiem.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.