22 Votos

Java/Android: Comparación de String s1==s2 no funciona

Pregunta de Invitado | 16/04/2022 a las 19:51

Estoy tratando de comparar dos cadenas (strings) usando el operador "==" en Java para Android. Tengo el siguiente código:

String s1 = new String("abc");
String s2 = new String("abc");

if (s1 == s2) {
   // igual?!
} else {
   // no igual?!
}

No sé por qué, pero esta condición siempre devuelve "false" independiente de si s1 y s2 son iguales o no.

¿Cuál es mi error aquí? En todos los demás idiomas de programación, sé y estoy familiarizado, está funcionando exactamente así.

ResponderPositivoNegativo
2Mejor Respuesta2 Votos

En Java/Android, una String es un objeto. Cuando se utiliza el operador "==", Java está comprobando si los dos objetos son idénticos y no si su contenido es idéntico. Debido a su ejemplo, los objetos "s1" y "s2" no son idénticos, asi que la condición de IF siempre regresa "false".

Para comparar el contenido de dos cadenas, puede usar el método .equals(Object obj) para su comparación:

String s1 = new String("abc");
String s2 = new String("abc");
String s3 = s1;
 
if (s1.equals(s2)) { }  // true
if (s1 == s2) { }       // false 
if (s1 == s3) { }       // true

Además, en este ejemplo, he declarado la String s3 y la establece a s1. En este caso, en realidad, los objetos s1 y s3 son idénticos para que la condición con "==" sea "true" aquí.
16/04/2022 a las 20:41

ResponderPositivo Negativo
Responder

Temas Relacionados

JavaScript: window.location como String

Información | 0 Comentarios

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.