estaba viendo lo de comparar, valores de tipo primitivo con objetos...
que objetos siempre deben compararse con equals()
INTEGER , STRING, son objetos, no ?....
y por lo tanto deberian compararse con equals();
en el caso de que los compare con el "=="
compararia la direccion de memoria a donde apunta, en java creo que no se puede manejar la direccion de memoria como puntero. osea comparo. a un lugar de memoria donde hace referencia...
pero en este ejemplo me confunde todo...
ya que le asigna el misma valor a 2 objetos distintos.. y al compararlos con "=="
da que son iguales...
Código PHP:
public class Equivalencia4 {
public static void main(String[] args) {
Integer n1 = 47;
Integer n2 = 47;
Integer n3 = new Integer(47);
System.out.println("n1==n2: "+(n1 == n2));
System.out.println("n1!=n2: "+(n1 != n2));
System.out.println("n1.equals(n2): "+n1.equals(n2));
System.out.println("n1==n3: "+(n1 == n3));
System.out.println("n1.equals(n3): "+n1.equals(n3));
String s1 = "Hola";
String s2 = "Hola";
System.out.println("s1==s2: "+(s1 == s2));
System.out.println("s1!=s2: "+(s1 != s2));
System.out.println("s1.equals(s2): "+s1.equals(s2));
}
}
Cita:
Cuando creamos n1 y le damos el valor 47, este valor se guarda en memoria (en la pila). Al crear una nueva variable con valor 47, en lugar de almacenar este valor en memoria, como ya existe, n2 apuntará al valor 47 que está en la pila. Entonces tenemos n1 y n2 apuntando a 47. Lo mismo ocurriría con s1 y s2. Por este motivo, en este ejemplo, las comparaciones tienen el mismo comportamiento para == (referencias) y equals() (valores). Sin embargo, si damos un nuevo valor a n1, n2, s1 o s2, las variables ya no apuntarán al mismo valor y serán de este modo diferentes, tanto para == como para equals(). Si nos fijamos en la variable n3, se crea con new Integer(47), si la comparamos con n1 o n2 el resultado es el siguiente: con == el resultado sería false, ya que al crear un nuevo objeto con new, se le asigna un nuevo espacio de memoria (en el cúmulo), por tanto no apuntaría al valor 47 de la pila, sin embargo, con equals() el comportamiento es el esperado ya que se comparan los valores y estos son iguales. Para recordar dónde se almacena cada tipo de variable, puedes repasar el Tema 2, el apartado Los lugares de almacenamiento.
es raro----