Neste post, discutiremos a diferença entre == operador e igual() método em Java.
O ==
é um operador relacional em Java que é usado para comparar tipos primitivos como int, double, char, float, etc. Ele não deve ser usado para comparar duas referências de objetos, pois para qualquer referência não-nula x e y, x == y
retorna verdadeiro somente quando x e y se referem ao mesmo objeto.
equals()
, por outro lado é um método da classe Object
que é usado para comparar objetos. Ele se comporta de forma similar ao operador ==
se não for substituído por uma classe. Toda classe deve substituir o método equals()
da classe Object
e especificar a relação de equivalência em objetos. A relação de equivalência deve ser tal que equals()
métodos avalia para a comparação de valores nos objetos independentemente dos dois objetos se referirem ou não à mesma instância. Como objetos iguais devem ter códigos hash iguais, é necessário substituir o método hashCode()
também.
Desde que String é um objeto em Java, devemos sempre usar o método equals()
para comparar duas strings em Java. Isto funciona desde que o método String
class overrides equals()
do método Object
class.
Como evidenciado pelo programa acima, comparar duas strings usando ==
e equals()
método retorna saída diferente. Isto é porque ==
está realizando uma comparação de referência, ou seja, comparando se duas variáveis se referem ao mesmo objeto ou não. Como estamos criando dois novos objetos String
usando String
construtor, eles não irão compartilhar a mesma referência e s1 == s2
retorna falso. Portanto, nunca devemos usar ==
operador para comparar duas strings.
Por outro lado, equals()
método de String
classe compara o conteúdo do array de caracteres com suporte e retorna um valor booleano como resultado da comparação.
No entanto, abaixo do código dá resultados diferentes. Isto é porque os literais String são armazenados em String constant pool, e ambos s1 & s2 irão compartilhar a mesma referência. Então s1 == s2
retorna verdadeiro.
>
> (6 votos, média: 5,00 de 5)
Tanques de leitura.