Usando o operador == em Java para comparar objetos wrapper

Eu estou lendo SCJP Java 6 por Kathy Sierra e Bert Bates e este livro está me confundindo muito. Na página 245 eles afirmam que o seguinte código abaixo.

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

//Prints output
different objects
</code>

Então na próxima página eles têm o seguinte código

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

//Prints output
same objects
</code>

Estou tão confuso! Quando eu tento isso por conta própria, parece que você não pode usar o == para comparar da mesma maneira que você usaria o método equals (). Usar o == sempre me dá 'false' mesmo se as variáveis ​​Integer forem definidas com o mesmo valor (ou seja, 10). Estou correcto? Usar o == para comparar o mesmo objeto Integer (com os mesmos valores) sempre resultará em 'false'

questionAnswers(8)

yourAnswerToTheQuestion