Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> Java

Java Static Explicado: Variáveis, Métodos e Blocos – Exemplos Práticos

Em Java, a palavra-chave static aparece em três contextos distintos: variáveis estáticas, métodos estáticos e blocos estáticos. Cada um desempenha papel único no ciclo de vida de uma classe e suas instâncias.

Variáveis Estáticas em Java

Uma variável estática é um campo de nível de classe inicializado apenas uma vez quando a classe é carregada pela primeira vez. Diferente de variáveis de instância, uma única cópia de uma variável estática é compartilhada por todos os objetos daquela classe.

Sintaxe:

public static int contador;

Métodos Estáticos em Java

Métodos estáticos pertencem à classe, não a uma instância específica. Podem ser invocados sem criar objeto e só acessam dados estáticos.

Todos os métodos main são estáticos para que a JVM inicie a aplicação antes de qualquer objeto existir.

Exemplo Prático: Usando Variáveis e Métodos Estáticos

Abaixo, um programa simples demonstrando como um contador estático é compartilhado entre múltiplos objetos Aluno.

public class Demo {
    public static void main(String[] args) {
        Aluno s1 = new Aluno();
        s1.showData();
        Aluno s2 = new Aluno();
        s2.showData();
        // Aluno.b++; // descomente para modificar o contador
        // s1.showData();
    }
}

class Aluno {
    int a; // variável de instância, padrão 0
    static int b; // contador estático, inicializado com 0 uma vez
    Aluno() {
        b++; // incrementa contador cada vez que Aluno é criado
    }
    public void showData() {
        System.out.println("Valor de a = " + a);
        System.out.println("Valor de b = " + b);
    }
}

Compile e execute com java Demo para ver a saída:

Java Static Explicado: Variáveis, Métodos e Blocos – Exemplos Práticos

O diagrama abaixo ilustra como variáveis de referência e objetos são criados, e como a variável estática b é compartilhada entre instâncias.

Java Static Explicado: Variáveis, Métodos e Blocos – Exemplos Práticos

Para acessar a variável estática de fora da classe, use NomeDaClasse.nomeVariavel:

Aluno.b++; // incrementa o contador compartilhado
s1.showData(); // mostrará valor atualizado de b

Tentar acessar variável de instância de contexto estático resulta em erro de compilação:

error: non-static variable a cannot be referenced from a static context
a++;

Isso ocorre porque métodos estáticos não podem interagir diretamente com campos de instância.

Blocos Estáticos em Java

Um bloco estático é um bloco especial de código que executa uma vez quando a classe é carregada na JVM. É ideal para inicializar campos estáticos que requerem mais que uma simples atribuição.

class Teste {
    static int a;
    static int b;
    static {
        a = 10;
        b = 20;
    }
}

Executar o programa abaixo demonstra a saída de um 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("Valor de a = " + a);
        System.out.println("Valor de b = " + b);
    }
}

Saída:

Valor de a = 10
Valor de b = 20

Java

  1. Entendendo a Palavra-chave final em Java: Variáveis, Métodos e Classes
  2. Operador instanceof em Java: Guia Completo
  3. Entendendo Classes Aninhadas Estáticas em Java: Uso, Diferenças e Exemplos
  4. Dominando Classes Internas Anônimas em Java: Definição, Sintaxe e Exemplos Práticos
  5. Padrão Singleton em Java Explicado: Como Implementar e Usar com Segurança
  6. Dominando Reflection em Java: Inspecionando Classes, Métodos e Campos em Tempo de Execução
  7. Dominando Tratamento de Exceções em Java: Try, Catch, Finally, Throw e Throws Explicados
  8. Dominando Java ObjectOutputStream: Serialização, Métodos e Exemplos Práticos
  9. Dominando Java Generics – Construindo Código Reutilizável e Type-Safe
  10. Dominando Operações de Arquivo em Java com java.io – Criação, Leitura, Escrita e Exclusão