Почему поведение пула констант Integer изменяется на 127?

Я не могу понять, как работает пул констант Java для целых чисел.

Я понимаю поведение строк и, следовательно, могу обосновать себя тем же, что и с целочисленными константами.

Итак, для целых

Integer i1 = 127;
Integer i2 = 127;
System.out.println(i1==i2); // True

&

Integer i1 = new Integer(127);
Integer i2 = new Integer(127);
System.out.println(i1==i2); // False

До сих пор все идет в моей голове.

То, что я не могу переварить, это то, что он ведет себя иначе, когда я увеличиваю целое число от 127. Это поведение меняется после 127, ниже приведен фрагмент кода

Integer i1 = 128;
Integer i2 = 128;
System.out.println(i1==i2); // False. WHY?????

Может ли кто-нибудь помочь мне понять это?

Ответы на вопрос(4)

Ваш ответ на вопрос