O que significa estático em Java

Rashmi Patidar 12 outubro 2023
  1. Uso da palavra-chave static junto com variáveis ​​de membro em Java
  2. Uso da palavra-chave static junto com funções de membro em Java
  3. Uso da palavra-chave static em um bloco em Java
O que significa estático em Java

Na linguagem Java, static é uma palavra-chave que pode ser usada em vários lugares. A palavra-chave static é usada junto com uma variável de membro, funções de membro, blocos e classes aninhadas. A aplicação de palavras-chave estáticas é onde não queremos criar uma nova instância todas as vezes. Em vez disso, o usamos em locais onde a única cópia é compartilhada dentro da classe. Variáveis ​​estáticas são armazenadas na memória heap, que é um tipo de memória permanente.

Uso da palavra-chave static junto com variáveis ​​de membro em Java

O bloco de código explica como a variável estática é diferente das variáveis ​​não estáticas.

public class StaticVariableUsage {
  public static void main(String[] args) {
    InnerClass in = new InnerClass();
    InnerClass in1 = new InnerClass();

    InnerClass2 in2 = new InnerClass2();
    InnerClass2 in3 = new InnerClass2();
  }

  static class InnerClass {
    static int var4 = 0;
    InnerClass() {
      var4++;
      System.out.println("static variable : " + var4);
    }
  }

  static class InnerClass2 {
    int var5 = 0;
    InnerClass2() {
      var5++;
      System.out.println("non-static variable : " + var5);
    }
  }
}

No bloco de código acima, há uma classe pública chamada de classe StaticVariableUsage. Possui um método estático e duas classes internas. A classe interna chamada InnerClass tem uma variável inteira estática var4 e é iniciada com zero. A classe tem um construtor que incrementa a variável inteira estática e imprime seu valor.

Outra classe interna tem o nome InnerClass2 e contém uma variável não estática var5. Esta classe também possui um construtor que incrementa a variável não estática e imprime seu valor.

Passando para o método main, aqui, InnerClass e InnerClass2 são instanciados duas vezes. A análise pode ser derivada quando a chamada do construtor acontece e um objeto é instanciado com uma nova palavra-chave.

Como diz a saída, a variável estática é iniciada e preservada. O valor é incrementado pela primeira vez e imprime o valor como 1. Da próxima vez, quando criarmos outra instância, o construtor será chamado novamente. Mas a variável estática não é reinicializada com zero novamente. Em vez disso, o valor armazenado anteriormente é incrementado, tornando o valor da variável estática dois.

Da mesma forma, quando uma instância de InnerClass2 é criada, cada vez que uma variável não estática é inicializada com o valor 0. Portanto, ele imprime o valor como 1 na saída em ambas as vezes.

static variable : 1
static variable : 2
non-static variable : 1
non-static variable : 1

Uso da palavra-chave static junto com funções de membro em Java

Temos uma classe externa chamada classe StaticFunctionUsage que contém a outra classe interna na classe abaixo. InnerClass tem uma função estática. E outra classe interna chamada InnerClass1 tem um método não estático.

Agora, passando para o método main, é visto que a função estática é diretamente acessível com o nome da classe. Não precisamos instanciar o objeto InnerClass. Da mesma forma, quando tentamos acessar a função não estática function1 com o nome da classe, um erro em tempo de compilação é populado. Se quisermos acessar a função, a instância da classe precisa ser criada, que criamos com o nome de variável in. O uso da variável é para chamar function1 e é uma instrução válida.

public class StaticFunctionUsage {
  public static void main(String[] args) {
    InnerClass.function();
    // InnerClass1.function1();
    InnerClass1 in = new InnerClass1();
    in.function1();
  }

  static class InnerClass {
    static void function() {
      System.out.println("In the static function");
    }
  }

  static class InnerClass1 {
    void function1() {
      System.out.println("In the non-static function");
    }
  }
}

A saída do bloco de código acima é a seguinte.

In the static function
In the non-static function

Uso da palavra-chave static em um bloco em Java

O uso de blocos estáticos é para inicializar variáveis ​​estáticas. A execução do programa começa com o método main. Se um bloco estático estiver presente em uma classe, ele será executado antes da execução do método main.

Abaixo está o código explicando o bloco estático.

public class StaticBlock {
  static {
    System.out.println("In the static block");
  }

  public static void main(String[] args) {
    System.out.println("In the main method");
  }
}

A saída do código é a seguinte. Como podemos ver, a instrução no bloco estático é executada primeiro.

In the static block
In the main method
Rashmi Patidar avatar Rashmi Patidar avatar

Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.

LinkedIn