Trong Java, từ khóa static được sử dụng để chỉ ra rằng một thành viên của lớp (biến hoặc phương thức) thuộc về lớp đó mà không phải là một phần của bất kỳ đối tượng cụ thể nào của lớp đó. Điều này có nghĩa là bạn có thể truy cập vào các thành viên static mà không cần tạo một đối tượng của lớp. Thành viên static được tạo ra khi chương trình bắt đầu và bị phá hủy khi chương trình kết thúc.
Biến Static
Biến static, còn được gọi là biến lớp, được sử dụng để biểu diễn các thuộc tính chung của tất cả các đối tượng (thay vì mỗi đối tượng có một bản sao của biến), hoặc để lưu trữ thông tin mà bạn muốn sử dụng trên toàn bộ lớp.
class ClassName {
static int staticVariable;
}
Ví dụ: Bạn có thể sử dụng biến static để theo dõi số lượng đối tượng được tạo ra từ một lớp.
Phương thức Static
Phương thức static không thể truy cập trực tiếp đến các biến và phương thức không static của lớp, bởi chúng không thuộc về bất kỳ đối tượng cụ thể nào. Một ứng dụng phổ biến của phương thức static là viết các hàm tiện ích hoặc hàm trợ giúp.
class ClassName {
static void staticMethod() {
// code to execute
}
}
Ví dụ: main method trong Java được định nghĩa là static vì nó phải được gọi bởi máy ảo Java mà không cần một thể hiện của lớp.
Khối Static
Khối static được sử dụng để khởi tạo các biến static. Nó được thực thi trước bất kỳ phương thức static nào và trước khi bất kỳ đối tượng nào của lớp đó được tạo.
class ClassName {
static {
// code runs when the class is loaded
}
}
Lưu ý về Static
- Biến static được lưu trữ trong bộ nhớ static và chia sẻ giữa tất cả các thể hiện của lớp.
- Sử dụng static có thể tiết kiệm bộ nhớ vì lớp chỉ cần một bản sao của bất kỳ biến static nào, không phải mỗi thể hiện của lớp đều có một bản sao.
- Quá nhiều sử dụng static có thể dẫn đến lỗi thiết kế vì nó giảm tính đóng gói và có thể dẫn đến dữ liệu được chia sẻ không mong muốn giữa các đối tượng.
Tóm lại, static là một từ khóa quan trọng trong Java, giúp quản lý bộ nhớ hiệu quả và cung cấp phương thức để truy cập vào các thành viên lớp mà không cần tạo thể hiện của lớp.
Comments