La Java String compareTo () se utiliza para comparar lexicográficamente dos cadenas. Cada carácter de ambas cadenas se convierte en un valor Unicode para su comparación. Si ambas cadenas son iguales, este método devuelve 0; de lo contrario, devuelve un valor positivo o negativo. El resultado es positivo si la primera cadena es lexicográficamente mayor que la segunda cadena; de lo contrario, el resultado sería negativo.
Método Java String compareTo ()
Tenemos dos formas de utilizar el método compareTo ():
int compareTo(String str)
Aquí la comparación es entre cadenas literales. Por ejemplo string1.compareTo(string2)
donde cadena1 y cadena2 son literales de cadena.
int compareTo(Object obj)
Aquí la comparación es entre una cadena y un objeto. Por ejemplo string1.compareTo("Just a String object")
donde cadena1 es un literal y su valor se compara con la cadena especificada en el argumento del método.
Ejemplo del método Java String compareTo ()
Aquí tenemos tres cadenas y las estamos comparando entre sí usando compareTo()
método.
public class CompareToExample { public static void main(String args[]) { String str1 = "String method tutorial"; String str2 = "compareTo method example"; String str3 = "String method tutorial"; int var1 = str1.compareTo( str2 ); System.out.println("str1 & str2 comparison: "+var1); int var2 = str1.compareTo( str3 ); System.out.println("str1 & str3 comparison: "+var2); int var3 = str2.compareTo("compareTo method example"); System.out.println("str2 & string argument comparison: "+var3); } }
Producción:
str1 & str2 comparison: -16 str1 & str3 comparison: 0 str2 & string argument comparison: 0
Cómo encontrar la longitud de una cadena usando el método String compareTo ()
Aquí veremos un ejemplo interesante de cómo usar el método compareTo () para encontrar la longitud de una cadena. Si comparamos una cadena con un archivo cuerda vacía utilizando el método compareTo (), el método devolverá la longitud de la cadena no vacía.
Por ejemplo:
String str1 = "Negan"; String str2 = ""; //empty string //it would return the length of str1 in positive number str1.compareTo(str2); // 5 //it would return the length of str1 in negative number str2.compareTo(str1); //-5
En el fragmento de código anterior, la segunda declaración compareTo () devolvió la longitud como un número negativo, esto se debe a que comparamos la cadena vacía con str1, mientras que en la primera declaración compareTo (), comparamos str1 con una cadena vacía.
Veamos el ejemplo completo:
public class JavaExample { public static void main(String args[]) { String str1 = "Cow"; //This is an empty string String str2 = ""; String str3 = "Goat"; System.out.println(str1.compareTo(str2)); System.out.println(str2.compareTo(str3)); } }
Producción:
¿El método Java String compareTo () distingue entre mayúsculas y minúsculas?
En este ejemplo, compararemos dos cadenas usando el método compareTo (). Ambas cadenas son iguales, sin embargo, una de las cadenas está en mayúsculas y la otra en minúsculas.
public class JavaExample { public static void main(String args[]) { //uppercase String str1 = "HELLO"; //lowercase String str2 = "hello";; System.out.println(str1.compareTo(str2)); } }
Producción:
Como puede ver, la salida no es cero, lo que significa El método compareTo () distingue entre mayúsculas y minúsculas. Sin embargo, tenemos un método de comparación que no distingue entre mayúsculas y minúsculas en la clase de cadena, que es compareToIgnoreCase (), este método ignora el caso al comparar dos cadenas.