Olá pessoal!
Integer i1 = 127;
Integer i2 = 127;
Integer i3 = 128;
Integer i4 = 128;
Alguém poderia me explicar porque (i1==i2) é true e (i3 == i4) é false? Isso tem a ver com o tamanho do byte ?
Abraço.
Olá pessoal!
Integer i1 = 127;
Integer i2 = 127;
Integer i3 = 128;
Integer i4 = 128;
Alguém poderia me explicar porque (i1==i2) é true e (i3 == i4) é false? Isso tem a ver com o tamanho do byte ?
Abraço.
Hehe… já ache aqui.
Para economizar memória, duas instâncias wrapper serão sempre == quando os seus valores primitivos forem o mesmo:
Boolean
Byte
Character (até 127)
Short e Integer (até 127)
Hehe… já ache aqui.Para economizar memória, duas instâncias wrapper serão sempre == quando os seus valores primitivos forem o mesmo:
Boolean
Byte
Character (até 127)
Short e Integer (até 127)
Hehe… já ache aqui.Para economizar memória, duas instâncias wrapper serão sempre == quando os seus valores primitivos forem o mesmo:
Boolean
Byte
Character (até 127)
Short e Integer (até 127)
Isso quer dizer que não é possível comparar dois java.lang.Integer maiores que 127?
Não, carinha, isso quer dizer que para se comparar dois objetos java quanto a igualdade de conteúdo se deve utilizar sempre o EQUALS:
Integer i= 127;
Integer j=127;
System.out.println(i.equals(j));
Engraçado, essa pergunta surgiu no fórum há 2 dias atrás:
http://www.guj.com.br/java/263385-referencia-na-memoria-com-inteiros
É bom lembrar que esse código:
Integer i1 = 127;
Integer i2 = 127;
Integer i3 = 128;
Integer i4 = 128;
É equivalente a esse código aqui:
Integer i1 = Integer.valueOf(127);
Integer i2 = Integer.valueOf(127);
Integer i3 = Integer.valueOf(128);
Integer i4 = Integer.valueOf(128);
E que a classe Integer é uma classe, não um tipo primitivo. Portanto, como o colega ali falou, comparações devem ser feitas pelo método equals. Ou então, use o tipo primitivo mesmo:
int i1 = 127;
int i2 = 127;
int i3 = 128;
int i4 = 128;
O que faz com que um Integer se transforme automaticamente num int, e vice versa, é uma característica implementada no Java 5 chamada de AutoBoxing.
É que como uso hibernate e uma ferramenta para engenharia reversa, utilizo a classe Integer para representar os números inteiros do MySQL. Porém sempre comparei com == e agora fiquei com medo hehehe.