| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/01/2012 12:53:30
|
rsaraiva
Entusiasta Java
![[Avatar]](/images/avatar/096c6d572b993bae5bfd8717863d2dc2.jpg)
Membro desde: 10/02/2010 17:32:04
Mensagens: 17
Offline
|
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.
|
Oracle Certified Professional, Java SE 6 Programmer |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/01/2012 13:01:35
|
rsaraiva
Entusiasta Java
![[Avatar]](/images/avatar/096c6d572b993bae5bfd8717863d2dc2.jpg)
Membro desde: 10/02/2010 17:32:04
Mensagens: 17
Offline
|
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)
|
Oracle Certified Professional, Java SE 6 Programmer |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/01/2012 14:06:32
|
esdras_63
JavaEvangelist
![[Avatar]](/images/avatar/b94ae76f1194b945f547278d3c7b30cb.jpeg)
Membro desde: 17/07/2011 15:25:45
Mensagens: 315
Localização: Wenceslau Braz - PR
Offline
|
rsaraiva wrote: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 sabendo que era impossível, foi lá e fez." (Jean Cocteau)
Que tal??
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/01/2012 14:22:22
|
abmpicoli
JavaTeenager
Membro desde: 27/07/2011 09:11:25
Mensagens: 164
Offline
|
esdras_63 wrote:
rsaraiva wrote: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:
This message was edited 2 times. Last update was at 22/01/2012 14:23:24
|
.x. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/01/2012 16:28:27
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
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
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/01/2012 16:31:52
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
É bom lembrar que esse código:
É equivalente a esse código aqui:
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:
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.
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/01/2012 14:32:38
|
esdras_63
JavaEvangelist
![[Avatar]](/images/avatar/b94ae76f1194b945f547278d3c7b30cb.jpeg)
Membro desde: 17/07/2011 15:25:45
Mensagens: 315
Localização: Wenceslau Braz - PR
Offline
|
É 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.
|
"Não sabendo que era impossível, foi lá e fez." (Jean Cocteau)
Que tal??
|
|
|
 |
|
|