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

Ich bin nicht in der Lage zu verstehen, wie die Java-Konstanten-Pool für Integer arbeitet.

Verstehe ich das Verhalten von Strings ist und daher in der Lage mich zu rechtfertigen, dass es der gleiche Fall mit Integer-Konstanten auch.

So, für Ganzzahlen

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 hier geht alles, in meinem Kopf.

Was ich bin nicht in der Lage zu verdauen ist, es verhält sich anders, wenn ich erhöhen ganze Zahl von 127. 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 zu verstehen?

InformationsquelleAutor der Frage Vivek | 2012-10-27

Schreibe einen Kommentar