== nao funcionando para comparar 2 valores Integer

4 respostas
P

Opa :smiley:

Tenho a seguinte chamada no meu método:

if((temp.getCdGrupoRemarcacao() != null && produtoNaoControladoTO.getCdGrupoRemarcacao() != null && 
					temp.getCdGrupoRemarcacao() == produtoNaoControladoTO.getCdGrupoRemarcacao()) ||
					temp.getCdProduto() != null && produtoNaoControladoTO.getCdProduto() != null &&
					temp.getCdProduto() == produtoNaoControladoTO.getCdProduto())
			{

Nessa linha: temp.getCdProduto() == produtoNaoControladoTO.getCdProduto(), os valores são iguais ( eu debuguei e observei ) mas o compilador encara como um valor diferente.

Como resolver isso?

4 Respostas

Mauricio_Linhares

Use o método equals, não ==.

M

Integer trata-se de um objeto e não de um tipo primitivo.
comparação:
Tipo primitivo -> ==
Integer -> equals

hideraldus13

usa == só se for int

rmendes08

Só pra completar:

o operador == é usado para comparar valores de tipos primitivos ( byte , short, int, float , etc … ) ou então comparar duas referências. Duas referências são iguais se elas apontam para o mesmo objeto na heap. Assim, como é perfeitamente possível que dois objetos diferentes (dois espaços da heap diferentes) tenham o mesmo conteúdo, ao tentar comparar esses objetos através de suas referências usando == fatalmente resultará em false. Assim, para comparar o conteúdo de dois objetos é utilizado o método equals(), que compara efetivamente o conteúdo dos objetos, e não as referências.

Criado 29 de outubro de 2008
Ultima resposta 29 de out. de 2008
Respostas 4
Participantes 5