Variável estática em Java:o que é bloco e método estático [exemplo]
A estática pode ser:
- Variáveis estáticas
- Métodos estáticos
- Blocos de código estáticos.
Vejamos primeiro as variáveis estáticas e os métodos estáticos.
O que é variável estática em Java?
Variável estática em Java é a variável que pertence à classe e inicializada apenas uma vez no início da execução. É uma variável que pertence à classe e não ao objeto(instância). As variáveis estáticas são inicializadas apenas uma vez, no início da execução. Essas variáveis serão inicializadas primeiro, antes da inicialização de qualquer variável de instância.
- Uma única cópia a ser compartilhada por todas as instâncias da classe
- Uma variável estática pode ser acessada diretamente pelo nome da classe e não precisa de nenhum objeto
Sintaxe:
<class-name>.<variable-name>
O que é Método Estático em Java?
Método estático em Java é um método que pertence à classe e não ao objeto. Um método estático pode acessar apenas dados estáticos. É um método que pertence à classe e não ao objeto (instância). Um método estático pode acessar apenas dados estáticos. Ele não pode acessar dados não estáticos (variáveis de instância).
- Um método estático pode chamar apenas outros métodos estáticos e não pode chamar um método não estático dele.
- Um método estático pode ser acessado diretamente pelo nome da classe e não precisa de nenhum objeto
- Um método estático não pode fazer referência a palavras-chave “this” ou “super” de forma alguma
Sintaxe:
<class-name>.<method-name>
Observação: main é estático, pois deve estar acessível para que um aplicativo seja executado, antes que qualquer instanciação ocorra.
Vamos aprender as nuances das palavras-chave estáticas fazendo alguns exercícios!
Exemplo:como chamar variáveis e métodos estáticos
Etapa 1) Copie o seguinte código em um editor
public class Demo{ public static void main(String args[]){ Student s1 = new Student(); s1.showData(); Student s2 = new Student(); s2.showData(); //Student.b++; //s1.showData(); } } class Student { int a; //initialized to zero static int b; //initialized to zero only when class is loaded not for each object created. Student(){ //Constructor incrementing static variable b b++; } public void showData(){ System.out.println("Value of a = "+a); System.out.println("Value of b = "+b); } //public static void increment(){ //a++; //} }
Etapa 2) Salve e compile o código. Execute o código como java Demo .
Etapa 3) Saída esperada mostrada abaixo
O diagrama a seguir mostra como as variáveis e objetos de referência são criados e as variáveis estáticas são acessadas pelas diferentes instâncias.
Etapa 4) É possível acessar uma variável estática de fora da classe usando a sintaxe ClassName.Variable_Name . Descomente a linha # 7 e 8 . Salvar, compilar e executar. Observe a saída.
Value of a = 0 Value of b = 1 Value of a = 0 Value of b = 2 Value of a = 0 Value of b = 3
Etapa 5) Descomente a linha 25,26 e 27 . Salvar, compilar e executar.
error: non-static variable a cannot be referenced from a static context a++;
Etapa 6) Erro =? Isso ocorre porque não é possível acessar a variável de instância “a ” do método de classe estática Java “incremento “.
O que é Bloco Estático em Java?
O bloco estático é um bloco de instruções dentro de uma classe Java que será executada quando uma classe for carregada pela primeira vez na JVM. Um bloco estático ajuda a inicializar os membros de dados estáticos , assim como os construtores ajudam a inicializar os membros da instância.
class Test{ static { //Code goes here } }
O programa a seguir é o exemplo do bloco estático java.
Exemplo:como acessar o bloco estático
public class Demo { static int a; static int b; static { a = 10; b = 20; } public static void main(String args[]) { System.out.println("Value of a = " + a); System.out.println("Value of b = " + b); } }
você receberá a seguinte saída do programa.
Value of a = 10 Value of b = 20
Java