Comparaciones Java

oldBoy

Bovino adicto
#1
Por qué?

public class why{
public static void main(String[] args) {
int a = 1000, b = 1000;
System.out.println(a==b); //true
Integer c = 1000, d = 1000;
System.out.println(c==d); //false
Integer e = 100, f = 100;
System.out.println(e==f); //true
}
}

Es sólo una pregunta que vi hace tiempo, no empiecen con que es tarea.
 

malvadomx

Bovino maduro
#4
que onda mi sKeLdEn, pues la onda es de que son objetos los Integer, y pues puede que Java a veces diga que son iguales o no(esa desicion la toma java), porque al comparar con == hace una comparacion de la posicion en memoria. Para hacer lo que se quiere en el ejemplo, es mejor comparar los objetos con el metodo 'equals'
 

oldBoy

Bovino adicto
#5
Así es. En primera sabemos que es un error comparar objetos con "==" ya que ese operador nos indica si apunta a la misma ubicación de memoria. Deberemos utilizar ya sea equals() para comparar valores o bien instanceof para comparar tipos.
Curiosamente funciona para valores entre -127 y 128 ya que para esos valores, como bien dijo malvadomx, Java escoge implementarlos de modo inmediato.
En fin, sólo una curiosidad.
 
Arriba