| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/04/2004 16:31:32
|
ana_abrantes
JavaGuru
![[Avatar]](/images/avatar/c8b958be3f6282eb1e3fa.gif)
Membro desde: 29/08/2003 15:44:09
Mensagens: 238
Localização: São Paulo
Offline
|
Qual o resultado?
a - imprime 0
b - imprime 1
c - dá erro na compilação
d - dá uma exception na execução
e - nenhuma das anteriores
|
Ana
SCJP 1.4 - SCWCD 1.4 |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/04/2004 16:44:55
|
cv
Moderador
![[Avatar]](/images/avatar/210f760a89db30aa72ca258a3483cc7f.jpg)
Membro desde: 04/04/2003 00:32:12
Mensagens: 7842
Localização: São Paulo, SP
Offline
|
0.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/04/2004 20:49:22
|
elvishr
JavaChild
![[Avatar]](/images/avatar/c8dcfe0a3f9023b8eba93.gif)
Membro desde: 01/04/2003 00:47:21
Mensagens: 117
Localização: Brasília/DF
Offline
|
Porque a certa é a letra a?
|
Elvis não morreu
SCJP 1.4
SCWCD 5.0
SCBCD 5.0
JBCAA |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/04/2004 20:52:16
|
caiofilipini
GUJ Master
![[Avatar]](/images/avatar/c8e721e64167e81904d2c.jpg)
Membro desde: 26/06/2003 15:17:59
Mensagens: 1255
Localização: São Paulo
Offline
|
elvishr wrote:Porque a certa é a letra a?
Porque em Java, a passagem de parâmetros é por valor, e o método metodoA(int a) altera a cópia local da variável.
[]'s
|
Caio N. Filipini
"There is no spoon." |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/04/2004 21:30:24
|
elvishr
JavaChild
![[Avatar]](/images/avatar/c8dcfe0a3f9023b8eba93.gif)
Membro desde: 01/04/2003 00:47:21
Mensagens: 117
Localização: Brasília/DF
Offline
|
sim, mas qual variavel a q é incrementada??
Entendi que a variavel a da classe foi incrementada e recebeu o valor 1.
Mas a variavel a do metodo main é local, por isso exibiu zero.
É isso mesmo??
|
Elvis não morreu
SCJP 1.4
SCWCD 5.0
SCBCD 5.0
JBCAA |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/04/2004 21:50:12
|
ana_abrantes
JavaGuru
![[Avatar]](/images/avatar/c8b958be3f6282eb1e3fa.gif)
Membro desde: 29/08/2003 15:44:09
Mensagens: 238
Localização: São Paulo
Offline
|
Ao contrário...
A variável "a" dentro do método metodoA() é incrementada, mas assim que este método termina ela é "eliminada".
E a variável "a" static da classe (e não local do método main()!) continua com o mesmo valor que começou, por isso imprime 0.
O que acontece dentro do método metodoA() é chamado de shadowing ou sombreamento(tradução horrível! acho que fica melhor ocultar), ou seja, a variável local tem o mesmo nome de uma de instância ou classe, mas a local é a que é enxergada pelo método.
Para alterar a variável static bastaria mudar:
- colocando o nome da classe: Teste.a++
- trocar o nome do argumento (variável local) por um diferente de a
- se tivesse uma instância da classe(dentro de metodoA):
Teste t = new Teste();
t.a++;
Certo?
|
Ana
SCJP 1.4 - SCWCD 1.4 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/04/2004 21:57:26
|
elvishr
JavaChild
![[Avatar]](/images/avatar/c8dcfe0a3f9023b8eba93.gif)
Membro desde: 01/04/2003 00:47:21
Mensagens: 117
Localização: Brasília/DF
Offline
|
Ahhh.. entendi, dentro do método metodoA(), a variavel incrementada é do parametro e nao a da classe, logo ela é eliminada ..
A variavel a do metodo main e do metodoA nao tem nada a ver com a variavel static a da classe Teste, so o nome q é o mesmo ..
Estou certo?
|
Elvis não morreu
SCJP 1.4
SCWCD 5.0
SCBCD 5.0
JBCAA |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/04/2004 23:05:16
|
ana_abrantes
JavaGuru
![[Avatar]](/images/avatar/c8b958be3f6282eb1e3fa.gif)
Membro desde: 29/08/2003 15:44:09
Mensagens: 238
Localização: São Paulo
Offline
|
elvishr wrote:Ahhh.. entendi, dentro do método metodoA(), a variavel incrementada é do parametro e nao a da classe, logo ela é eliminada ..
Correto.
elvishr wrote:
A variavel a do metodo main e do metodoA nao tem nada a ver com a variavel static a da classe Teste, so o nome q é o mesmo ..
Estou certo?
Errado.
Só tem 2 variáveis com nome a.
A variável dentro do método main() É a variável static da classe!
E não tem nada a ver com a do metodoA().
|
Ana
SCJP 1.4 - SCWCD 1.4 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/05/2004 23:42:08
|
phstc
JavaGuru
Membro desde: 13/04/2004 12:22:22
Mensagens: 200
Localização: São Paulo, SP
Offline
|
ana_abrantes wrote:
- colocando o nome da classe: Teste.a++
Acho que mais facinho seria
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/05/2004 18:26:37
|
ana_abrantes
JavaGuru
![[Avatar]](/images/avatar/c8b958be3f6282eb1e3fa.gif)
Membro desde: 29/08/2003 15:44:09
Mensagens: 238
Localização: São Paulo
Offline
|
Em método estático não se pode usar this!
|
Ana
SCJP 1.4 - SCWCD 1.4 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/05/2004 18:37:37
|
phstc
JavaGuru
Membro desde: 13/04/2004 12:22:22
Mensagens: 200
Localização: São Paulo, SP
Offline
|
ana_abrantes wrote:Em método estático não se pode usar this!
Muito obrigado, vou tentar não esquecer disso
|
|
|
 |
|
|