Puri
#1
Olá.
Gostaria de saber porque isto ocorre:
[code]
public class Interface {
public static void main(String args[]){
Integer a = 2;
Integer b = 2;
if(a == b)
System.out.println("igual");
else
System.out.println("diferente");
}
}[/code]
Quando eu faço isto, aparece IGUAL, mas quando eu mudo os valores para 200 aparece [b]diferente[/b.
Alguém tem alguma idéia do que possa ser?
Valew ae!
Puri, fui testar aqui JVM 5, nem pode-se iniciar Integer assim…
e testei int ao inves de integer e deu igual em ambos
voce ta comparando referencia de objetos e naun seu conteudo, tente usar o metodo equals para comparar.
Quando você usa == está comparando as referências dos objetos, não seus valores.
Quando você escreve "Integer a = 2" está na verdade escrevendo:
Integer a = Integer.valueOf (2);
Integer.valueOf (x) é igual a new Integer (x) (ou seja, cria um novo objeto) se x < -128 ou x > +127.
Integer.valueOf (x) retorna um Integer pré-alocado se x for >= -128 e <= +127.
Ou seja, quando você usou 200, criou dois objetos diferentes, então == retorna ‘false’.
Puri
#5
Hummm
Muito obrigado pelas respostas! 
Me ajudou bastante a entender!
Quanto ao método .equals eu já sabia que tinha que ser utilizado ele, só não entendia o porquê.
Valew!