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?
O 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