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
*в случае, если объект с таким же значением был создан ранее и он хранится в пуле, то новый объект создаваться не будет, вместо этого будет использован объект из пула.
Комментариев нет:
Отправить комментарий