Si eres como yo, cuando comencé a usar Java, quería usar el operador "==" para probar si dos instancias de String eran iguales, pero para bien o para mal, esa no es la forma correcta de hacerlo en Java.
En este tutorial demostraré varias formas diferentes de comparar correctamente las cadenas de Java, comenzando con el enfoque que uso la mayor parte del tiempo. Al final de este tutorial de comparación de cadenas de Java, también analizaré por qué el operador "==" no funciona al comparar cadenas de Java.
Opción 1: comparación de cadenas de Java con el método de igualdad
La mayoría de las veces (tal vez el 95% del tiempo) comparo cadenas con el método de igualdad de la clase de cadena de Java, así:
if (string1.equals(string2))
Este método de cadenas iguales examina las dos cadenas de Java, y si contienen exactamente la misma cadena de caracteres, se consideran iguales.
Echando un vistazo a un ejemplo rápido de comparación de cadenas con el método de igualdad, si se ejecutara la siguiente prueba, las dos cadenas no se considerarían iguales porque los caracteres no son exactamente iguales (el caso de los caracteres es diferente):
String string1 = "foo";
String string2 = "FOO";
if (string1.equals(string2))
{
// this line will not print because the
// java string equals method returns false:
System.out.println("The two strings are the same.")
}
Pero, cuando las dos cadenas contienen exactamente la misma cadena de caracteres, el método igual devolverá verdadero, como en este ejemplo:
String string1 = "foo";
String string2 = "foo";
// test for equality with the java string equals method
if (string1.equals(string2))
{
// this line WILL print
System.out.println("The two strings are the same.")
}
Opción 2: comparación de cadenas con el método equalsIgnoreCase
En algunas pruebas de comparación de cadenas, querrá ignorar si las cadenas son mayúsculas o minúsculas. Cuando desee probar la igualdad de sus cadenas de esta manera que no distinga entre mayúsculas y minúsculas, use el método equalsIgnoreCase de la clase String, así:
String string1 = "foo";
String string2 = "FOO";
// java string compare while ignoring case
if (string1.equalsIgnoreCase(string2))
{
// this line WILL print
System.out.println("Ignoring case, the two strings are the same.")
}
Opción 3: comparación de cadenas de Java con el método compareTo
También hay una tercera forma, menos común, de comparar cadenas Java, y es con el método compareTo de la clase String. Si las dos cadenas son exactamente iguales, el método compareTo devolverá un valor de 0 (cero). Aquí hay un ejemplo rápido de cómo se ve este enfoque de comparación de cadenas:
String string1 = "foo bar";
String string2 = "foo bar";
// java string compare example
if (string1.compareTo(string2) == 0)
{
// this line WILL print
System.out.println("The two strings are the same.")
}
Mientras escribo sobre este concepto de igualdad en Java, es importante tener en cuenta que el lenguaje Java incluye un método igual en la clase base de objetos Java. Siempre que esté creando sus propios objetos y desee proporcionar un medio para ver si dos instancias de su objeto son "iguales", debe anular (e implementar) este método igual en su clase (de la misma manera que el lenguaje Java proporciona este comportamiento de igualdad / comparación en el método String es igual).
Es posible que desee echar un vistazo a this ==, .equals (), compareTo () y compare ()