Страницы

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

среда, 12 декабря 2018 г.

Boxing in Java

Добрый день. Читаю , про автоупаковку в Java и появился вопрос : Integer i0 = 100; Integer i1 = new Integer(100); System.out.println(i0 == i1); Почему результат false ? Ведь , если сделать так : Integer i0 = 100; Integer i1 = 100; System.out.println(i0 == i1); То результат будет true. Хотя в первом примере строка : Integer i1 = new Integer(100); Где значение 100 тоже упаковывается, но только вручную, а не автоматически (как во втором примере) в объект типа Integer.


Ответ

Такой код Integer i0 = 100; эквивалентент такому: Integer i0 = Integer.valueOf(100); Если взглянуть на реализацию метода valueOf, то можно увидеть, что для значений от -128 до 127 используется кэш объектов типа Integer. См. так же документацию метода valueOf При вызове же конструктора кэш не используется и создается новый экземпляр класса Integer

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

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