Возможный дубликат:
Использование == оператор в Java для сравнения объектов-оболочек
java версии 1.6.0_26
Из книги по подготовке к экзамену SCJP:
В целях экономии памяти два экземпляра следующих [Short и Integer из -128 и 127, а также некоторые другие, но не имеют значения для вопроса] объекты-оболочки (созданные посредством boixng) всегда будут ==, когда их примитивные значения совпадают.
Что я сделал:
Если мы сравним два целых числа от -128 до 127 следующим образом:
1. Integer i1 = 10;
2. Integer i2 = 10;
3. System.out.println(i1 == i2); // true
Но почему то же самое дает нам «ложь» или, может быть, это не одно и то же:
4. Integer i3 = new Integer(10);
5. Integer i4 = new Integer(10);
6. System.out.println(i3 == i4); // false
Мои вопросы:
1) Делаем ли мы в 1-й строке кода неявный бокс?
2) Почему 3-я и 6-я строки кода дают разные результаты?