¿Cuál es la diferencia entre eqauls() y == en JAVA?
Por ejemplo, 2 objetos de cadena
String s1 = new String("str"); p >
String s2 = new String("str");
Si se compara usando el símbolo ==, devolverá falso porque las direcciones de los dos objetos creados no están en la misma ubicación en memoria.
La situación con iguales es más complicada, es un método de la clase java.lang.Object. Dado que todas las clases en Java heredan de Object de forma predeterminada, todas las clases tienen este método.
Esto está escrito en el código fuente de la clase Objeto.
public boolean equals(Object obj) {
return (this == obj);
}
También usa == Los símbolos realizan comparaciones de direcciones de memoria.
público booleano es igual (Objeto y Objeto) {
if (this == unObjeto) {
devuelve verdadero;
} p>
p>
if (una instancia de Objeto de Cadena) {
Cadena otra Cadena = (Cadena)unObjeto;
int n = recuento;
if (n = = otraCadena.count) {
char v1[] = valor;
char v2[] = otraCadena.valor;
int i = desplazamiento;
int j = otraCadena.offset;
while (n-- ! = 0) {
if (v1[i++] != v2[j++])
Devuelve falso;
}
Devuelve verdadero;
}
}
}
Devuelve falso;
}
Los métodos que no utilizan el símbolo == para comparar valores equivalentes en cadenas también realizarán comparaciones de valores.
Por lo tanto, la función específica del método igual depende de cómo la clase actual implementa la sobrecarga de métodos en la clase principal. Si el método no está sobrecargado, es equivalente al símbolo ==.