Страницы

Поиск по вопросам

понедельник, 8 июля 2019 г.

Вопрос про ссылочный тип

class test{ public static void main(String args[]){ Integer b,a;
a = 4;
b = a;
a = 334;
System.out.println(b); } }
Почему в данном случае b не изменил значение ? разве это не ссылочный тип, как объект класса.


Ответ

Переменные объектных (или ссылочных) типов хранят ссылки на сами объекты.
В строке a = 4; создается* объект класса Integer и ссылка на этот объект помещается в переменную a
В строке b = a ссылка, хранящаяся в переменной a копируется в переменную b. После этого переменные a и b ссылаются на один и тот же объект.
Далее, в строке a = 334; создается объект класса Integer и ссылка на него помещается в переменную a. Здесь не происходит никаких манипуляций с переменной b
*в случае, если объект с таким же значением был создан ранее и он хранится в пуле, то новый объект создаваться не будет, вместо этого будет использован объект из пула.

Комментариев нет:

Отправить комментарий