La igualdad de objetos significa cuando dos objetos separados tienen los mismos valores/estado. Mientras que la igualdad de referencias significa cuando dos referencias de objetos apuntan al mismo objeto. El operador == se puede usar para verificar si dos referencias de objetos apuntan al mismo objeto. Para poder comparar dos objetos Java de la misma clase, la clase debe anular e implementar el método booleano equals(Object obj). El implementador decide qué valores deben ser iguales para considerar que dos objetos son iguales.
En Java, cuando se usa el operador “==” para comparar 2 objetos, verifica si los objetos se refieren al mismo lugar en la memoria. En otras palabras, verifica si los 2 nombres de objetos son básicamente referencias a la misma ubicación de memoria.
Java
import java.io.*; String obj1 = new String("xyz"); String obj2 = obj1; // now obj2 and obj1 reference the same place in memory if (obj1 == obj2) System.out.println("obj1==obj2 is True"); else System.out.println("obj1==obj2 is False");
Producción:
obj1==obj2 is True
Tenga en cuenta en el código anterior que obj2 y obj1 hacen referencia al mismo lugar en la memoria debido a esta línea: «String obj2=obj1;». Y debido a que “==” compara la referencia de memoria para cada objeto, devolverá verdadero.
El método equals se define en la clase Object, de la cual cada clase es descendiente directa o indirecta. De forma predeterminada, el método equals() en realidad se comporta igual que el operador “==”, lo que significa que verifica si ambos objetos hacen referencia al mismo lugar en la memoria. Pero, el método equals en realidad está destinado a comparar el contenido de 2 objetos y no su ubicación en la memoria.
La clase Java String en realidad anula la implementación predeterminada de equals() en la clase Object, y anula el método para que solo verifique los valores de las strings, no sus ubicaciones en la memoria. Esto significa que si llama al método equals() para comparar 2 objetos String, siempre que la secuencia real de caracteres sea igual, ambos objetos se consideran iguales.
Java
import java.io.*; String obj1 = new String("xyz"); String obj2 = new String("xyz"); if (obj1.equals(obj2)) System.out.println("obj1==obj2 is True"); else System.out.println("obj1==obj2 is False");
Producción:
obj1==obj2 is True
Publicación traducida automáticamente
Artículo escrito por akshaysobti15 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA