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".
Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!