Добрый день. Читаю , про автоупаковку в 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
Комментариев нет:
Отправить комментарий