Cómo comparar dos cadenas en Java
⚡ Resumen inteligente
Comparando dos cadenas en Java Esto se puede lograr con varios métodos que comparan una secuencia de caracteres para comprobar su igualdad o el orden. Este recurso explica siete enfoques, incluyendo `equals` de cadenas, `equals` de objetos, `compareTo`, los métodos de `StringUtils`, el operador `==` y un método de comparación personalizado, cada uno con ejemplos.

Métodos para comparar cadenas en Java
Java proporciona diferentes métodos que puede aprovechar para comparar dos cadenas en Java. Comparación de cadenas en Java es una característica que hace coincidir una secuencia de caracteres con una cadena.
Para aprender a comparar cadenas en JavaPuedes utilizar los métodos proporcionados por las siguientes clases:
- Clase String del paquete java.lang.
- Objetos de la clase del paquete java.util.
- Clase StringUtils del paquete org.apache.commons.lang3.
La mayoría de estos Java Los métodos de comparación de cadenas incluyen soluciones para ignorar las mayúsculas y minúsculas. En este tutorial, aprenderás los diferentes métodos que puedes usar para comparar dos cadenas.
Método 1: método de cadena igual ()
El Java Cordón método equals () compara dos objetos de cadena para valores de cadena iguales.
Sintaxis:
public boolean equals(Object anObject)
Parámetros del método igual ():
anObject: la cadena de argumento para comparar cadenas.
tipos de retorno del método igual ()
- Devuelve verdadero si la cadena literal proporcionada es la misma que la primera cadena.
- Devuelve falso si la primera cadena no es la misma que la cadena del argumento.
Ejemplo:
public class CompareTwoStrings {
public static void main(String[] args) {
String stringOne = "Guru99";
String stringTwo = "Guru99";
System.out.println("is Guru99 equal to Guru99: "+stringOne.equals(stringTwo));
String stringThree = "GURU99";
System.out.println("is Guru99 equal to GURU99: "+stringOne.equals(stringThree));
}
}
Rendimiento esperado:
is Guru99 equal to Guru99: true is Guru99 equal to GURU99: false
Explicación:
- Obtuviste falso en el último resultado porque el objeto especificado tiene un caso diferente.
Nota: Utilice el método equals() de la cadena para comparar cadenas que distingan entre mayúsculas y minúsculas. Utilice el método equalsIgnoreCase para comparar objetos de cadena sin tener en cuenta las mayúsculas y minúsculas.
Método 2: Método de objetos iguales ()
El Java Objetos iguales() El método compara dos objetos de cadena para encontrar si tienen los mismos valores.
Sintaxis:
public static boolean equals(Object a, Object b)
parámetros del método igual ()
a: cadena de argumento para el primer objeto de cadena.
b: cadena de argumento para el segundo objeto de cadena.
tipos de retorno del método igual ()
- Devuelve verdadero si los literales de la cadena son iguales. Pasar un valor nulo en los dos argumentos también devolverá verdadero.
- Devuelve falso si los literales de la cadena no son iguales.
Ejemplo:
import java.util.Objects; public class CompareTwoStrings { public static void main(String[] args) { String stringOne = "Guru99"; String stringTwo = "Guru99"; System.out.println("is Guru99 equal to Guru99: " + Objects.equals(stringOne, stringTwo)); String stringThree = null; String stringFour = null; System.out.println("is Guru99 equal to Guru99: " + Objects.equals(stringThree, stringFour)); } }
Salida:
is Guru99 equal to Guru99: true is Guru99 equal to Guru99: true
Explicación:
En este ejemplo, se puede observar que el resultado es un valor booleano verdadero, ya que las cadenas comparadas son iguales.
Método 3: método String compareTo()
El Java Comparar cadena con() El método compara dos cadenas en orden alfabético. Generalmente se lo denomina orden lexicográfico.
Sintaxis:
public int compareTo(String str)
Parámetros del método compareTo()
str: la cadena que se va a comparar con la cadena actual.
El método compareTo() devuelve
- 0: devuelve cero si el objeto especificado es igual a la cadena actual.
- < 0: devuelve un número menor que cero si esta cadena es menor que el objeto especificado.
- > 0: devuelve un número mayor que cero si esta cadena excede la cadena proporcionada.
Ejemplo:
public class CompareTwoStrings {
public static void main(String[] args) {
String stringOne = "Guru99";
String stringTwo = "Guru99";
System.out.println("is Guru99 equal to Guru99: " + stringOne.compareTo(stringTwo));
String stringThree = "GURU99";
// u = 117, U = 85, result = 117-85 = 32
System.out.println("is Guru99 equal to GURU99: " + stringOne.compareTo(stringThree));
}
}
Rendimiento esperado:
is Guru99 equal to Guru99: 0 is Guru99 equal to GURU99: 32
Explicación:
El primer resultado devuelve un valor de cero, ya que la primera y la segunda cadena son iguales.
El segundo resultado devuelve un valor de treinta y dos, ya que los caracteres son diferentes.
Nota: Para ignorar las mayúsculas y minúsculas, puede utilizar el método “compareToIgnoreCase”.
Método 4: método StringUtils es igual ()
El Java StringUtils es igual() El método compara la igualdad de dos secuencias de caracteres.
Asegúrese de haber agregado la biblioteca “org.apache.commons.lang3” a su programa. Esto le permitirá comparar cadenas utilizando los métodos de StringUtils.
Para proyectos Maven, use esto guía para agregar la biblioteca al proyecto.
Sin embargo, si desea agregar la biblioteca sin ninguna herramienta de compilación, utilice esto guía.
Sintaxis:
public static boolean equals(CharSequence cs1, CharSequence cs2)
Parámetros del método StringUtils es igual ()
- cs1: una secuencia de caracteres para el primer argumento.
- cs2: una secuencia de caracteres para el segundo argumento.
El método StringUtils es igual () devuelve
- Devuelve verdadero si la comparación de cadenas es igual. También se aplica si se pasa un valor nulo en los dos argumentos.
- Devuelve falso si la comparación de cadenas no es igual.
Ejemplo:
import org.apache.commons.lang3.StringUtils; public class CompareTwoStrings { public static void main(String[] args) { String stringOne = "Guru99"; String stringTwo = "Guru99"; System.out.println("is Guru99 equal to Guru99: " + StringUtils.equals(stringOne, stringTwo)); String stringThree = "GURU99"; System.out.println("is Guru99 equal to GURU99: " + StringUtils.equals(stringOne, stringThree)); } }
Salida:
is Guru99 equal to Guru99: true is Guru99 equal to GURU99: false
Explicación:
Dado que el contenido de la primera y segunda cadena es igual, el resultado devuelve verdadero.
Puede utilizar el método "equalsIgnoreCase" para ignorar el caso.
Método 5: método StringUtils es igual aAny()
El Java StringUtils es igual a Cualquier() El método comprueba si existe una cadena en los argumentos.
Sintaxis:
public static boolean equalsAny(CharSequence string, CharSequence... searchStrings)
StringUtils es igual a los parámetros del método Any()
- cadena: el valor de cadena para el primer argumento. El argumento también puede tener un valor nulo.
- searchStrings: un conjunto de argumentos de cadena para que el método encuentre si la primera cadena de argumento está presente.
El método StringUtils es igual a Any() devuelve
- Devuelve verdadero si la cadena a buscar existe en el número variable de cadenas de búsqueda. Esto se aplica si ambos argumentos son nulos.
- Devuelve falso si la cadena a buscar no coincide con ninguna cadena en el número variable de cadenas de búsqueda.
Ejemplo:
import org.apache.commons.lang3.StringUtils; public class CompareTwoStrings { public static void main(String[] args) { String stringOne = "Guru99"; String[] stringTwo = new String[] { "Guru99", "JavaGuru99" }; System.out.println("is Guru99 available: " + StringUtils.equalsAny(stringOne, stringTwo)); String[] stringThree = new String[] { "GURU99", "JavaGuru99" }; System.out.println("is GURU99 available: " + StringUtils.equalsAny(stringOne, stringThree)); } }
Salida:
is Guru99 available: true is GURU99 available: false
Explicación:
Dado que los contenidos de la primera cadena y la segunda cadena son iguales, el resultado devuelve verdadero. Puede utilizar el método "equalsAnyIgnoreCase" para ignorar el caso.
Método 6: usar el operador ==
El operador == en cadenas verifica si las referencias de objetos tienen la misma dirección.
Ejemplo:
public class CompareTwoStrings {
public static void main(String[] args) {
String stringOne = "Guru99";
String stringTwo = "Guru99";
System.out.println("is Guru99 == to Guru99: " + (stringOne == stringTwo));
String stringThree = "GURU99";
System.out.println("is Guru99 == to GURU99: " + (stringOne == stringThree));
}
}
Rendimiento esperado:
is Guru99 == to Guru99: true is Guru99 == to GURU99: false
Explicación:
- El primer resultado devuelve un valor booleano verdadero. Las cadenas con el mismo contenido se añaden al mismo grupo de cadenas, por lo que comparten una misma dirección.
- El segundo resultado devuelve un valor booleano de falso. Los objetos tienen contenidos diferentes, lo que genera conjuntos de cadenas distintos. Esto significa que las cadenas tienen referencias de objeto separadas; por lo tanto, el resultado es falso.
Método 7: crear un método personalizado para comparar dos cadenas en Java
Cree un método que compare dos cadenas utilizando el orden lexicográfico.
Sintaxis:
public static int compareTwoStrings(String str1, String str2)
Parámetros del método personalizado
- str1: la cadena a comparar.
- str2: la cadena con la que comparar.
Devoluciones de métodos personalizados
- 0: devuelve cero si la primera cadena es igual a la segunda cadena.
- < 0: devuelve un número menor que cero si la primera cadena es menor que la segunda.
- > 0: devuelve un número mayor que cero si la primera cadena es mayor que la segunda.
Ejemplo:
public class CompareTwoStrings {
public static int compareTwoStrings(String stringOne, String stringTwo) {
int lengthOfStringOne = stringOne.length();
int lengthOfStringTwo = stringTwo.length();
int minStringLength = Math.min(lengthOfStringOne, lengthOfStringTwo);
for (int i = 0; i < minStringLength; i++) {
char stringOneCharValue = stringOne.charAt(i);
char stringTwoCharValue = stringTwo.charAt(i);
if (stringOneCharValue != stringTwoCharValue) {
return stringOneCharValue - stringTwoCharValue;
}
}
if (lengthOfStringOne != lengthOfStringTwo) {
return lengthOfStringOne - lengthOfStringTwo;
} else {
return 0;
}
}
public static void main(String[] args) {
String stringOne = "Guru99";
String stringTwo = "Guru99";
System.out.println("is Guru99 equal to Guru99: " + compareTwoStrings(stringOne, stringTwo));
}
}
Rendimiento esperado:
is Guru99 equal to Guru99: 0
Explicación:
El resultado arrojó un valor de cero, lo que significa que la función personalizada funciona como se esperaba.
