Final e static final

9 respostas
J

qual a diferença entre eu declarar uma variável como final ou static final?

9 Respostas

A

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.

J

ok

mas e se eu fizer algo do tipo:

final int i;
static final int i;

qual a diferença?

1

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.

J

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…

1

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

public class Foo { public static final long AGORA = System.currentTimeMillis(); }

public class Bar { public final long agora = System.currentTimeMillis(); }

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?

A

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

J

#@®®¡$:

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?

1

Isso.

J

Obrigado

:thumbup:

Criado 5 de maio de 2006
Ultima resposta 5 de mai. de 2006
Respostas 9
Participantes 3