| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/02/2010 09:55:10
|
evertonsilvagomesjava
Virtual Machine Man
![[Avatar]](/images/avatar/6370988b46be58caec00d925d91d2f99.jpg)
Membro desde: 23/08/2009 13:14:01
Mensagens: 719
Online
|
Galera pq o teste de == ali retorna false? Eu sei que o metodo intValue() retorna um int e que == analisa a referencia na memoria porém se comparado um Integer com um int se ambos tiverem o mesmo valor retorna true como por exemplo:
Então pq o retorno e falso no teste dentro do método?
This message was edited 1 time. Last update was at 08/02/2010 15:01:07
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/02/2010 10:06:56
|
douglas_vidotto
JavaTeenager
![[Avatar]](/images/avatar/2b37aae16df6fc89dd503c3b2dfbf165.png)
Membro desde: 12/08/2008 15:43:18
Mensagens: 164
Offline
|
Acredito que seja por isso... dentro de methodA() você possui duas variáveis referenciando um objeto Integer cujo valor é 25. Essas variáveis são startingI e i. Depois você chama methodB() passando como argumento a variável i. Ao fazer isso, agora você tem 3 variáveis apontando para o objeto Integer cujo valor é 25: startingI, i e i2. Porém, em methodB() você faz o seguinte comando: i2 = i2.intValue();. Nesse ponto acredito que ocorra um boxing do valor retornado por intValue() criando um novo objeto Integer. Assim, startingI e i2 apontam para objetos diferentes na memória, mas que possuem o mesmo valor. Por isso no seu teste de == o valor é falso.
Edit: Para finalizar.. no seu outro teste:
Isso acontece por que ocorre um unboxing do valor do objeto referenciado por a. Assim temos dois ints sendo comparados. Aí, como o valor é o mesmo, == retorna true
This message was edited 1 time. Last update was at 08/02/2010 10:12:13
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/02/2010 10:17:05
|
evertonsilvagomesjava
Virtual Machine Man
![[Avatar]](/images/avatar/6370988b46be58caec00d925d91d2f99.jpg)
Membro desde: 23/08/2009 13:14:01
Mensagens: 719
Online
|
Não sabia que ele iria criar um novo objeto ali não...
E criado entao um novo objeto integer? Pq na realidade ele ta fazendo um unboxing de Integer pra int...
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/02/2010 10:20:54
|
mario.fts
Virtual Machine Man
![[Avatar]](/images/avatar/9e96d422fba85185a33829439f5df09d.jpg)
Membro desde: 14/05/2008 09:41:06
Mensagens: 606
Localização: São Paulo - ZL
Online
|
Na realidade vc ta fazendo de Integer pra int e pra Integer de novo, pq a variável i2 é do tipo Integer.
|
Mário Amaral Gonçalves |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/02/2010 10:21:40
|
evertonsilvagomesjava
Virtual Machine Man
![[Avatar]](/images/avatar/6370988b46be58caec00d925d91d2f99.jpg)
Membro desde: 23/08/2009 13:14:01
Mensagens: 719
Online
|
hum é isso mesmo, unboxing de Integer pra int e boxing de int pra Integer de novo, mas nao entendo pq ele cria um novo objeto...
This message was edited 1 time. Last update was at 08/02/2010 10:29:19
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/02/2010 10:38:09
|
douglas_vidotto
JavaTeenager
![[Avatar]](/images/avatar/2b37aae16df6fc89dd503c3b2dfbf165.png)
Membro desde: 12/08/2008 15:43:18
Mensagens: 164
Offline
|
Ele cria um novo objeto porque toda vez que ele faz um boxing, ocorre um processo parecido com isso (pelo que está no livro da Kathy Sierra):
This message was edited 1 time. Last update was at 08/02/2010 10:38:41
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/02/2010 10:53:07
|
evertonsilvagomesjava
Virtual Machine Man
![[Avatar]](/images/avatar/6370988b46be58caec00d925d91d2f99.jpg)
Membro desde: 23/08/2009 13:14:01
Mensagens: 719
Online
|
hum ok vlw.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/02/2010 12:15:49
|
Metal Java Full
JavaTeenager
![[Avatar]](/images/avatar/52f625b672e781ecd9f026356caa645b.jpeg)
Membro desde: 09/11/2009 11:42:27
Mensagens: 152
Localização: Fortaleza - CE
Offline
|
Dizer que um objeto (startingI) não pode ser comparado com uma variável primitiva (i2 = i2.intValue()) com == , faz algum sentido??
|
Graduação em Análise de Sistemas - Fortaleza (CE)
Sun Certified Programmer for the Java Platform, Standard Edition 6.0
Visitem meu Blog
"Reduza a Velocidade - Travessia de Modems 2400bps." OS VIGARISTAS - Frases de Informática |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/02/2010 12:38:15
|
evertonsilvagomesjava
Virtual Machine Man
![[Avatar]](/images/avatar/6370988b46be58caec00d925d91d2f99.jpg)
Membro desde: 23/08/2009 13:14:01
Mensagens: 719
Online
|
Nao faz pq vc pode comparar com == que da true, a questao e que realmente ele criou um novo objeto.
Se vc fizer um teste vera que da true:
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/02/2010 12:50:21
|
mario.fts
Virtual Machine Man
![[Avatar]](/images/avatar/9e96d422fba85185a33829439f5df09d.jpg)
Membro desde: 14/05/2008 09:41:06
Mensagens: 606
Localização: São Paulo - ZL
Online
|
se no unboxing ele usar new Integer(10), ele vai criar um novo: http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Integer.html#Integer(int)
Constructs a newly allocated Integer object that represents the specified int value.
Vc tem que considerar tbm o fator de cache do integer. PQ? pq o Integer tem um cache interno de objetos, até o 127. Os objetos maiores que 127 são criados dinamicamente.
This message was edited 1 time. Last update was at 08/02/2010 12:50:44
|
Mário Amaral Gonçalves |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/02/2010 12:51:57
|
Metal Java Full
JavaTeenager
![[Avatar]](/images/avatar/52f625b672e781ecd9f026356caa645b.jpeg)
Membro desde: 09/11/2009 11:42:27
Mensagens: 152
Localização: Fortaleza - CE
Offline
|
Noossaa!!!!
Preciso anotar essa!
Mto boa!
vlew
|
Graduação em Análise de Sistemas - Fortaleza (CE)
Sun Certified Programmer for the Java Platform, Standard Edition 6.0
Visitem meu Blog
"Reduza a Velocidade - Travessia de Modems 2400bps." OS VIGARISTAS - Frases de Informática |
|
|
 |
|
|