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:
- La principal diferencia entre el método .equals() y el == operador es que uno es un método y el otro es el operador.
- 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.
- 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 ()?
- Reflexividad: Para cualquier objeto x, x.equals(x) siempre debe devolver verdadero.
- Simetría : Si x.equals(y) devuelve verdadero, entonces y.equals(x) también debe devolver verdadero.
- Transitividad : Si x.equals(y) e y.equals(z) son ambos verdaderos, entonces x.equals(z) también debe ser verdadero.
- Consistencia : Múltiples invocaciones de x.equals(y) deberían devolver el mismo resultado.
- No nulidad: El método equals() nunca debería devolver verdadero en comparación con nulo.