jueves, 11 de abril de 2013

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




    Felinfo: Java, Linux, Virtualización. Open Source.  ©Template Blogger Green by Dicas Blogger .

    TOPO