JayCesar / generation-bootcamp

[💻 Bootcamp ] Um programa de estudos de 3 meses da Generation Brasil, sendo cada qual destinado a diferentes tecnologias.
4 stars 0 forks source link

Java - Método equals() #9

Closed JayCesar closed 1 year ago

JayCesar commented 1 year ago

Video about Equals()

https://www.youtube.com/watch?v=yTs_Oj28rsA

package mySearches.Equals;

public class MyApp {

    public static void main(String[] args) {

        int a = 10;
        int b = 10;

        Pessoa p1 = new Pessoa("10000", "Leo");
        Pessoa p2 = new Pessoa("10000", "Leo");

        System.out.println(p1 == p2);
                // O resultado é false;

    }

}

// O resultado é false;

Embora eles tenham atributos com valores iguais, eles estão em locais diferentes na memória! Por isso quando utilizamos uma comaparação "==" retorna falso, pois eles estão em endereços diferentes! Por isso o resultado dá falso.

2023-05-25_15h40_45


Porém temos a opção de fazer a comparação entre objetos usando o método Equals()

O método Equals() é um método que existe na classe OBJECT - ou seja todas classes herdam ele por ser filhas dessa classe OBJECT.

Para implementar esse método, eu teria que sobrescrever esse método na classe Pessoa

Na classe pessoa:

        // ...

       @Override
    public boolean equals(Object obj) {
        // Aqui acontece o Down Casting, ou seja, a classe Object 'desce' e 
        // eu transformo ela em pessoa
        Pessoa p = (Pessoa) obj;
        return (this.cpf == p.cpf) && (this.nome == p.nome);
    }

No programa principal:

        // ...

      public static void main(String[] args) {

        int a = 10;
        int b = 10;

        Pessoa p1 = new Pessoa("10000", "Leo");
        Pessoa p2 = new Pessoa("10000", "Leo");

        System.out.println(p1.equals(p2));
                // retorna true

    }

Aplicando o método Equals(), eu consigo implementar esse princípio de igualdade e utilizar os atributos dos objetos para comparar se são iguaais.