Por que a comparação de wrappers usando == para valores abaixo de 128 é true e acima disso é false ?
Integer i1 = 127;
Integer i2 = 127;
Integer i3 = 128;
Integer i4 = 128;
System.out.println((i1==i2)); // imprime true
System.out.println((i3==i4)); // imprime false
[Editado]
SDK 5