Почему поведение пула констант 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?????
Может ли кто-нибудь помочь мне понять это?