Przekazywanie argumentów w metodzie.

0

Witam. Mam pewne pytanie. Jak wiadomo w Javie parametry metod przekazywane są przez wartość i np. jeśli przekazujemy typ prosty np int do metody to operujemy na jego kopii i metoda:

int x;

metoda(int a) {
   a++;
}

metoda(x);

nie zmieni zmiennej x. Jednak gdybyśmy przekazywali do metody typ obiektowy, to w zmiennej przechowywany jest jej adres i wtedy operujemy na kopii adresu co w konsekwencji prowadzi do zmiany przekazywanego obiektu.

Tutaj moje pytanie. Czemu jeśli przekazujemy typy obiektowe jak np. Integer to wartość przekazywana nie jest modyfikowana?
Czy zmienna typu Integer nie przechowuje tak jak inne definiowane przez nas typy obiektowe adresu? Czemu takie typy jak Integer, Double itp traktowane są jak prymitywne?

1

Taki efekt wynika z tego że typu kopertowe są immutable, tzn nie możesz zmienić ich wartości. Jeśli dodasz do swojego Integera coś to staje się on nowym Integerem z tamtą wartością ;]

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