logo

Diferencia entre comparar cadenas usando el método == y .equals() en Java

Ambos método igual() y el == operador se utilizan para comparar dos objetos en Java.

El Método Java cadena igual () , compara dos cadenas y devuelve verdadero si todos los caracteres coinciden en ambas cadenas; en caso contrario, devuelve falso.



El == operador compara la ubicación de referencia o memoria de objetos en un montón, ya sea que apunten a la misma ubicación o no.
Siempre que creamos un objeto usando el operador nuevo , creará un nueva ubicación de memoria para ese objeto. Entonces usamos el operador == para verificar que la ubicación de la memoria o la dirección de dos objetos sean iguales o no.

En general, tanto los operadores iguales() como == en Java se utilizan para comparar objetos para 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 un método y el otro es el operador.
  2. Podemos usar operadores == para comparar referencias ( comparación de direcciones ) y el método .equals() para comparación de contenido . En palabras simples, == verifica si ambos objetos apuntan a la misma ubicación de memoria mientras que .equals() evalúa la comparación de valores en los objetos.
  3. Si una clase no anular el método igual , entonces, de forma predeterminada, utiliza el método igual (Objeto o) de la clase principal más cercana que haya anulado este método. **Ver ¿Por qué anular el método equals(Object) y hashCode()? en detalle.

Ejemplo:

Método String equals() y operador == en Java.



Java






// Java program to understand> // the concept of == operator> public> class> Test {> >public> static> void> main(String[] args)> >{> >String s1 =>'HELLO'>;> >String s2 =>'HELLO'>;> >String s3 =>new> String(>'HELLO'>);> >System.out.println(s1 == s2);>// true> >System.out.println(s1 == s3);>// false> >System.out.println(s1.equals(s2));>// true> >System.out.println(s1.equals(s3));>// true> >}> }>

>

>

Producción

true false true true>

Explicación: Aquí creamos dos objetos, a saber, s1 y s2.

  • Tanto s1 como s2 se refieren a los mismos objetos.
  • Cuando usamos el operador == para comparar s1 y s2, el resultado es verdadero ya que ambos tienen las mismas direcciones en el cadena piscina constante.
  • Usando iguales, el resultado es verdadero porque solo compara los valores dados en s1 y s2.

Grupo de cadenas de Java

s1 = HOLA

s2 = HOLA

lenguaje maravilloso

Montón de Java

s3 = HOLA

Entendamos a ambos operadores en detalle:

Operador de igualdad(==)

Podemos aplicar operadores de igualdad para cada tipo primitivo, incluido el tipo booleano. También podemos aplicar operadores de igualdad para tipos de objetos.

Ejemplo:

== operador en Java.

Java




// Java program to illustrate> // == operator for compatible data> // types> class> Test {> >public> static> void> main(String[] args)> >{> >// integer-type> >System.out.println(>10> ==>20>);> >// char-type> >System.out.println(>'a'> ==>'b'>);> >// char and double type> >System.out.println(>'a'> ==>97.0>);> >// boolean type> >System.out.println(>true> ==>true>);> >}> }>

>

>

Producción

false false true true>

Si aplicamos == para tipos de objetos entonces, hay debería haber compatibilidad entre tipos de argumentos (ya sea de niño a padre o de padre a niño o del mismo tipo). De lo contrario, obtendremos un error en tiempo de compilación.

Ejemplo:

Java




// Java program to illustrate> // == operator for incompatible data types> class> Test {> >public> static> void> main(String[] args)> >{> >Thread t =>new> Thread();> >Object o =>new> Object();> >String s =>new> String(>'GEEKS'>);> >System.out.println(t == o);> >System.out.println(o == s);> >// Uncomment to see error> >System.out.println(t==s);> >}> }>

>

>

Producción:

false false // error: incomparable types: Thread and String>

Método Java String es igual()

En Java, el Método cadena igual() compara las dos cadenas dadas en función de los datos/contenido de la cadena. Si todo el contenido de ambas cadenas es el mismo, devuelve verdadero . Si no todos los caracteres coinciden, entonces devuelve falso .

Sintaxis:

Sintaxis : público booleano es igual (Objeto otroObjeto)

Parámetro :

sql seleccionar como
  • otroObjeto- Cadena a comparar

Devoluciones:

  • valor booleano :
    • verdadero- Si las cadenas son iguales
    • FALSO- si las cadenas no son iguales

Ejemplo:

Método cadena igual () en Java

Java




public> class> Test {> >public> static> void> main(String[] args)> >{> >Thread t1 =>new> Thread();> >Thread t2 =>new> Thread();> >Thread t3 = t1;> >String s1 =>new> String(>'GEEKS'>);> >String s2 =>new> String(>'GEEKS'>);> >System.out.println(t1 == t3);> >System.out.println(t1 == t2);> >System.out.println(s1 == s2);> >System.out.println(t1.equals(t2));> >System.out.println(s1.equals(s2));> >}> }>

>

>

Producción:

true false false false true>

Explicación: Aquí, utilizamos el método .equals para comprobar si dos objetos contienen los mismos datos o no.

  • En el ejemplo anterior, creamos 3 objetos Thread y 2 objetos String.
  • En la primera comparación, comprobamos si t1 == t3 o no. Como sabemos ambos t1 y t3 apuntan a la mismo objeto . Por eso vuelve verdadero.
  • En la segunda comparación, usamos el operador == para comparar los objetos de cadena y no el contenido de los objetos. Aquí, ambos objetos son diferentes y, por tanto, el resultado de esta comparación es Falso.
  • Cuando comparamos 2 objetos String mediante el operador igual (), entonces estamos verificando si ambos objetos contienen los mismos datos o no.
  • Ambos objetos contienen la misma cadena, es decir, GEEKS. Por eso vuelve verdadero.

Lea también:

  • Método Character.equals() en Java con ejemplos
  • ==, es igual a(), compareTo(), es igual aIgnoreCase() y compara()

Conclusión

El método Java string equals() y el operador == se utilizan para comparar cadenas en Java. En este tutorial hemos cubierto el operador == y el método String equals() en Java con ejemplos.

  Read More     String Methods in Java>

Diferencia entre el método == y .equals(): preguntas frecuentes

1. ¿Cuál es la diferencia entre str1 == str2 y str1 es igual a str2?

En Java, str1==str2 devolverá verdadero si str1 y str2 son cadenas con el mismo contenido. Esto se debe a que las cadenas con el mismo contenido se almacenan en la misma ubicación.

str1.equals(str2) devolverá verdadero si str1 y str 2 son objetos de cadena diferentes, pero tienen el mismo contenido.

2. ¿Cuál es la diferencia entre == e igual en la comparación de cadenas?

El método cadena igual() compara dos cadenas y devuelve verdadero si todos los caracteres coinciden en ambas cadenas; en caso contrario, devuelve falso.

El operador == compara la ubicación de referencia o memoria de los objetos en un montón, ya sea que apunten a la misma ubicación o no.

3. ¿Cuáles son las reglas del método igual ()?

  1. Reflexividad: Para cualquier objeto x, x.equals(x) siempre debe devolver verdadero.
  2. Simetría : Si x.equals(y) devuelve verdadero, entonces y.equals(x) también debe devolver verdadero.
  3. Transitividad : Si x.equals(y) e y.equals(z) son ambos verdaderos, entonces x.equals(z) también debe ser verdadero.
  4. Consistencia : Múltiples invocaciones de x.equals(y) deberían devolver el mismo resultado.
  5. No nulidad: El método equals() nunca debería devolver verdadero en comparación con nulo.