Variável estática em Java
- Variáveis Estáticas
- Métodos estáticos
- Blocos estáticos de código.
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 é uma 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). Variáveis estáticas são inicializadas apenas uma vez, no início da execução. Estas 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 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 a partir 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 se referir a palavras-chave “this” ou “super” de forma alguma
Sintaxe:
<class-name>.<method-name>
Nota: O método main é estático, pois deve estar acessível para a execução de um aplicativo, 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
Passo 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++;
//}
}
Passo 2) Salve e compile o código. Execute o código como, Demonstração java.
Passo 3) Resultado esperado mostrado abaixo
O diagrama a seguir mostra como variáveis e objetos de referência são criados e como variáveis estáticas são acessadas pelas diferentes instâncias.
Passo 4) É possível acessar uma variável estática de fora da classe usando a sintaxe NomeDaClasse.Nome_Variável. Remova o comentário das linhas 7 e 8. Salve, compile e execute. 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
Passo 5) Remova o comentário das linhas 25,26 e 27 . Salve, compile e execute.
error: non-static variable a cannot be referenced from a static context a++;
Passo 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 Java?
A bloco estático é um bloco de instruções dentro de um Java classe que será executada quando uma classe for carregada pela primeira vez no JVM. UMA 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ê obterá a seguinte saída do programa.
Value of a = 10 Value of b = 20


