Java Core junior
Integer cache: почему valueOf(100)==valueOf(100) true, а valueOf(200) false?
Ответ
IntegerCache кэширует значения от -128 до 127. valueOf(100) возвращает один и тот же объект из кэша → == сравнивает ссылки → true. valueOf(200) вне кэша, создаёт новый объект каждый раз → разные ссылки → false.
Разбор: IntegerCache при автобоксинге и Integer.valueOf переиспользует уже созданные объекты для диапазона -128..127, поэтому valueOf(100) возвращает ту же ссылку и == даёт true. Для 200 значение вне кэша, создаётся новый объект, и == сравнивает разные ссылки → false. Ловушка в путанице с пулом строк и в неверных границах кэша (правильно 127, а не 100/128).
Хочешь так же по своей компании — с вопросами по грейдам и задачами? Закажи гайд или забери свежее в Telegram.