Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Comparación de Cadenas en Java | Cadenas
Introducción a Java

Comparación de Cadenas en Java

Desliza para mostrar el menú

La comparación es donde Java comienza a comportarse de manera un poco más "de bajo nivel" de lo esperado. Parece obvio que las cadenas podrían compararse de la misma manera que los números — usando ==. Después de todo, si dos cadenas parecen idénticas, ¿por qué no serían iguales?

El problema con ==

Si usas == con literales de cadena, al principio parece funcionar bien:

Main.java

Main.java

1234567891011
package com.example; public class Main { public static void main(String[] args) { String order1 = "Latte"; String order2 = "Latte"; System.out.println(order1 == order2); } }

Ambas variables apuntan al mismo objeto en el string pool interno de Java; cuando aparece el mismo literal nuevamente, Java reutiliza el existente. Por eso, == devuelve true.

Pero ahora cambiemos ligeramente cómo se crean las cadenas:

Main.java

Main.java

1234567891011
package com.example; public class Main { public static void main(String[] args) { String order1 = new String("Latte"); String order2 = new String("Latte"); System.out.println(order1 == order2); } }

Usar new String() le indica a Java que cree un objeto completamente separado cada vez, incluso si el contenido es idéntico. Como == compara direcciones de memoria, no el texto, devuelve false.

La regla clave: == no analiza el texto dentro de la cadena, sino que verifica si ambas variables apuntan al mismo objeto exacto en memoria.

equals() — Comparar el contenido real

Si necesitas comparar el texto real dentro de dos cadenas, utiliza .equals(). Ignora completamente la memoria y se enfoca solo en los caracteres:

Main.java

Main.java

1234567891011
package com.example; public class Main { public static void main(String[] args) { String order1 = new String("Latte"); String order2 = new String("Latte"); System.out.println(order1.equals(order2)); } }

Aunque order1 y order2 son objetos separados en memoria, .equals() compara su contenido y devuelve true.

Sensibilidad a mayúsculas y minúsculas con equals()

Java distingue entre mayúsculas y minúsculas, por lo que incluso una sola letra con diferente capitalización hace que las cadenas no sean iguales:

Main.java

Main.java

1234567891011
package com.example; public class Main { public static void main(String[] args) { String order1 = "Latte"; String order2 = "latte"; System.out.println(order1.equals(order2)); } }

"Latte" y "latte" se tratan como cadenas diferentes, por lo que el resultado es false.

equalsIgnoreCase() — Comparación sin importar mayúsculas o minúsculas

Para comparar cadenas ignorando las diferencias entre mayúsculas y minúsculas, utiliza .equalsIgnoreCase():

Main.java

Main.java

12345678910
package com.example; public class Main { public static void main(String[] args) { String order = "Latte"; System.out.println(order.equalsIgnoreCase("LATTE")); } }

.equalsIgnoreCase() considera "Latte" y "LATTE" como idénticos y devuelve true.

question mark

¿Qué compara == cuando se usa con Strings en Java?

Selecciona la respuesta correcta

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 4. Capítulo 5

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Sección 4. Capítulo 5
some-alt