Igualdade de Integer

Olá Pessoal.

Me deparei com o seguinte exemplo no livro da Kathy:

Integer a1 = 10;
Integer a2 = 10;
Integer b1 = 1000;
Integer b2 = 1000;		
		
System.out.println( a1 == a2 );
System.out.println( b1 == b2 );

o resultado é:

true
false

Não entendi muito bem, porque no primeiro exemplo são os mesmos objetos e no segundo são objetos diferentes.

A unica diferenca do primeiro teste para o segundo são os valores.

Grato a todos.

E essa é a grande diferença.

Todos os números de -127 até 128 estão em cache. Ou seja, sempre que você solicita-los, o mesmo Integer será retornado. Não sei porque desse valor, creio que devam ter descoberto que eles são muito usados.

Agora, criando fora desse escopo, você obterá objetos diferentes, pois eles sempre serão criados.

No caso, você está fazendo a comparação com ==. Para obter sempre o mesmo resultado, use o método equals, como você faria com um String. Nesse caso, os valores (ao invés da identidade) serão comparados.

Valeu kra, o esquema do equals eu sei, só fiquei com duvida pois tinha esta questão no javablackbelt.

Bah, isso eu realmente não sabia.

valeu ViniGodoy;

São estas e outras que fazem o guj ser o que é.

Até mais…