Warum ändert sich das Verhalten des Integer-Konstantenpools bei 127?

Ich kann nicht verstehen, wie der Java Constant Pool für Integer funktioniert.

Ich verstehe das Verhalten von Strings und kann mich daher rechtfertigen, dass dies auch bei Integer Constants der Fall ist.

Also für ganze Zahlen

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

Bis hierher geht alles in meinem Kopf.

Was ich nicht verdauen kann, ist, dass es sich anders verhält, wenn ich die Ganzzahl von 127 erhöhe. Dieses Verhalten ändert sich nach 127. Unten ist das Code-Snippet

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

Kann mir jemand helfen, das zu verstehen?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage