Igualdade de objetos  XML
Índice dos Fóruns » Certificação Java
Autor Mensagem
rsaraiva
Entusiasta Java
[Avatar]

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
rsaraiva
Entusiasta Java
[Avatar]

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
esdras_63
JavaEvangelist
[Avatar]

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??

[Email] [WWW] [MSN]
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.
ViniGodoy
Moderador
[Avatar]

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
[WWW]
ViniGodoy
Moderador
[Avatar]

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
[WWW]
esdras_63
JavaEvangelist
[Avatar]

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??

[Email] [WWW] [MSN]
 
Índice dos Fóruns » Certificação Java
Ir para:   
Powered by JForum 2.1.8 © JForum Team