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