Dlaczego zachowanie stałej puli Integer zmienia się na 127?

Nie jestem w stanie zrozumieć, jak działa Java Constant Pool dla Integer.

Rozumiem zachowanie ciągów znaków, a zatem jestem w stanie usprawiedliwić się, że to samo dotyczy również stałych całkowitych.

Więc dla liczb całkowitych

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

Do tej pory wszystko idzie w mojej głowie.

To, czego nie mogę przetrawić, zachowuje się inaczej, gdy zwiększam liczbę całkowitą z 127. To zachowanie zmienia się po 127, poniżej znajduje się fragment kodu

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

Czy ktoś może mi pomóc to zrozumieć?

questionAnswers(4)

yourAnswerToTheQuestion