Почему оператор равенства работает для целочисленного значения до 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
Спасибо!