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