CodeGym/Blog Java/Ngẫu nhiên/Biến tĩnh trong Java

Biến tĩnh trong Java

Xuất bản trong nhóm

Biến tĩnh là gì?

Các biến tĩnh hoặc biến lớp được chia sẻ giữa tất cả các phiên bản của một lớp và có thể được truy cập và sửa đổi mà không cần tạo một phiên bản của lớp. Chúng ta hãy cùng tìm hiểu sâu hơn về cách sử dụng và triển khai các biến tĩnh trong Java.

Ví dụ về biến tĩnh trong Java

Một trong những cách sử dụng phổ biến nhất của biến tĩnh là chia sẻ giữa tất cả các phiên bản của một lớp. Ví dụ: biến bộ đếm theo dõi số lượng phiên bản được tạo hoặc biến CONSTANT chứa giá trị không bao giờ thay đổi. Hãy xem xét một lớp đại diện cho một tài khoản ngân hàng. Đoạn mã sau đây cho thấy cách sử dụng biến tĩnh nextAccountNumber để gán số tài khoản duy nhất cho mỗi tài khoản mới:

Ví dụ

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

đầu ra

Giá trị nextAccountNumber sau khi tạo account1: 1001 Giá trị nextAccountNumber sau khi tạo account2: 1002 Giá trị nextAccountNumber sau khi tạo account3: 1003
Trong ví dụ này, phương thức main tạo ra ba phiên bản của lớp BankAccount . Hàm tạo BankAccount gán nextAccountNumber cho tài khoản mới và tăng biến nextAccountNumber lên 1. Phương thức getAccountNumber trả về số tài khoản của mỗi tài khoản . Sau đó, phương thức main in ra số tài khoản và biến nextAccountNumber cho mỗi tài khoản. Bạn có thể thấy rằng mỗi số tài khoản là duy nhất và biến nextAccountNumber được tăng thêm một cho mỗi tài khoản mới được tạo. Các biến tĩnh cũng có thể được sử dụng để triển khai mẫu thiết kế Singleton, trong đó chỉ có thể tạo một phiên bản của một lớp. Lớp singleton là lớp chỉ có thể có một phiên bản trong bất kỳ ứng dụng Java nào và đồng thời cung cấp một điểm truy cập toàn cầu cho phiên bản này. Đoạn mã sau đây cho thấy cách sử dụng một phiên bản biến tĩnh để triển khai một lớp singleton:

Ví dụ

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

đầu ra

Đây là lớp singleton Đây là lớp singleton Đây là lớp singleton
Trong ví dụ này, phương thức main tạo ba phiên bản của lớp Singleton bằng cách gọi phương thức getInstance() . Phương thức getInstance () trả về thể hiện của lớp và tạo một thể hiện mới nếu nó không tồn tại. Phương thức displayMessage chỉ in một thông báo . Sau đó, phương thức chính gọi phương thức displayMessage cho từng phiên bản. Như bạn có thể thấy, mặc dù chúng ta đang tạo ba phiên bản nhưng chỉ có một đối tượng được tạo và chia sẻ giữa tất cả các phiên bản. Nó chứng minh rằng chỉ có một phiên bản của lớp được tạo và chia sẻ giữa tất cả các phiên bản và biến tĩnh 'thể hiện' đang được giữ. Điều quan trọng cần nhớ là giá trị của một biến tĩnh được chia sẻ giữa tất cả các phiên bản của một lớp, do đó những thay đổi đối với biến do một phiên bản thực hiện sẽ hiển thị với tất cả các phiên bản khác. Cần xem xét cẩn thận các biến tĩnh để tránh xung đột và lỗi tiềm ẩn trong mã của bạn. Ví dụ: không nên sử dụng biến tĩnh để giữ giá trị dành riêng cho một phiên bản của một lớp, chẳng hạn như số dư tài khoản. Để củng cố những gì bạn đã học, chúng tôi khuyên bạn nên xem bài học video từ Khóa học Java của chúng tôi
Bình luận
  • Phổ biến
  • Mới
Bạn phải đăng nhập để đăng nhận xet
Trang này chưa có bất kỳ bình luận nào