Article image
Alexsander Santos
Alexsander Santos06/02/2024 20:01
Compartilhe

Equals() em Java: Compreendendo e Implementando a Comparação de Objetos

  • #Java
#PraCegoVer: Há uma imagem como capa deste artigo com fundo branco e dois personagens cartoons, eles são completamente brancos mas possuem gravatas pretas. Ambos têm um balão de fala na cor vermelha. No primeiro balão possui os dizeres "Eu sou o Jack", e no segundo balão está escrito "Ué!!! eu também". No canto inferior direito há o logo da DIO, três letras formando a palavra dio, um ponto final e um underline. No canto inferior esquerdo há a palavra Equals junto de dois parênteses, a palavra JAVA ambos na cor vermelha, e ao seu lado direito possui linhas que formam uma xicara na cor azul e duas linhas em S formando fumaças na cor vermelha.

Equals() em Java: Compreendendo e Implementando a Comparação de Objetos

Em Java, comparar objetos é uma tarefa fundamental presente em muitos programas. Embora Java forneça um método equals() herdado da classe Object para comparar objetos, é essencial entender como implementar e personalizar esse método para atender às necessidades específicas do seu programa. Neste artigo, exploraremos o método equals() em Java, desde sua definição na documentação oficial até implementação prática e exemplos de uso.

O método equals() em Java é usado para determinar se dois objetos são considerados iguais. A implementação padrão deste método na classe Object compara referências de objetos para ver se elas apontam para o mesmo local de memória. Porém, em muitos casos é necessário comparar o conteúdo dos objetos para determinar a igualdade.

De acordo com a documentação oficial de Java, a assinatura do método equals() é:

public boolean equals(Object obj)

Esta assinatura indica que o método equals() toma um objeto como parâmetro e retorna um valor booleano indicando se os objetos são iguais ou não.

Para muitas classes customizadas em Java, é necessário substituir o método equals() e fornecer uma implementação que compare o conteúdo dos objetos. Uma implementação típica do método equals() envolve a comparação de matrizes de objetos para determinar a igualdade.

Vejamos um exemplo prático com a classe Pessoa. Suponha que queiramos comparar duas instâncias de pessoas com base em seus nomes e idades. Aqui está uma possível implementação do método equals() para a classe Pessoa:

public class Pessoa {
 private String nome;
 private int idade;
 
 // Construtor, getters e setters
 
 @Override
 public boolean equals(Object obj) {
     if (this == obj) return true;
     if (obj == null || getClass() != obj.getClass()) return false;
     Pessoa pessoa = (Pessoa) obj;
     return idade == pessoa.idade && Objects.equals(nome, pessoa.nome);
 }
}

Nesta implementação, primeiro verificamos se os próprios objetos são idênticos. Em seguida, verificamos se o objeto fornecido é nulo ou não da mesma classe. Por fim, comparamos os campos nome e idade das duas pessoas.

Bom... aqui você deve estar pensando "Mas o operador '==' não faz isso também?"

Em Java, == e .equals() não são a mesma coisa. Eles têm finalidades diferentes e comportamentos distintos:

==: O operador == em Java é usado para comparar as referências de dois objetos. Ele verifica se dois objetos têm a mesma referência de memória, ou seja, se estão apontando para o mesmo local na memória.

String s1 = "hello";
String s2 = "hello";
String s3 = new String("hello");

System.out.println(s1 == s2); // Saída: true
System.out.println(s1 == s3); // Saída: false

No exemplo acima, s1 e s2 apontam para o mesmo objeto na memória devido à otimização de string em Java, enquanto s3 aponta para um objeto diferente.

.equals(): O método .equals() é utilizado para comparar o conteúdo de dois objetos e verificar se eles são considerados iguais de acordo com a implementação fornecida pela classe. Por padrão, a implementação do método equals() na classe Object compara referências de objetos, assim como o operador ==.

No entanto, muitas classes em Java sobescrevem o método equals() e fornecem sua própria implementação que compara o conteúdo dos objetos.

Por exemplo:

String s1 = "hello";
String s2 = "hello";
String s3 = new String("hello");

System.out.println(s1.equals(s2)); // Saída: true
System.out.println(s1.equals(s3)); // Saída: true

Voltando com o foco para o Equals().

Agora, vamos ver como usar o método equals() em um contexto prático. Suponha que temos duas instâncias de Pessoa e queremos compará-las para determinar se são iguais:

Pessoa pessoa1 = new Pessoa("Jack", 25);
Pessoa pessoa2 = new Pessoa("Jack", 25);

System.out.println(pessoa1.equals(pessoa2)); // Saída: true

Neste exemplo, as duas instâncias Pessoa possuem os mesmos valores para os campos nome e idade, portanto o método equals() retorna verdadeiro, o que significa que são considerados iguais.

O método equals() em Java é uma ferramenta poderosa para comparar objetos e determinar a igualdade. Ao compreender e implementar adequadamente esse método, você pode garantir a funcionalidade correta de seus programas Java. Ao personalizar a implementação do método equals() em suas classes, você pode definir o que significa igualdade para objetos em seu domínio específico. Lembre-se sempre de substituir também o método hashCode() ao implementar equals() para garantir a consistência de estruturas de dados baseadas em hash, como HashMap e HashSet, mas para isso aconselho buscar a documentação disponível no link abaixo.

Referências:

Documentação oficial JAVA

Compartilhe
Comentários (0)