| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/11/2009 11:55:42
|
André Fonseca
JWizard
![[Avatar]](/images/avatar/286b0b3ea509af1aeff6bb47299d96d7.png)
Membro desde: 23/02/2007 15:52:55
Mensagens: 2034
Offline
|
Qual o valor de x? Alguem chuta? tem a ver com o fato de toda variavel de classe (static) ser inicializada em um bloco estático
1) x igual a 0
2) x igual a 6
3) x igual a 7
4) x igual a 13
|
Você é novo no GUJ?
Como fazer perguntas?
www.twitter.com/_afonseca |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/11/2009 12:36:17
|
evertonsilvagomesjava
GUJ Master
![[Avatar]](/images/avatar/6370988b46be58caec00d925d91d2f99.png)
Membro desde: 23/08/2009 13:14:01
Mensagens: 1924
Offline
|
puts acho que vou debugar isso ai kkk
This message was edited 1 time. Last update was at 10/11/2009 12:39:10
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/11/2009 12:44:55
|
entanglement
GUJ Hacker
Membro desde: 26/09/2009 09:18:56
Mensagens: 5750
Offline
|
O código acima equivale a:
This message was edited 1 time. Last update was at 10/11/2009 12:45:24
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/11/2009 12:45:05
|
evertonsilvagomesjava
GUJ Master
![[Avatar]](/images/avatar/6370988b46be58caec00d925d91d2f99.png)
Membro desde: 23/08/2009 13:14:01
Mensagens: 1924
Offline
|
po Andre pq o resultado foi 6 rs, tem como vc da uma explicada ai?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/11/2009 12:48:17
|
evertonsilvagomesjava
GUJ Master
![[Avatar]](/images/avatar/6370988b46be58caec00d925d91d2f99.png)
Membro desde: 23/08/2009 13:14:01
Mensagens: 1924
Offline
|
do jeito que ta o cod do entanglement eu entendi, mas do jeito do Andre nao, como vc desmembrou esse static entanglement?
This message was edited 1 time. Last update was at 10/11/2009 12:49:04
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/11/2009 12:54:19
|
entanglement
GUJ Hacker
Membro desde: 26/09/2009 09:18:56
Mensagens: 5750
Offline
|
Regra bem simples:
a) Pegue todos os "static final" que são primitivos e deixe quietos. Eles são constantes e não são inicializados no bloco static, mas antes disso.
b) Crie um bloco static e copie as inicializações dos membros estáticos, uma por uma, na ordem em que aparecem na declaração da classe. Por isso, instance aparece antes de BASE.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/11/2009 12:56:27
|
evertonsilvagomesjava
GUJ Master
![[Avatar]](/images/avatar/6370988b46be58caec00d925d91d2f99.png)
Membro desde: 23/08/2009 13:14:01
Mensagens: 1924
Offline
|
puuuuuuuuuuta que pariu vc deu um tapa na cara do papa agora ehehe, vlw entanglement.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/11/2009 12:59:26
|
André Fonseca
JWizard
![[Avatar]](/images/avatar/286b0b3ea509af1aeff6bb47299d96d7.png)
Membro desde: 23/02/2007 15:52:55
Mensagens: 2034
Offline
|
entanglement wrote:O código acima equivale a:
é isso ai, vc achou o código aqui não foi?
quando inicializa o Foo o BASE está como 0 e como a constante nao é inicaliza no bloco estatico..
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/11/2009 15:00:55
|
evertonsilvagomesjava
GUJ Master
![[Avatar]](/images/avatar/6370988b46be58caec00d925d91d2f99.png)
Membro desde: 23/08/2009 13:14:01
Mensagens: 1924
Offline
|
Me gerou uma duvida galera tem como me ajudar olha so:
se o codigo ficar assim a saida ficaria diferente? pq?
This message was edited 1 time. Last update was at 10/11/2009 15:16:15
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/11/2009 23:01:51
|
André Fonseca
JWizard
![[Avatar]](/images/avatar/286b0b3ea509af1aeff6bb47299d96d7.png)
Membro desde: 23/02/2007 15:52:55
Mensagens: 2034
Offline
|
Olhando o código abaixo
Posso perceber que para a situacao 1 o construtor é chamado apenas uma vez, quando eu inicializo a variavel instance, o que é feito dentro do bloco estatico
Como quando eu faço isso a variavel BASE ainda está com o valor default de int (no caso 0) sera criado um objeto do tipo Foo que contem um valor x de 0 + 6 (constante)
Ja no segundo caso o construtor é chamado duas vezes, na primeira ele apenas cria o valor de instance com o mesmo valor de x = 0 + 6
Já na segunda vez que o construtor é chamado nesta situação o valor de BASE ja foi inicializado com 7, neste caso ele altera o valor de x para 7 + 6 = 13
Este código eu vi no link que passei acima
Mais detalhes pode ser visto em Static Initializers
Alias, a especificacao da JVM é um otimo lugar para sanar este tido de dúvida
|
Você é novo no GUJ?
Como fazer perguntas?
www.twitter.com/_afonseca |
|
|
 |
|
|