Почему оператор равенства работает для целочисленного значения до 128 числа? [Дубликат]

На этот вопрос уже есть ответ здесь:

Почему 128 == 128 ложно, а 127 == 127 верно при сравнении упаковщиков Integer в Java? 6 ответов

Почему Integer "=" оператор не работает для 128 и после целочисленных значений? Может кто-нибудь объяснить эту ситуацию?

Это моя среда Java: версия Java "1.6.0_37"

Java (TM) SE Runtime Environment (сборка 1.6.0_37-b06)

Java HotSpot (TM) 64-разрядная серверная виртуальная машина (сборка 20.12-b01, смешанный режим)

Образец кода:

    Integer a;
    Integer b;
    a = 129;
    b = 129;

    for (int i = 0; i < 200; i++) {
        a = i;
        b = i;

        if (a != b) {
            System.out.println("Value:"+ i + " - Different values");
        } else {
            System.out.println("Value"+ i + " Same values");
        }
    }

Некоторая часть вывода консоли:

Value:124 - Same values
Value:125 - Same values
Value:126 - Same values
Value:127 - Same values
Value:128 - Different values
Value:129 - Different values
Value:130 - Different values
Value:131 - Different values
Value:132 - Different values

Спасибо!

Ответы на вопрос(7)

Ваш ответ на вопрос