Não são iguais, pois o objeto a e o objeto b são do mesmo tipo, porém duas referencias diferente, pensa na seguinte situacao quando vc instancia o objeto a ele irá ocupar um ponto na memoria, e quando vc instancia o objeto b ele irá ocupar um outro locar na memoria, logo são referencias diferente,
Entendeu!?
pmlm
Nas classes definidas por ti deves implementar o equals e o hashCode onde defines as regras para a igualdade.
Equals é utilizado em Java para verificar se dois objetos são iguais. Ou você “override” o método Equals de Object ou será impresso false, pois você criou dois objetos na memória.
Caso você tenha um objeto e duas referências, a utilização de Equals retornará true.
Entendeu?
S
Sem_Nome
Entendi. Eu nunca precisei dar override nele porque eu sempre comparava as IDs (todas as classes têm um atributo do chamado id) então eu acho que foi por isso que eu nunca reparei nisso hehe.
Muito obrigado aos 3 por tirarem essa dúvida.
Edit:
Embora minha dúvida principal tenha sido respondida, a resposta do pmlm me deixou com outra dúvida: ao dar override no hashCode() eu tenho que fazer ele retornar algo como o id do objeto (como uma chave primária, um valor que nunca se repete)?
pmlm
Objetos iguais tem de ter hashCodes iguais, embora hashCodes iguais possam não significar objetos iguais.
O hashCode deve ser obtido através da chave por forma a garantir isso.
S
Sem_Nome
pmlm:
Objetos iguais tem de ter hashCodes iguais, embora hashCodes iguais possam não significar objetos iguais.
O hashCode deve ser obtido através da chave por forma a garantir isso.