Diferencia entre comparar con == y con equals() en Java
Alguien podría preguntarse que cual es la diferencia entre comparar objetos String utilizando el operador igual ( == ) y utilizando el método equals(). La respuesta es sencilla, pero hay que tener claros los conceptos:
- El operador == realiza la comparación a nivel de objeto. Es decir, determina si ambos objetos son iguales.
- El método equals() compara los caracteres dentro del objeto String.
Veamos un ejemplo:
public static void main(String[] args) {
String c1 = "Hola";
String c2 = new String(c1);
System.out.println(c1 + " == " + c2 + " -> " + (c1 == c2));
System.out.println(c1 + " equals " + c2 + " -> " + c1.equals(c2));
}
Si lo ejecutamos veremos que:
- c1 == c2 devuelve false (ambos objetos no son iguales).
- c1.equals(c2) devuelve true (sus caracteres son iguales: “Hola”).
Ahora vamos a instanciar un nuevo objeto apartir de c1 (exactamente como hemos hecho con c2). El nuevo objeto lo vamos a comparar con c2:
String c3 = c1;
System.out.println(c1 + " == " + c3 + " -> " + (c1 == c3));
Osea, hemos comparado dos objetos iguales y lo que devuelve sería ésto:
- c1 == c3 devuelve true.
Espero que haya quedado claro. Como siempre, para cualquier duda podéis utilizar los comentarios.
Fuente:
http://www.java-samples.com/showtutorial.php?tutorialid=221Tweet
8 Comentarios:
Claro, muchas gracias.
Gracias a tí por comentar. Saludos.
muy buen aporte
Gracias
De nada. Un saludo.
GRacias, me ayudo mucho.
Gracias a tí por comentar. Un saludo.
en el ultimo ejemplo creo que sería: System.out.println(c2 + " == " + c3 + " -> " + (c2 == c3));
Hola.
El código que tu indicas es exactamente igual que el que yo he puesto en el último ejemplo. ¿Que diferencia hay?.
Saludos.
Publicar un comentario