Bizarrice em comparação de Integer

12 respostas
dijava

pessoal sei que tem varios topicos sobre isso, e q nunca passei por esse problema, estou tentando comparar 2 Integer em um jsp e nao entra na condicao

Integer a = r.getId();// retorna 65
Integer b = Integer.parseInt(cli);// retorna 65
	if(a == b){//nao entra de jeito nenhum ja tentei a.equals(b) e tb nao entra
		faz o q tem q fzr
	}

alguem ja passou por esse problema bizarro ?

12 Respostas

drigo.angelo

tenta comparar os valores primitivos xD

Acho que colocar if(a.compareTo(b) == 0) daria certo, mas fica muito estranho… muito estranho mesmo.

drigo.angelo

o equals tinha que dar certo também… alias, é a maneira mais certa :stuck_out_tongue:

leoramos
Cara, fiquei curioso e testei aqui...
public class Teste {
	public static void main(String[] args) {
		Integer a = 65;// retorna 65
		Integer b = Integer.parseInt("65");// retorna 65
		if (a == b) {
			System.out.println("entrou");
		}
	}
}
Funciona.
public class Teste {

	public static void main(String[] args) {

		Integer a = 65;// retorna 65
		Integer b = Integer.parseInt("65");// retorna 65
		if (a.equals(b)) {
			System.out.println("entrou");
		}
	}
}

Também funciona, ou seja, alguém aí não é 65... debugga teu código que tem boi na linha hehe

kenneth

E se…

if (a.intValue() == b.intValue()){
//...
}

Abraco
:smiley:

dijava

é por isso que eu falei que é bizarro pq eu ja tentei todos esses jeitos variavel primitiva,==,equals e etc… eu debuguei alias estou com o breakpoint parado aqui, por isso que eu sei que é 65, eu passei tudo para String e coloquei o equal e funcionou, mas tb fiquei curioso dessa “ANOMALIA” que nunca me aconteceu rsrsrs e quero descobri a razao !

dijava

esse eu nao tinha testado, testei agora e funcionou alguem sabe a razao ?

R

Não seria o mesmo caso da String? Como Integer é um objeto com o == vocẽ está comparando o local do alocamento da memória e não o valor da variável.

dijava

ai o equals deveria funcionar o q nao aconteceu

A

dijava:
pessoal sei que tem varios topicos sobre isso, e q nunca passei por esse problema, estou tentando comparar 2 Integer em um jsp e nao entra na condicao

Integer a = r.getId();// retorna 65
Integer b = Integer.parseInt(cli);// retorna 65
	if(a == b){//nao entra de jeito nenhum ja tentei a.equals(b) e tb nao entra
		faz o q tem q fzr
	}

alguem ja passou por esse problema bizarro ?

Olá,

Realmente você está seguro de que o retorno é 65?

A

Ví agora que funcionou hehe…

A

int intValue()
Returns the value of this Integer as an int. Fonte: JavaDoc

Verdade. intValue() irá pegar o valor e não a referência.

kenneth

Fala brow,

O intValue() funciona com == por que retorna um primitivo.
Se voce comparar a == b, estara comparando as referencias das variaveis, o que no caso da false.
Fiz alguns testes aqui, e o a.equals(b) funcionou sim…

Abraco.

Criado 1 de março de 2011
Ultima resposta 1 de mar. de 2011
Respostas 12
Participantes 6