logo

Comparar dos cadenas en Java

La cadena es una secuencia de caracteres. En Java, los objetos de String son inmutables, lo que significa que son constantes y no se pueden cambiar una vez creados.

fecha a cadena

Métodos para comparar cadenas en Java

A continuación se presentan cinco formas de comparar dos Instrumentos de cuerda en Java:

  1. Usando la función definida por el usuario
  2. Usando String.equals()
  3. Usando String.equalsIgnoreCase()
  4. Usando objetos.equals()
  5. Usando String.compareTo()

1. Usando la función definida por el usuario:

Defina una función para comparar valores con las siguientes condiciones:



  1. si (cadena1> cadena2) devuelve un valor positivo .
  2. si ambas cadenas son iguales lexicográficamente, es decir (cadena1 == cadena2), devuelve 0 .
  3. si (cadena1 valor negativo .

2. Usando String.equals():

En Java, el método string equals() compara las dos cadenas dadas en función de los datos/contenido de la cadena. Si todo el contenido de ambas cadenas es igual, devuelve verdadero. Si algún carácter no coincide, devuelve falso.

Sintaxis:

str1.equals(str2);>

Aquí str1 y str2 son las cadenas que se van a comparar.

Ejemplos:

  Input 1:   techcodeview.com   Input 2:   Practice   Output:   false   Input 1:   Geeks   Input 2:   Geeks   Output:   true   Input 1:   geeks   Input 2:   Geeks   Output:   false>

Programa:

Java
// Java program to Compare two strings // lexicographically public class GFG {  public static void main(String args[])  {  String string1 = new String('Geeksforgeeks');  String string2 = new String('Practice');  String string3 = new String('Geeks');  String string4 = new String('Geeks');  String string5 = new String('geeks');  // Comparing for String 1 != String 2  System.out.println('Comparing ' + string1 + ' and '  + string2 + ' : '  + string1.equals(string2));  // Comparing for String 3 = String 4  System.out.println('Comparing ' + string3 + ' and '  + string4 + ' : '  + string3.equals(string4));  // Comparing for String 4 != String 5  System.out.println('Comparing ' + string4 + ' and '  + string5 + ' : '  + string4.equals(string5));  // Comparing for String 1 != String 4  System.out.println('Comparing ' + string1 + ' and '  + string4 + ' : '  + string1.equals(string4));  } }>

Producción
Comparing Geeksforgeeks and Practice : false Comparing Geeks and Geeks : true Comparing Geeks and geeks : false Comparing Geeksforgeeks and Geeks : false>

3. Usando String.equalsIgnoreCase():

El Cadena.equalsIgnoreCase() El método compara dos cadenas independientemente del caso (inferior o superior) de la cadena. Este método devuelve verdadero si el argumento no es nulo y el contenido de ambas cadenas es el mismo ignorando mayúsculas y minúsculas; de lo contrario, es falso. Sintaxis:

str2.equalsIgnoreCase(str1);>

Aquí str1 y str2 son las cadenas que se van a comparar.

Ejemplos:

  Input 1:   techcodeview.com   Input 2:   Practice   Output:   false   Input 1:   Geeks   Input 2:   Geeks   Output:   true   Input 1:   geeks   Input 2:   Geeks   Output:   true>

Programa:

Java
// Java program to Compare two strings // lexicographically public class GFG {  public static void main(String args[])  {  String string1 = new String('Geeksforgeeks');  String string2 = new String('Practice');  String string3 = new String('Geeks');  String string4 = new String('Geeks');  String string5 = new String('geeks');  // Comparing for String 1 != String 2  System.out.println(  'Comparing ' + string1 + ' and ' + string2  + ' : ' + string1.equalsIgnoreCase(string2));  // Comparing for String 3 = String 4  System.out.println(  'Comparing ' + string3 + ' and ' + string4  + ' : ' + string3.equalsIgnoreCase(string4));  // Comparing for String 4 = String 5  System.out.println(  'Comparing ' + string4 + ' and ' + string5  + ' : ' + string4.equalsIgnoreCase(string5));  // Comparing for String 1 != String 4  System.out.println(  'Comparing ' + string1 + ' and ' + string4  + ' : ' + string1.equalsIgnoreCase(string4));  } }>

Producción
Comparing Geeksforgeeks and Practice : false Comparing Geeks and Geeks : true Comparing Geeks and geeks : true Comparing Geeksforgeeks and Geeks : false>

4. Usando Objetos.equals() :

Objeto.equals(Objeto a, Objeto b) El método devuelve verdadero si los argumentos son iguales entre sí y falso en caso contrario. En consecuencia, si ambos argumentos son nulos, se devuelve verdadero y si exactamente un argumento es nulo, se devuelve falso. De lo contrario, la igualdad se determina utilizando el método igual () del primer argumento. Sintaxis:

public static boolean equals(Object a, Object b)>

Aquí a y b son los objetos de cadena que se van a comparar.

Ejemplos:

  Input 1:   techcodeview.com   Input 2:   Practice   Output:   false   Input 1:   Geeks   Input 2:   Geeks   Output:   true   Input 1:   null   Input 2:   null   Output:   true>

Programa:

Java
// Java program to Compare two strings // lexicographically import java.util.*; public class GFG {  public static void main(String args[])  {  String string1 = new String('Geeksforgeeks');  String string2 = new String('Geeks');  String string3 = new String('Geeks');  String string4 = null;  String string5 = null;  // Comparing for String 1 != String 2  System.out.println(  'Comparing ' + string1 + ' and ' + string2  + ' : ' + Objects.equals(string1, string2));  // Comparing for String 2 = String 3  System.out.println(  'Comparing ' + string2 + ' and ' + string3  + ' : ' + Objects.equals(string2, string3));  // Comparing for String 1 != String 4  System.out.println(  'Comparing ' + string1 + ' and ' + string4  + ' : ' + Objects.equals(string1, string4));  // Comparing for String 4 = String 5  System.out.println(  'Comparing ' + string4 + ' and ' + string5  + ' : ' + Objects.equals(string4, string5));  } }>

Producción
Comparing Geeksforgeeks and Geeks : false Comparing Geeks and Geeks : true Comparing Geeksforgeeks and null : false Comparing null and null : true>

5. Uso de String.compareTo() para comparar dos cadenas

Sintaxis de String compareTo()

int str1.compareTo(String str2)>

Laboral: Compara y devuelve los siguientes valores de la siguiente manera:

  1. si (cadena1> cadena2) devuelve un valor positivo .
  2. si ambas cadenas son iguales lexicográficamente, es decir (cadena1 == cadena2), devuelve 0 .
  3. si (cadena1 valor negativo .

A continuación se muestra la implementación del método anterior.

Java
// Java program to Compare two strings // Using String.compareTo()  import java.util.*; // Diver Class public class GFG {  public static void check(String string1, String string2)  {  if (string1.compareTo(string2)!=0) {  System.out.println(string1 + ' ' + string2  + ' : Not Equal');  }  else {  System.out.println(string1 + ' ' + string2  + ' : Equal');  }  }  // main function  public static void main(String args[])  {  String string1 = new String('Geeksforgeeks');  String string2 = new String('Geeks');  String string3 = new String('Geeks');  String string4 = ' ';  String string5 = ' ';  // Comparing for String 1 != String 2  check(string1, string2);  // Comparing for String 2 = String 3  check(string2, string3);  // Comparing for String 1 != String 4  check(string1, string4);  // Comparing for String 4 = String 5  check(string4, string5);  } }>

Producción
Geeksforgeeks Geeks : Not Equal Geeks Geeks : Equal Geeksforgeeks : Not Equal : Equal>

Nota: La cadena NULL no se puede pasar como argumento al método compareTo().

Para saber más sobre el tema consulte el Cadena.compareTo() artículo.

¿Por qué no utilizar == para comparar cadenas?

En general, ambos es igual() y == Los operadores en Java se utilizan para comparar objetos y verificar la igualdad, pero estas son algunas de las diferencias entre los dos:

  1. La principal diferencia entre el método .equals() y el operador == es que uno es el método y el otro es el operador.
  2. Se pueden usar operadores == para comparación de referencias (comparación de direcciones) y el método .equals() para comparación de contenido .
    • Tanto s1 como s2 se refieren a objetos diferentes.
    • Cuando se usa el operador == para la comparación s1 y s2, el resultado es falso ya que ambos tienen direcciones diferentes en la memoria.
    • Usando iguales, el resultado es verdadero porque solo compara los valores dados en s1 y s2.

Para saber más sobre el tema consulte el comparación de cadenas artículo.