Здесь они являются одним и тем же экземпляром:
Integer integer1 = 127;
Integer integer2 = 127;
System.out.println(integer1 == integer2); // outputs "true"
Но здесь они разные экземпляры:
Integer integer1 = 128;
Integer integer2 = 128;
System.out.println(integer1 == integer2); // outputs "false"
Почему объекты-оболочки имеют один и тот же экземпляр только внутри значения 127?