Qual é a diferença entre equals () e method e == operator?

Vou explicar a diferença entre o operador equals () e == na linguagem Java. O operador "==" é usado para verificar a igualdade entre duas variáveis. Para tipos primitivos como int, double, etc, o operador "==" determina se as duas variáveis ​​são iguais ou não.

Ex: - int a, b; a = 5, b = 5;

se (a == b) {

// faça alguma coisa

}

Como 'a' e 'b' são iguais a 5, o resultado da comparação é 'verdadeiro'. O resultado da comparação é um valor booleano, ou seja, 'true' ou 'false'. O operador "==" compara os bits nas duas variáveis ​​e determina se são iguais em valor ou não.

Agora vamos considerar a situação em que as duas variáveis ​​são variáveis ​​de referência. Vamos considerar duas variáveis ​​de referência a e b.

Dog a = novo Dog ();

Cão b = Cão novo ();

Aqui 'a' e 'b' são duas variáveis ​​de referência que referenciam dois objetos Dog diferentes. Podemos ver claramente que a comparação (a == b) retorna 'false'. Os bits nas duas variáveis ​​de referência são diferentes entre si.

Agora considere esta situação: -

Vamos atribuir o valor 'a' a 'b'. Ou seja, deixe (b = a). Agora, o resultado da operação (a == b) é 'verdadeiro'. Porque ambas as referências estão referenciando o mesmo objeto. Os bits nas duas variáveis ​​de referência são iguais. O operador "==" é usado para comparar os bits nas duas variáveis ​​e retorna 'true' se forem iguais.

Agora considere esta situação: -

String a = "salto em comprimento";

String b = "salto em comprimento";

se (a == b)

{

System.out.println (“Ambas as Strings são iguais.”);

}

outro

{

System.out.println ("Strings não são iguais");

}

Isso imprime: "Strings não são iguais". Podemos ver que as duas Strings contêm o mesmo valor, mas, como são objetos diferentes no Heap, elas são tratadas não iguais.

O equals () é usado para comparar o conteúdo de dois objetos. No caso acima, se dissermos que a.equals (b), a comparação de conteúdo é feita e retorna o valor "Ambas as seqüências de caracteres são iguais". Como as duas seqüências contêm o mesmo valor "salto longo".

Portanto, se você deseja comparar os bits nas duas variáveis ​​de referência e determinar se são iguais e se referem ao mesmo objeto no Heap, use o "==". Use o equals () para comparar o conteúdo de dois objetos, como nessas duas Strings.

Essa é a diferença entre "==" e "igual a ()".

.

Essa é uma pergunta surpreendentemente importante para as diferenças entre as maneiras pelas quais as linguagens comparam as entidades podem introduzir bugs desconcertantes se você não conhece as regras da linguagem.

Por exemplo, em C #, ao comparar cadeias, o operador == faz distinção entre maiúsculas e minúsculas. O método string.Equals () usa o terceiro parâmetro opcional para especificar o tipo de comparação. As opções incluem Ordinal, maiúsculas e minúsculas, cultura atual, etc.

O significado de igualdade pode variar de acordo com o tipo de dados em uma linguagem e varia amplamente de um idioma para o outro. Igualdade pode significar que duas variáveis ​​têm o mesmo valor ou dois ponteiros estão apontando para o mesmo objeto.

Você precisará consultar a documentação do idioma específico que está usando. Valerá a pena o tempo que você investir.