Hay tres opciones prácticas para comparar strings entre sí. Además de la opción de Java equals(), puedes usar el operador == y compareTo().

¿Cómo se comparan strings en Java?

Si bien comparar tipos de datos pri­mi­ti­vos en Java es bastante sencillo con el operador de Java ==, con los strings de Java la cosa se complica li­ge­ra­me­n­te. El operador == puede uti­li­zar­se también para eso, pero no comparará el contenido de los strings sino solo la re­fe­re­n­cia del objeto co­rre­s­po­n­die­n­te. En algunos casos puede ser su­fi­cie­n­te o incluso deseado, pero en otros se ne­ce­si­ta­rá otro método para conseguir el resultado que se quiere. Por suerte, este lenguaje de pro­gra­ma­ción ofrece múltiples opciones. Las si­guie­n­tes tres son es­pe­cia­l­me­n­te prácticas y comunes:

  • Java equals()
  • Java compareTo() para strings
  • Java operador ==
Web Hosting
El hosting que crece con tu proyecto
  • Tiempo de actividad de 99.99 % y seguridad ga­ra­n­ti­za­da
  • Aumenta el re­n­di­mie­n­to según el tráfico de tu página web
  • Incluye dominio, SSL, e-mail y soporte 24/7

El método de Java equals()

La manera más sencilla y práctica de comparar el contenido de dos strings es con el método equals() en Java. Lo que hace realmente es comparar ambos valores. Si coinciden exac­ta­me­n­te, el método confirma con “true”. Si difieren en algo, devuelve un “false”. Esta es la sintaxis del método:

public boolean equals(Objeto otroObjeto)
java

Con un simple ejemplo puedes entender el fu­n­cio­na­mie­n­to de este método. Hemos creado tres strings y co­m­pa­ra­mos el primero con los otros dos. En la práctica, se ve así:

public class Main {
	public static void main(String[] args) {
	String string1 = "Esto es un String";
	String string2 = "Esto es un String";
	String string3 = "Esto es un String diferente";
	System.out.println(string1.equals(string2));
	System.out.println(string1.equals(string3));
	}
}
java

Si ahora se imprime este código con el comando Java System.out.println, se recibe esto:

true
false
java

string1 y string2 son idénticos, pero string3 es diferente a los otros dos. Aunque en este ejemplo se reconozca a simple vista, hay strings que ini­cia­l­me­n­te pueden parecerse mucho pero acabar siendo di­fe­re­n­tes. Java equals() es una he­rra­mie­n­ta útil para evitar este fallo.

Java compareTo() para strings

El segundo método es algo más co­m­pli­ca­do pero también fiable. compareTo() con Java compara strings le­xi­co­grá­fi­ca­me­n­te según el valor de Unicode de cada carácter de un string. Los ca­ra­c­te­res se comparan entre sí y emparejan. Si un string coincide con el otro, el método devuelve 0 como respuesta. Si el primer string es más corto que el segundo, obtienes un valor negativo. Si por el contrario es más largo, obtienes un valor positivo. Esta es la sintaxis del método:

public int compareTo(String andererString)
java

A co­n­ti­nua­ción, verás cómo funciona con un ejemplo. Creamos de nuevo tres strings y co­m­pa­ra­mos el primero con los otros dos. El código es el siguiente:

public class Main {
	public static void main(String[] args) {
	String string1 = "Esto es un String";
	String string2 = "Esto es un String";
	String string3 = "Esto es un String diferente";
	System.out.println(string1.compareTo(string2));
	System.out.println(string1.compareTo(string3));
	}
}
java

Si se imprime el código con System.out.println, se obtiene el siguiente resultado:

0
-20
java

Si quieres usar compareTo() en Java para comparar Strings ignorando las ma­yú­s­cu­las y mi­nú­s­cu­las, usa para ello compareToIgnoreCase(). Funciona de esta manera:

public class Main {
	public static void main(String[] args) {
	String string1 = "Esto es un String";
	String string2 = "Esto es un String";
	String string3 = "ESTO ES UN STRING";
	System.out.println(string1.compareToIgnoreCase(string2));
	System.out.println(string1.compareToIgnoreCase(string3));
	}
}
java

Como co­n­se­cue­n­cia, el resultado cambia:

0
0
java

El operador == de Java

Como se comenta arriba, en principio también puedes recurrir al operador == para comparar dos strings. Con ello se co­m­pa­ra­rán las re­fe­re­n­cias, no los valores reales. Ilu­s­tra­mos el fu­n­cio­na­mie­n­to con otro ejemplo:

public class Main {
	public static void main(String[] args) {
	String string1 = "Esto es un String";
	String string2 = "Esto es un String";
	String string3 = new String ("Esto es un String");
	System.out.println(string1==string2);
	System.out.println(string1==string3);
	}
}
java

Como string1 y string2 se refieren a la misma instancia, el operador devuelve “true”. El string3, en cambio, se refiere a otra instancia. Por tanto, devuelve el valor “false” aunque el valor o el texto que contienen los strings sea idéntico.

true
false
java
Ir al menú principal