Olha.. o "==" funciona para comparar tipos primitivos e referências (como nosso amigo disse acima).
Para você fazer comparação de objetos ( qualquer tipo de objeto) voce tem que usar o método EQUALS
por exemplo
Objeto a = new Objeto();
Objeto b = new Objeto();
if(a.equals(b)){
// do somehting
}
Para o método equals funcionar, no entanto, você precisa sobrescrever o método HashCode (esse método vem de Object, então todos os objetos podem sobrescreve-lo). Esse método, se não me falha a memória, retorna um "int". Esse int deve ser computado atravéz de um algoritimo seu. O seu trabalho vai ser desenvolver um algorítimo que garanta que, sempre quando dois objetos estiverem preenchidos com os mesmo falores, esse inteiro retornado será o mesmo.
Se eu não me engano, quando o java tenta comparar duas referências de objetos, com o == ele também usa o método hashCode.... por exemplo...
// a == b
a.hashCode() == b.hashCode()
Esse eu já não garanto... mass.. quando usamos o método Equals, o java tem o seguinte comportamento
//a.equals(b)
if(a.hashCode() == b.hashCode()){
return true;
} else {
return false;
}
Essa abordagem, de implementar o hashcode é util quando você tem objetos do seu modelo de negócio que precisam ser comparadas constantemente.
O que você pode fazer também, mas eu não recomendo, é sobrescrever o método equals do seu objeto implementando um algoritmo próprio de comparação.... e por ai vai...
No caso de Integer.... tente usar o equals, acho que a classe integer já implementa o HashCode.
Caso contrario... faça o seguinte:
Integer a = new Integer(1);
Integer b = new Integer(1);
if( a.intValue() == b.intValue()){
// do something
}
Valeu?
Se eu falei alguma besteira, por favor, alguem me corrija... estou meio inferrujado no que diz respeito a conceitos "de baixo nivel" hehehe
abraço