Класс Integer
кэширует значения, как описано в Integer.valueOf
public static Integer valueOf (int i)
Возвращает экземпляр Integer, представляющий указанное значение типа int. Если новый экземпляр Integer не требуется, этот метод обычно следует использовать в предпочтении перед конструктором Integer (int), поскольку этот метод, вероятно, даст значительно лучшую производительность в пространстве и времени за счет кэширования часто запрашиваемых значений. Этот метод всегда кэширует значения в диапазоне от -128 до 127 включительно и может кэшировать другие значения вне этого диапазона.
Диапазон от -128 до 127 на самом деле не является пулом, поскольку это будет статический набор значений, но он также предназначен для кэширования других значений при необходимости. Обратите внимание, что я никогда не замечал такого поведения за пределами определенного диапазона. Итак:
Integer.valueOf(5) == Integer.valueOf(5) //true
Integer.valueOf(1234) == Integer.valueOf(1234) //false even if it could be true based on the javadoc