1
resposta

Deveríamos poder alterar uma variável static?

class Teste {
    static int i = 3;
    public static void main(String[] a) {
        for (new Teste().i = 10; new Teste().i < 100;
             new Teste().i++) {
            System.out.println(i);
        }
    }
}

No exercício 3 temos o contigo anterior. Na declaração do for é feita a seguinte implementação: Teste().i = 10. Só anteriormente é declarado static int i = 3;

Se a variável i é estática, ela deveria poder ser alterada? Nesse caso qual é o valor de ser estática?

1 resposta

Olá Tatiane, boa tarde! O que pode está ocorrendo é uma confusão no conceito de static e final.

static significa que é da classe e não do objeto. Logo para todas instâncias da classe, o valor de uma variável estática, será o mesmo e uma mudança em uma instância reflete na outra. Talvez pensar como se static estivesse ligado a uma referência para todas instâncias, ajude.

final refere-se a não ser alterado. Logo, se uma variável possui esse modificador, será tratado como uma constante. Está variável não poderá ter seu valor reatribuído.

É por este questão que é comum ver a variável como static final. Nisso a variável passar a ter um valor constante e todas instâncias da classe terá o mesmo valor.

Espero que ter ajudado. Boa sorte nos estudos.