GeeksforGeeks

Em geral ambos os operadores equals() e “==” em Java são usados para comparar objetos para verificar a igualdade, mas aqui estão algumas das diferenças entre os dois:

  1. A diferença principal entre o método .equals() e == operador é que um é método e outro é operador.
  2. Podemos usar == operadores para comparação de referência (comparação de endereços) e .equals() método para comparação de conteúdo. Em palavras simples, == verifica se ambos os objetos apontam para a mesma localização de memória enquanto .equals() avalia para a comparação de valores nos objetos.
  3. Se uma classe não sobrepõe o método equals, então por padrão ela usa o método equals(Object o) da classe pai mais próxima que sobrepôs este método. Veja isto para detalhes
  4. Coding Example:

    public class Test {
    public static void main(String args)
    {
    String s1 = new String("HELLO");
    String s2 = new String("HELLO");
    System.out.println(s1 == s2);
    System.out.println(s1.equals(s2));
    }
    >}

    
    

    
    

    Eliminar:

    falsetrue

    Explicação: Aqui estamos a criar dois objectos: s1 e s2.

    • Bambos s1 e s2 se referem a diferentes objetos.
    • Quando usamos == operador para comparação s1 e s2 então o resultado é falso pois ambos têm endereços diferentes na memória.
    • Usando iguais, o resultado é verdadeiro pois só compara os valores dados em s1 e s2.

Deixe-nos entender os dois operadores em detalhe:

Operador de igualdade(==)

Podemos aplicar operadores de igualdade para todos os tipos primitivos incluindo o tipo booleano. podemos também aplicar operadores de igualdade para tipos de objetos.

class Test {
public static void main(String args)
{
System.out.println(10 == 20);
System.out.println('a' == 'b');
System.out.println('a' == 97.0);
System.out.println(true == true);
}
>}



Eliminar:

falsefalsetruetrue

Se aplicarmos == para tipos de objectos então, deve haver compatibilidade entre tipos de argumentos (de criança para pai ou mãe para filho ou mesmo tipo). Caso contrário, teremos erro de tempo de compilação.

class Test {
public static void main(String args)
{
Thread t = new Thread();
Object o = new Object();
String s = new String("GEEKS");
System.out.println(t == o);
System.out.println(o == s);
System.out.println(t==s);
}
}



Eliminar:

falsefalse// error: incomparable types: Thread and String

.igual a()

Em Java, o método string igual a() compara as duas strings dadas com base nos dados/conteúdo da string. Se todo o conteúdo de ambas as strings for o mesmo, então ele retorna verdadeiro. Se todos os caracteres não forem iguais, então ele retorna falso.

public class Test {
public static void main(String args)
{
Thread t1 = new Thread();
Thread t2 = new Thread();
Thread t3 = t1;
String s1 = new String("GEEKS");
String s2 = new String("GEEKS");
System.out.println(t1 == t3);
System.out.println(t1 == t2);
System.out.println(s1 == s2);
System.out.println(t1.equals(t2));
System.out.println(s1.equals(s2));
}
}



Saída:

truefalsefalsefalsetrue

Explicação: Aqui estamos usando o método .equal para verificar se dois objetos contêm os mesmos dados ou não.

  • No exemplo acima, estamos criando 3 objetos Thread e 2 objetos String.
  • Na primeira comparação, estamos verificando se t1 == t3 ou não. Como sabemos que ambos t1 e t3 apontam para o mesmo objeto, é por isso que ele retorna verdadeiro.
  • Na segunda comparação, estamos usando o operador “==” para comparar os Objetos String e não o conteúdo dos objetos. Aqui, ambos os objetos são diferentes e portanto o resultado desta comparação é “Falso”
  • Quando estamos comparando 2 objetos String pelo operador .equals() então estamos verificando se ambos os objetos contêm os mesmos dados ou não.
  • Bambos os objetos contêm a mesma String, ou seja, GEEKS é por isso que retorna true.

Este artigo é contribuído por Bishal Kumar Dubey. Se você gosta de GeeksforGeeks e gostaria de contribuir, você também pode escrever um artigo usando contribute.geeksforgeeks.org ou enviar seu artigo por e-mail para [email protected]. Veja o seu artigo que aparece na página principal do GeeksforGeeks e ajude outros Geeks.

.

Deixe uma resposta

O seu endereço de email não será publicado.