Red de conocimiento informático - Material del sitio web - ¿Cuál es la diferencia entre eqauls() y == en JAVA?

¿Cuál es la diferencia entre eqauls() y == en JAVA?

Explique el símbolo ==, que compara el valor de la dirección de un objeto en la memoria,

Por ejemplo, 2 objetos de cadena

String s1 = new String("str");

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>

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 ==.