Estático em Java:
Static é um modificador sem acesso. A palavra-chave estática pertence à classe e não à instância da classe. pode ser usado para anexar uma variável ou método a uma classe.
A palavra-chave estática PODE ser usada com:
Método
Variável
Classe aninhada dentro de outra Classe
Bloco de Inicialização
NÃO PODE ser usado com:
Classe (não aninhada)
Construtor
Interfaces
Método Classe interna local (diferença e classe aninhada)
Métodos de classe interna
Variáveis de instância
Variáveis locais
Exemplo:
Imagine o exemplo a seguir, que possui uma variável de instância denominada count, que é incrementada no construtor:
package pkg;
class StaticExample {
int count = 0;// will get memory when instance is created
StaticExample() {
count++;
System.out.println(count);
}
public static void main(String args[]) {
StaticExample c1 = new StaticExample();
StaticExample c2 = new StaticExample();
StaticExample c3 = new StaticExample();
}
}
Resultado:
1 1 1
Como a variável de instância obtém a memória no momento da criação do objeto, cada objeto terá a cópia da variável de instância; se for incrementada, ela não será refletida em outros objetos.
Agora, se alterarmos a contagem de variáveis de instância para estática , o programa produzirá uma saída diferente:
package pkg;
class StaticExample {
static int count = 0;// will get memory when instance is created
StaticExample() {
count++;
System.out.println(count);
}
public static void main(String args[]) {
StaticExample c1 = new StaticExample();
StaticExample c2 = new StaticExample();
StaticExample c3 = new StaticExample();
}
}
Resultado:
1 2 3
Nesse caso, a variável estática obterá a memória apenas uma vez; se algum objeto alterar o valor da variável estática, ele manterá seu valor.
Estática com final:
A variável global que é declarada como final e estática permanece inalterada para toda a execução. Porque, os membros estáticos são armazenados na memória da classe e são carregados apenas uma vez em toda a execução. Eles são comuns a todos os objetos da classe. Se você declarar variáveis estáticas como finais, nenhum dos objetos poderá alterar seu valor, pois é final. Portanto, variáveis declaradas como final e estática são algumas vezes chamadas de constantes. Todos os campos das interfaces são referidos como constantes, porque são finais e estáticos por padrão.
Recurso de imagem: Estática final