2012-02-15 3 views
0

Можно создать дубликат:
Why is == true for some Integer objects?Различные целочисленные значения

У меня есть фрагмент кода

Integer i1 = new Integer(a); 
Integer i2 = new Integer(b); 
if (i1 == i2) 
{ 
// ... 
} 

Когда 'а' и 'б' небольшие числа (например, 0- 20), то i1 == i2 возвращает true.
Но когда «a» и «b» великолепны, тогда i1 == i2 повторите ложь!
Я не понимаю, как это может быть

ответ

1

Подробнее о пуле целых значений.
Если 'a' и 'b' находятся между -127 и 128, тогда i1 == i2 return true
else i1 == i2 return false
Метод наилучшего использования. Сравнение эквивалентов.
если (i1.equals (i2))
{ }

0

Имейте в виду, что вы используете объект, а не тип данных. Integer имеет метод равных значений, который определяется как:

Сравнивает этот объект с указанным объектом. Результат верен, если и только если аргумент не является нулевым и является объектом Integer, то содержит то же значение int, что и этот объект.

Обычно вы хотите использовать метод equals для проверки равенства объектов.

Котировки от: http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Integer.html#equals(java.lang.Object)

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