CodeGym/Blog Java/Random-ES/Variables estáticas en Java
John Squirrels
Nivel 41
San Francisco

Variables estáticas en Java

Publicado en el grupo Random-ES

¿Qué son las variables estáticas?

Las variables estáticas o variables de clase se comparten entre todas las instancias de una clase y se puede acceder a ellas y modificarlas sin crear una instancia de la clase. Profundicemos para comprender los usos y la implementación de variables estáticas en Java.

Ejemplo de variable estática en Java

Uno de los usos más comunes de las variables estáticas es compartir entre todas las instancias de una clase. Por ejemplo, una variable de contador que realiza un seguimiento del número de instancias creadas o una variable CONSTANTE que contiene un valor que nunca cambia. Considere una clase que representa una cuenta bancaria. El siguiente fragmento de código muestra cómo se puede utilizar una variable estática nextAccountNumber para asignar números de cuenta únicos a cada cuenta nueva:

Ejemplo

// 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());
  }
}

Producción

Valor de nextAccountNumber después de crear la cuenta1: 1001 Valor de nextAccountNumber después de crear la cuenta2: 1002 Valor de nextAccountNumber después de crear la cuenta3: 1003
En este ejemplo, el método principal crea tres instancias de la clase BankAccount . El constructor BankAccount asigna nextAccountNumber a la nueva cuenta e incrementa la variable nextAccountNumber en 1. El método getAccountNumber devuelve el número de cuenta de cada cuenta. Luego, el método principal imprime el número de cuenta y la variable nextAccountNumber para cada cuenta. Puede ver que cada número de cuenta es único y la variable nextAccountNumber se incrementa en uno por cada nueva cuenta creada. Las variables estáticas también se pueden utilizar para implementar el patrón de diseño Singleton, donde sólo se puede crear una instancia de una clase. Una clase singleton es una clase que sólo puede tener una instancia en cualquier aplicación Java y simultáneamente proporciona un punto de acceso global a esta instancia. El siguiente fragmento de código muestra cómo se puede utilizar una instancia de variable estática para implementar una clase singleton:

Ejemplo

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();
    }
}

Producción

Esta es una clase singleton. Esta es una clase singleton. Esta es una clase singleton.
En este ejemplo, el método principal crea tres instancias de la clase Singleton llamando al método getInstance() . El método getInstance() devuelve la instancia de la clase y crea una nueva instancia si no existe. El método displayMessage simplemente imprime un mensaje. Luego, el método principal llama al método displayMessage para cada instancia. Como puede ver, aunque estamos creando tres instancias, solo se crea un objeto y se comparte entre todas las instancias. Demuestra que solo se crea y comparte una instancia de la clase entre todas las instancias y que la variable estática 'instancia' se mantiene. Es importante recordar que el valor de una variable estática se comparte entre todas las instancias de una clase, por lo que los cambios en la variable realizados por una instancia serán visibles para todas las demás instancias. Se debe prestar especial atención a las variables estáticas para evitar posibles conflictos y errores en su código. Por ejemplo, no se recomienda utilizar una variable estática para contener un valor específico de una instancia de una clase, como el saldo de una cuenta. Para reforzar lo aprendido, te sugerimos ver una lección en video de nuestro Curso de Java

Conclusión

Para concluir, una variable estática en Java permite compartir datos entre todas las instancias de una clase. Se pueden usar para variables compartidas entre todas las instancias, como contadores y constantes, o para implementar el patrón de diseño Singleton. Sin embargo, es importante tener en cuenta que el valor de una variable estática se comparte entre todas las instancias de una clase, por lo que los cambios en la variable realizados por una instancia serán visibles para todas las demás instancias.
Comentarios
  • Populares
  • Nuevas
  • Antiguas
Debes iniciar sesión para dejar un comentario
Esta página aún no tiene comentarios