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?