Neste artigo vamos discutir um pouco sobre a diferença entre o operador == e o método de comparação equals().
O Método equals()
O método public boolean equals(Object obj) é um método proveniente da classe Object. Por default, sua comparação utiliza o operador == para comparar os dois objetos.
Como todo objeto em JAVA possui a classe Object como sua Superclass, podemos sobrescrever seus métodos para comparar seus valores. Isso é o que acontece com a classe String. Ela sobrescreve seu método .equals para verificar se o valor de uma String é exatamente igual ao do objeto.
O operador ==
O operador == verifica se os dois objetos possuem a mesma referência, e ao contrario do que muitos pensam, ele não verifica se os dois objetos possuem o mesmo valor.
Mão na massa
Para demonstrar, verifique o código abaixo e veja o que ele imprime.
Repare que texto1 refere-se ao objeto “PogNotFound!”, e texto2 refere-se a um outro objeto que possui o mesmo texto.
Ou seja, comparações de valores entre dois objetos do tipo String devem ser usados o método .equals() ou .compareTo
public class teste { public static void main(String[] args) { String texto1 = "PogNotFound!"; String texto2 = new String("PogNotFound!"); System.out.println("Valor de texto1: " + texto1); System.out.println("Valor de texto2: " + texto2 + "\n"); if(texto1 == texto2) System.out.println("[1] Valores Iguais!"); else System.out.println("[1] Valores Diferentes!"); if(texto1.equals(texto2)) System.out.println("[2] Valores Iguais!"); else System.out.println("[2] Valores Diferentes!"); } }
Dúvidas sobre String, StringBuilder e StringBuffer?
Veja nossoo post sobre isso. Clique Aqui