final e static final  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
jdeveloper
JavaTeenager

Membro desde: 04/08/2005 08:55:58
Mensagens: 160
Offline

qual a diferença entre eu declarar uma variável como final ou static final?
ateubh
JavaEvangelist
[Avatar]

Membro desde: 27/06/2005 09:37:50
Mensagens: 319
Offline

Uma variável do tipo final, depois que tem um valor atribuído a ela, o mesmo não pode ser modificado

ja uma variável do tipo static, só é instanciada uma vez na memória... ou seja, se você precisar de instanciar vários objetos e eles precisarem possuir uma variável em comum.
jdeveloper
JavaTeenager

Membro desde: 04/08/2005 08:55:58
Mensagens: 160
Offline

ok

mas e se eu fizer algo do tipo:

final int i;
static final int i;

qual a diferença?
#@®®¡$
Moderador
[Avatar]

Membro desde: 13/02/2004 09:42:28
Mensagens: 807
Localização: São Paulo
Offline

No primeiro caso, i terá um valor constante para a instância em que for declarado. No segundo, i terá um valor constante até o termino da execução da VM.

Variáveis estáticas são as chamadas "variáveis de classe", pois elas não são ligadas a nenhuma instância.

Wilerson "#@®®¡$" de Oliveira
http://mundoestranho.net/blog/
Douglas Adams wrote:I love deadlines. I like the whooshing sound they make as they fly by.
[WWW] [ICQ]
jdeveloper
JavaTeenager

Membro desde: 04/08/2005 08:55:58
Mensagens: 160
Offline

Costuma-se declarar constantes como static final.

Mas se eu declarar como final daria na mesma, correto?

Ambos os valores não poderão ser alterados...
#@®®¡$
Moderador
[Avatar]

Membro desde: 13/02/2004 09:42:28
Mensagens: 807
Localização: São Paulo
Offline

Mas se você deixar como final poderá haver um existente por instância. Veja:





Foo.AGORA terá sempre o valor que tiver quando a classe for carregada. Bar.agora terá o valor que tiver quando o construtor de cada instância de Bar rodar. Ou seja, para três instâncias de Bar (b1, b2 e b3), b1.agora terá um valor, b2.agora terá outro e b3.agora terá outro. Entendeu agora?

Wilerson "#@®®¡$" de Oliveira
http://mundoestranho.net/blog/
Douglas Adams wrote:I love deadlines. I like the whooshing sound they make as they fly by.
[WWW] [ICQ]
ateubh
JavaEvangelist
[Avatar]

Membro desde: 27/06/2005 09:37:50
Mensagens: 319
Offline

Você pode modificar o conteúdo de uma variável static, mas não de uma final
jdeveloper
JavaTeenager

Membro desde: 04/08/2005 08:55:58
Mensagens: 160
Offline

#@®®¡$ wrote:

Foo.AGORA terá sempre o valor que tiver quando a classe for carregada. Bar.agora terá o valor que tiver quando o construtor de cada instância de Bar rodar. Ou seja, para três instâncias de Bar (b1, b2 e b3), b1.agora terá um valor, b2.agora terá outro e b3.agora terá outro. Entendeu agora?


Correto. Agora entendi.

Mas se eu inicializar ambas com uma constante(compile time), elas se comportarão equivalentemente, correto?

a unica diferença será que no caso de static final eu só terei uma referência na memória...é isso?
#@®®¡$
Moderador
[Avatar]

Membro desde: 13/02/2004 09:42:28
Mensagens: 807
Localização: São Paulo
Offline

Isso.

Wilerson "#@®®¡$" de Oliveira
http://mundoestranho.net/blog/
Douglas Adams wrote:I love deadlines. I like the whooshing sound they make as they fly by.
[WWW] [ICQ]
jdeveloper
JavaTeenager

Membro desde: 04/08/2005 08:55:58
Mensagens: 160
Offline

#@®®¡$ wrote:Isso.


Obrigado

 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team