00 Votos

Java: Diferencia entre == y .equals()

Pregunta de Invitado | 25/09/2020 a las 09:44

En Java, parece que puede comparar una cadena / string de dos formas diferentes. Una vez con == y una vez con .equals().

He probado en ambos sentidos y ambos me dan los mismos resultados (TRUE si la cadena es idéntica, FALSE si no).

Entonces, ¿por qué existen dos métodos para hacer lo mismo? ¿O hay realmente una diferencia oculta y existen posibilidades en las que uno debería preferir una de las formas?

ResponderPositivoNegativo
1Mejor Respuesta1 Voto

La comparación con == y con .equals() solo conduce al mismo resultado si no solo el contenido de las variables comparadas es igual, sino también la referencia de los objetos comparados.

  • La comparación con == está probando una referencia idéntica
  • La comparación con .equals() está probando un contenido idéntico (también en caso de que la referencia sea diferente)

Por ejemplo, suponiendo que tiene dos variables de cadena que tienen el mismo contenido pero referencias diferentes, la comparación == devuelve, no obstante, false:

String a = new String("abc");
String b = new String("abc");
String c = a;

if (a == b) {}      // FALSE
if (a.equals(b)) {} // TRUE
if (b.equals(a)) {} // TRUE

if (a == c) {}      // TRUE
if (a.equals(c)) {} // TRUE
if (c.equals(a)) {} // TRUE

Las variables a y b son objetos independientes y, por lo tanto, también tienen referencias independientes diferentes aunque su contenido sea el mismo. Por lo tanto, la comparación a == b devuelve FALSE.

Si queremos comparar el contenido, estamos usando .equals(). Esto devuelve TRUE porque ambas cadenas tienen el valor "abc".

La string c tiene la misma reverencia que la string a. Por lo tanto, comparar tanto con == como con .equals() devuelve TRUE.
26/09/2020 a las 16:24

ResponderPositivo Negativo
Responder

Temas Relacionados

Aviso Importante

Por favor tenga en cuenta: Las contribuciones publicadas en askingbox.com son contribuciones de los usuarios y no deben reemplazar el asesoramiento profesional. No son verificados por independientes y no reflejan necesariamente la opinión de askingbox.com. Aprende más.

Participar

Haga su propia pregunta o escriba su propio artículo en askingbox.com. He aquí cómo.