public class Equivalencia { public static void main(String[] args) { Integer n1 = new Integer(75); Integer n2 = new Integer(75); System.out.println(n1 == n2); System.out.println(n1 != n2); } } |
La Clase anterior genera dos instancias de la Clase Integer, las cuales son inicializadas con un valor de 75.
Es llevada acabo una comparación entre ambas referencias.
Aunque el comportamiento del programa anterior parece predecible, los resultados de este programa son falso (false
) y verdadero (true
), este resultado se debe a que la comparación llevada acabo por el programa es en base a referencias, para llevar acabo el comportamiento deseado se utiliza la siguiente variación:
public class Equivalencia2 { public static void main(String[] args) { Integer n1 = new Integer(75); Integer n2 = new Integer(75); System.out.println(n1.equals(n2)); } } |
En el ejemplo anterior se hace uso del método equals
, a través de este método disponible en toda Clase es llevado acabo una comparación entre el valor del Objeto en sí ; cabe mencionar que los operadores relacionales "==" y "!=" funcionan acordemente ( o como aparentemente se pensaría ) con primitivos, es solo cuando se utilizan Clases cuando es necesario utilizar el método "equals"
para llevar acabo una comparación al nivel de Objetos.