1
resposta

[DÚVIDA] Comparação de objetos

Filme filme1 = new Filme("Avatar", 2009);
Filme filme2 = new Filme("Avatar", 2009);

if (filme1 == filme2) {
    System.out.println("Iguais");
} else {
    System.out.println("Diferentes");
}

Como as referências são diferentes, apesar de terem o conteúdo igual, o resultado é "diferentes".
Considerando que quisessemos comparar se realmente são informações iguais, ou seja, o que foi escrito em cada um, o correto seria utilizar "equals", isso?

1 resposta

Oii, Danielle.

Sim, seu raciocínio está perfeitamente correto. Para verificar se o conteúdo de dois objetos é idêntico, o método adequado é o equals().

Entender a diferença entre identidade e igualdade ajuda a evitar muitos erros de lógica no desenvolvimento com Java.

Quando lidamos com objetos, existem dois níveis de comparação:

  • Identidade (==): Verifica se as duas variáveis apontam para o exato mesmo endereço de memória. No seu exemplo, filme1 e filme2 são como dois cartões de visita diferentes que levam a duas casas diferentes, mesmo que as casas tenham sido construídas com a mesma planta.
  • Igualdade (equals): Verifica se os valores contidos dentro dos objetos são os mesmos. Seria como comparar se o nome da rua e o número escritos nos cartões de visita são iguais.

O papel do método equals()

Por padrão, na classe Object (que é a "mãe" de todas as classes no Java), o método equals() se comporta exatamente como o operador ==. Isso significa que, para ele funcionar da forma que você deseja, você precisa sobrescrever esse método na sua classe Filme.

Dica importante: O método hashCode()

Sempre que você decidir que dois objetos são iguais via equals(), o Java exige que eles também tenham o mesmo código de identificação numérica, chamado hashCode(). Se você alterar um, deve alterar o outro. Isso garante que seus objetos funcionem corretamente dentro de listas e coleções, como o HashSet ou HashMap.

Dessa forma, ao utilizar filme1.equals(filme2) após a sobrescrita, o resultado no seu console passaria a ser "Iguais".

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!