CodeGym/Blogue Java/Random-PT/Variáveis estáticas em Java
John Squirrels
Nível 41
San Francisco

Variáveis estáticas em Java

Publicado no grupo Random-PT

O que são variáveis ​​estáticas?

Variáveis ​​estáticas ou variáveis ​​de classe são compartilhadas entre todas as instâncias de uma classe e podem ser acessadas e modificadas sem criar uma instância da classe. Vamos nos aprofundar para entender os usos e a implementação de variáveis ​​estáticas em Java.

Exemplo de variável estática em Java

Um dos usos mais comuns para variáveis ​​estáticas é compartilhar entre todas as instâncias de uma classe. Por exemplo, uma variável de contador que controla o número de instâncias criadas ou uma variável CONSTANT que contém um valor que nunca muda. Considere uma classe que representa uma conta bancária. O trecho de código a seguir mostra como uma variável estática nextAccountNumber pode ser usada para atribuir números de conta exclusivos a cada nova conta:

Exemplo


// BankAccount class definition
class BankAccount {
  // Declare static variable nextAccountNumber 
  static int nextAccountNumber = 1001;

  // Declare instance variables for accountNumber and balance.
  int accountNumber;
  double balance;

  // BankAccount constructor that assigns unique account number to each instance
  BankAccount() {
    // Assign the current value of nextAccountNumber to accountNumber.
    accountNumber = nextAccountNumber;

    // Increment nextAccountNumber for the next BankAccount object.
    nextAccountNumber++;
  }

  // Method to get the account number of this BankAccount object.
  int getAccountNumber() {
    return accountNumber;
  }

  // Method to get the balance of this BankAccount object.
  double getBalance() {
    return balance;
  }

  // Method to deposit an amount into this BankAccount object.
  void deposit(double amount) {
    // Increase balance by the amount deposited.
    balance += amount;
  }

  // Method to withdraw an amount from this BankAccount object.
  void withdraw(double amount) {
    // Decrease balance by the amount withdrawn.
    balance -= amount;
  }
}

// Main method definition
class Main {
  static void main(String[] args) {
    // Create three BankAccount objects: account1, account2, and account3.
    BankAccount account1 = new BankAccount();
    BankAccount account2 = new BankAccount();
    BankAccount account3 = new BankAccount();
    
    // Display the value of the static variable nextAccountNumber after creating each BankAccount object.
    System.out.println("Value of nextAccountNumber after creating account1: " + account1.getAccountNumber());
    System.out.println("Value of nextAccountNumber after creating account2: " + account2.getAccountNumber());
    System.out.println("Value of nextAccountNumber after creating account3: " + account3.getAccountNumber());
  }
}

Saída

Valor de nextAccountNumber após a criação da conta1: 1001 Valor de nextAccountNumber após a criação da conta2: 1002 Valor de nextAccountNumber após a criação da conta3: 1003
Neste exemplo, o método principal cria três instâncias da classe BankAccount . O construtor BankAccount atribui nextAccountNumber à nova conta e incrementa a variável nextAccountNumber em 1. O método getAccountNumber retorna o número da conta de cada conta. O método principal então imprime o número da conta e a variável nextAccountNumber para cada conta. Você pode ver que cada número de conta é único e a variável nextAccountNumber é incrementada em um para cada nova conta criada. Variáveis ​​estáticas também podem ser usadas para implementar o padrão de design Singleton, onde apenas uma instância de uma classe pode ser criada. Uma classe singleton é uma classe que pode ter apenas uma instância em qualquer aplicativo Java e simultaneamente fornece um ponto de acesso global para esta instância. O trecho de código a seguir mostra como uma instância de variável estática pode ser usada para implementar uma classe singleton:

Exemplo


public class Singleton {
    // using static variable in the singleton class
    private static Singleton instance;
    private Singleton() { }

    public static Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }

    public void displayMessage() {
        System.out.println("This is a singleton class");
    }

    public static void main(String[] args) {
        Singleton singleton1 = Singleton.getInstance();
        singleton1.displayMessage();

        Singleton singleton2 = Singleton.getInstance();
        singleton2.displayMessage();

        Singleton singleton3 = Singleton.getInstance();
        singleton3.displayMessage();
    }
}

Saída

Esta é uma classe singleton Esta é uma classe singleton Esta é uma classe singleton
Neste exemplo, o método principal cria três instâncias da classe Singleton chamando o método getInstance() . O método getInstance() retorna a instância da classe e cria uma nova instância se não existir. O método displayMessage apenas imprime uma mensagem. Em seguida, o método principal chama o método displayMessage para cada instância. Como você pode ver, embora estejamos criando três instâncias, apenas um objeto é criado e compartilhado entre todas as instâncias. Isso prova que apenas uma instância da classe é criada e compartilhada entre todas as instâncias e a variável estática 'instância' é mantida. É importante lembrar que o valor de uma variável estática é compartilhado entre todas as instâncias de uma classe, portanto, as alterações feitas na variável por uma instância serão visíveis para todas as outras instâncias. Deve-se considerar cuidadosamente as variáveis ​​estáticas para evitar possíveis conflitos e bugs em seu código. Por exemplo, não é recomendado usar uma variável estática para armazenar um valor específico de uma instância de uma classe, como o saldo de uma conta. Para reforçar o que você aprendeu, sugerimos que você assista a uma vídeo aula do nosso Curso Java

Conclusão

Para finalizar, uma variável estática em Java permite o compartilhamento de dados entre todas as instâncias de uma classe. Eles podem ser usados ​​para variáveis ​​compartilhadas entre todas as instâncias, como contadores e constantes ou para implementar o padrão de design Singleton. No entanto, é importante ter em mente que o valor de uma variável estática é compartilhado entre todas as instâncias de uma classe, portanto, as alterações feitas na variável por uma instância serão visíveis para todas as outras instâncias.
Comentários
  • Populares
  • Novas
  • Antigas
Você precisa acessar para deixar um comentário
Esta página ainda não tem nenhum comentário