Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

equals() em String

Olá pessoal! Estou com duvida em relação ao método equals(). No curso 6 de Java é mostrado que o equals() por padrão retorna a referencia do Object, por conta disso é interessante nós usarmos o Override e criamos o nosso próprio tratamento. Quando eu utilizo o equals() para validar uma String, ele já retorna o valor correto sem eu nem ter criado um Override.

        if (getLogin().equals("Pax") && 123 == getSenha()) {
            Log.e("LOGIN =====", "Login feito com sucesoo");
        } else {
            throw new Exception("Erro na validação do Login");
        }

Entrando na classe String, ele só me mostra que o método se compara a um Object:

    public boolean equals(Object anObject) {
        throw new RuntimeException("Stub!");
    }

Minha duvida com isso é: Na classe String, há algo interno que faz com que compare os caracteres usando o equals() sem precisar implementar um Override?

3 respostas
solução!

Oi Douglas! Como vai ?

Em java, tratamos as igualdades de duas formas; igualdade de referência e igualdade lógica. Na igualdade de referência, iremos comparar os endereços daquele objeto, já na igualdade lógica, iremos comparar os valores daquele objeto, ou seja, seu conteúdo.

Nisto, a classe string por padrão possui um override no método equals() para que ela possa comparar logicamente e não por referência, ou seja, ela compara o conteúdo daquela variável. Por isto que quando você utiliza o equals() para validar uma string irá retornar um valor booleano, pois, a classe já possui um método equals() sobrescrito para este fim. Sendo assim, não é necessário criar um overrride para a mesma.

Neste link é possível ver a implementação do método equals() da classe string.

Qualquer dúvida estou a disposição. Espero ter ajudado. Bons estudos!!!

Apenas um adendo, Douglas! A sua pergunta é excelente e mostra um dos principais e mais belos princípios da programação orientada a objetos o qual diz que não devemos nos preocupar com a implementação em si e sim com o que é feito!

Veja, a forma como o equals() dentro da classe String foi implementado não deve ser um motivo de preocupação uma vez que sabemos qual comportamento ele terá. Sempre tenha esse princípio em mente pois é muito importante!

Grande abraço e bons estudos, meu aluno!

Olá Nádia e Gabriel,

Muito obrigado pelas respostas!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software