Variável estática em Java

A estática pode ser:

  1. Variáveis ​​Estáticas
  2. Métodos estáticos
  3. 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


Java Métodos estáticos e variáveis

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.


Java Métodos estáticos e variáveis

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