2016-03-02 1 views

ответ

0

Целое число, в отличие от примитивного int, является объектом. Вы сравниваете два объекта типа Integer. Я немного удивлен, что вы получили «ложную истину». Если вы попробуете:

System.out.println(i1.intValue() == i2.intValue()); 
System.out.println(i3.intValue() == i4.intValue()); 

вы должны получить ожидаемый результат.

+0

Вы тоже должны читать: http://stackoverflow.com/questions/1700081/why-does-128-128-return-false-but-127-127-return-true-when-converting-to- integer – Eashi

+0

Это не отвечает на вопрос. – erickson

2

Существует кэш Integer экземпляров для диапазона значений (по крайней мере -128 – 127), который используется при преобразовании неявно int к Integer.

В этом случае 128 не находится в кеше, поэтому каждый объект Integer, представляющий это значение, является новым и отличным.

Значение 127, с другой стороны, : Гарантировано, что оно находится в кеше, и поэтому повторяется один и тот же экземпляр Integer.

Смежные вопросы