Uma variável estática é comum a todas as instâncias (ou objetos) da classe porque é uma variável de nível de classe. Em outras palavras, você pode dizer que apenas uma única cópia da variável estática é criada e compartilhada entre todas as instâncias da classe. A alocação de memória para tais variáveis só acontece uma vez quando a classe é carregada na memória.
Variáveis como podemos ter bloco estático, método estático e classe estática, para ler sobre elas consulte: static keyword in java.
Static variable Syntax
static keyword seguido pelo tipo de dado, seguido pelo nome da variável.
static data_type variable_name;
Como mencionei acima que as variáveis estáticas são compartilhadas entre todas as instâncias da classe, elas são úteis quando precisamos fazer gerenciamento de memória. Em alguns casos queremos ter um valor comum para todas as instâncias como variável global então é muito melhor declará-las estáticas pois isso pode salvar memória (pois apenas uma única cópia é criada para variáveis estáticas).
lets entendem isso com um exemplo:
Exemplo de variável estática em Java
class VariableDemo{ static int count=0; public void increment() { count++; } public static void main(String args) { VariableDemo obj1=new VariableDemo(); VariableDemo obj2=new VariableDemo(); obj1.increment(); obj2.increment(); System.out.println("Obj1: count is="+obj1.count); System.out.println("Obj2: count is="+obj2.count); }}
Output:
Obj1: count is=2Obj2: count is=2
Como você pode ver no exemplo acima que ambos os objetos estão compartilhando uma mesma cópia de variável estática, é por isso que eles exibiram o mesmo valor de contagem.
Exemplo 2: Variável estática pode ser acessada diretamente em um método estático
class JavaExample{ static int age; static String name; //This is a Static Method static void disp(){ System.out.println("Age is: "+age); System.out.println("Name is: "+name); } // This is also a static method public static void main(String args) { age = 30; name = "Steve"; disp(); }}
Eliminar:
Age is: 30Name is: Steve
Inicialização de variável estática
- As variáveis estáticas são inicializadas quando a classe é carregada.
- As variáveis estáticas são inicializadas antes que qualquer objeto dessa classe seja criado.
- As variáveis estáticas são inicializadas antes que qualquer método estático da classe seja executado.
Os valores padrão para variáveis estáticas e não estáticas são os mesmos.
inteiros primitivos(long
, short
etc): 0
pontos flutuantes primitivos(float
, double
): 0.0
booleano: falso
referências de objetos: nulo
variáveis estáticas finais
As variáveis estáticas finais são constantes. Vamos dar uma olhada no código abaixo:
public class MyClass{ public static final int MY_VAR=27;}
Nota: O nome da variável constante deve estar em Caps! você pode usar o underscore(_) entre.
1) O código acima será executado assim que a classe MyClass
for carregada, antes do método estático ser chamado e mesmo antes que qualquer variável estática possa ser acessada.
2) A variável MY_VAR
é pública, o que significa que qualquer classe pode usá-la. É uma variável estática, portanto você não precisará de nenhum objeto de classe para acessá-la. É final para que o valor desta variável nunca possa ser alterado na corrente ou em qualquer classe.
pontos-chave:
variável final sempre precisa ser inicializada, se você não a inicializar, ela lançaria um erro de compilação. dê uma olhada no exemplo abaixo-
public class MyClass{ public static final int MY_VAR;}
Error: variable MY_VAR might not have been initialized