Comparar cadenas con Java

Hace poco tiempo descubrí que no se pueden comparar cadenas en Java con el doble igual tradicional (hay situaciones en las que sí como que las dos variables String sean referencias al mismo objeto)

Para esto, un compañero de clase me comentó que la clase String tenía dos métodos para comparar cadenas, estos son comparteTo y compareToIgnoreCase aunque también se puede hacer con la función equals aunque está funciona de manera distinta.

Tanto compareTo como comparteToIgnoreCase funcionan de manera similar a la función de C strcmp y strncmp de string.h. Así, si son iguales devuelve 0, si la cadena es más pequeña que la pasada por parámetro devuelve un número menor de 0, tanto menor como la diferencia entre las dos cadenas, si por su lado es mayor la cadena que la pasada por parámetro entonces la diferencia es positiva. Con equals pasa algo distinto, equals no solo es una función para comparar cadenas si no para comparar que dos objetos, sean cuales sean tienen los mismos valores, para ello devuelve true si son iguales y false si no.

A continuación varios ejemplos.

String cad1=scan.nextLine();
String cad2=scan.nextLine();
if(cad1.comparteTo(cad2)>0){
  System.out.print(cad1 + " es más grande que " + cad2);
}
if(args[0].equals(OPCION1) || args[0].comparteToIgnoreCase(OPCION1)==0{
  funcion1();
}

Para más información visita https://docs.oracle.com/javase/8/docs/api/java/lang/String.html

Una respuesta a “Comparar cadenas con Java”

  1. Curiosa la forma en la que Java compara cadenas, aunque hablas de comparar en tamaño no?
    Por cierto, el segundo ejemplo es un poco complicado de entender

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *