Używanie operatora == w Javie do porównywania obiektów opakowujących

Czytam SCJP Java 6 autorstwa Kathy Sierra, a Bert Bates i ta książka bardzo mnie myli. Na stronie 245 podają poniższy kod.

<code>Integer i1 = 1000;
Integer i2 = 1000;
if(i1 != i2)
System.out.println("different objects");

//Prints output
different objects
</code>

Następnie na następnej stronie mają następujący kod

<code>Integer i3 = 10;
Integer i4 = 10;
if(i3 == i4)
System.out.println("same objects");

//Prints output
same objects
</code>

Jestem zmieszany! Kiedy sam to wypróbuję, wydaje się, że nie można użyć == do porównania w taki sam sposób, w jaki używa się metody equals (). Użycie == zawsze daje mi „fałsz”, nawet jeśli zmienne całkowite mają tę samą wartość (tj. 10). Mam rację? Użycie == do porównania tego samego obiektu Integer (z tymi samymi wartościami) zawsze spowoduje „fałsz”

questionAnswers(8)

yourAnswerToTheQuestion