Usando el operador == en Java para comparar objetos de envoltura

Estoy leyendo SCJP Java 6 de Kathy Sierra y Bert Bates y este libro me está confundiendo mucho. En la página 245 dicen que el siguiente código a continuación.

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

//Prints output
different objects
</code>

Luego en la página siguiente tienen el siguiente código

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

//Prints output
same objects
</code>

¡Estoy tan confundida! Cuando pruebo esto por mi cuenta, parece que no puedes usar el == para comparar de la misma manera que usarías el método equals (). El uso de == siempre me da 'falso' incluso si las variables enteras están configuradas en el mismo valor (es decir, 10). ¿Estoy en lo correcto? Usar el == para comparar el mismo objeto Integer (con los mismos valores) siempre resultará en 'falso'

Respuestas a la pregunta(8)

Su respuesta a la pregunta