Как работают объекты-обертки? [Дубликат]

1

Фрагмент кода

public class WrapperClass {

    public static void main(String[] args) {
        Integer i1 = 400;
        Integer i2 = i1;
        i1++;
        System.out.println(i1 + "  " + i2);
    }
}

Выход 401 400. Я не уверен, как работают объекты-обертки. Arent i1 и i2, указывающие на один и тот же объект? Что происходит в java-куче, когда выполняется вышеуказанный код?

  • 2
    проверьте этот вопрос
  • 0
    Что еще ты ожидал? 401 401 ? Пожалуйста, прочитайте документы Java ...
Показать ещё 1 комментарий
Теги:

4 ответа

3
Лучший ответ

Причина проста, классы Wrapper неизменяемы. Объяснить подробнее:

Integer i1 = 400;
Integer i2 = i1;

Теперь i1 и i2 указывают на один и тот же объект.

с этим i1++ новый объект (со значением 401) создается и назначается i1, а i2 все еще продолжает указывать на старый объект (со значением 400).

1

Выход правильный. Причиной этого является Integer неизменность.

  • 0
    Это не отвечает на большинство его вопросов.
  • 0
    @ThomasStets, вероятно, да, но этого более чем достаточно, чтобы найти недостающую часть.
0

Это не очень сложно понять

i1++; 

означает

i1 = new Integer(i1.intValue()+1);
  • 0
    Трудно понять, как вы могли бы написать собственный класс-оболочку для этого. Это не так, как Java позволяет перегружать операторов.
0

Да, конечно, все классы-оболочки неизменны.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню