Biến static là gì khai bao như thế nào
Static trong Java là một tính năng quan trọng và được sử dụng rộng rãi để giải quyết các vấn đề trong việc thiết kế và triển khai các ứng dụng Java hiệu quả. Để hiểu rõ hơn về tính năng này, hãy cùng Rikkei Academy tìm hiểu sâu hơn về các khái niệm cơ bản về static nhé!. Show
Từ khóa static trong Java là gì?Trong Java, từ khóa static được sử dụng để chỉ ra rằng một thành phần thuộc về lớp chứa nó, chứ không phải thuộc về một đối tượng cụ thể nào của lớp đó. Điều này có nghĩa là các đối tượng của lớp chia sẻ chung một bản sao của thành phần static và không cần phải tạo đối tượng mới để truy cập nó. Từ khóa static là một bộ điều chỉnh truy cập không trực tiếp trong Java, áp dụng cho các thành phần sau:
Biến static (static variables) trong JavaKhi một biến (variables) được khai báo là static trong Java, chỉ có một bản sao duy nhất của trường đó được tạo ra và chia sẻ giữa tất cả các đối tượng của lớp đó. Như vậy, bất kể có khởi tạo bao nhiêu đối tượng của một lớp, sẽ luôn chỉ có một bản sao của biến static thuộc về lớp đó. Giá trị của biến static này được chia sẻ giữa tất cả các đối tượng cùng lớp. Về mặt bộ nhớ, biến static được lưu trữ trong vùng nhớ heap. Ví dụ public class Vehicle { private static int totalVehicles = 0; // Biến static để đếm tổng số phương tiện private String type; public Vehicle(String type) { this.type = type; totalVehicles++; // Tăng tổng số phương tiện khi tạo đối tượng mới } public static int getTotalVehicles() { return totalVehicles; } } public class Main { public static void main(String[] args) { Vehicle car = new Vehicle(“Car”); Vehicle motorbike = new Vehicle(“Motorbike”); System.out.println(“Tổng số phương tiện: ” + Vehicle.getTotalVehicles()); // Kết quả: 2 } } Lớp Vehicle với một biến static totalVehicles dùng để đếm tổng số phương tiện được tạo. Khi mỗi đối tượng Vehicle mới được tạo, biến totalVehicles được tăng lên 1. Chúng ta có thể truy cập vào biến static này thông qua phương thức static getTotalVehicles() mà không cần tạo đối tượng của lớp Vehicle. Lý do sử dụng biến static
Điểm quan trọng cần nhớ
Phương thức static (static methods) trong JavaPhương thức static trong Java là phương thức tĩnh của lớp, không thuộc về một đối tượng cụ thể. Chúng có thể được gọi mà không cần tạo ra đối tượng của lớp chứa chúng. Phương thức static giúp thực hiện các thao tác không phụ thuộc vào việc tạo ra các thực thể. Ví dụpublic class MathHelper { public static int add(int a, int b) { return a + b; } public static int multiply(int a, int b) { return a * b; } } public class Main { public static void main(String[] args) { int sum = MathHelper.add(3, 5); // Sử dụng phương thức static add() int product = MathHelper.multiply(3, 5); // Sử dụng phương thức static multiply() System.out.println(“Tổng của 3 và 5 là: ” + sum); // Kết quả: 8 System.out.println(“Tích của 3 và 5 là: ” + product); // Kết quả: 15 } } Lớp MathHelper có hai phương thức static: add() và multiply(). Phương thức add() cộng hai số nguyên và trả về tổng của chúng, trong khi phương thức multiply() nhân hai số nguyên và trả về tích của chúng. lớp MathHelper có hai phương thức static: add() và multiply(). Phương thức add() cộng hai số nguyên và trả về tổng của chúng, trong khi phương thức multiply() nhân hai số nguyên và trả về tích của chúng. Chúng ta không cần tạo đối tượng của lớp MathHelper để sử dụng các phương thức static này. Thay vào đó, chúng ta có thể gọi chúng trực tiếp thông qua tên lớp, như trong hàm main() của lớp Main. Lý do sử dụngPhương thức static trong Java thường được sử dụng để:
Lưu ý về phương thức static trong Java
Gọi phương thức non-static trong phương thức staticTrong Java, bạn không thể trực tiếp gọi một phương thức không static (non-static) từ một phương thức static. Điều này là do phương thức static không phụ thuộc vào bất kỳ đối tượng nào của lớp, trong khi phương thức không static yêu cầu một đối tượng của lớp để gọi nó. Để gọi một phương thức không static (non-static) trong một phương thức static, chúng ta phải sử dụng một thực thể (đối tượng) của lớp chứa phương thức non-static. Đây là trường hợp phổ biến khi gọi một phương thức không static từ phương thức main() static Ví dụ: public class Greeting { private String message; public Greeting(String message) { this.message = message; } public void displayMessage() { System.out.println(“Message: ” + message); } } public class Main { public static void main(String[] args) { Greeting greeting = new Greeting(“Hello, World!”); // Tạo đối tượng của lớp Greeting greeting.displayMessage(); // Gọi phương thức non-static displayMessage() thông qua đối tượng } Lớp Greeting có một phương thức non-static là displayMessage(). Để gọi phương thức này trong hàm static main() của lớp Main, chúng ta tạo một đối tượng của lớp Greeting và sau đó gọi phương thức displayMessage() thông qua đối tượng này. Khối static trong JavaChúng ta sử dụng khối static để khởi tạo các biến static. Mặc dù, có thể khởi tạo các biến static trực tiếp trong quá trình khai báo, nhưng có những trường hợp cần thực hiện nhiều dòng. Trong những trường hợp như vậy, sử dụng khối static là hiệu quả. Ngoài ra, nếu các biến static cần thêm logic đa câu lệnh trong quá trình khởi tạo, chúng ta có thể sử dụng khối static. Ví dụ public class Database { private static String connectionString; // Khối static static { connectionString = “jdbc:mysql://localhost:3306/sample_db”; System.out.println(“Khối static được thực thi”); } public static String getConnectionString() { return connectionString; } } public class Main { public static void main(String[] args) { // Khi lớp Database được nạp, khối static sẽ được thực thi String connectionString = Database.getConnectionString(); System.out.println(“Chuỗi kết nối: ” + connectionString); } } Lớp Database với một biến static connectionString. Chúng ta sử dụng một khối static để khởi tạo giá trị cho biến này và in ra thông báo “Khối static được thực thi”. Khi lớp Database được nạp vào bộ nhớ (khi gọi phương thức getConnectionString() trong hàm main() của lớp Main), khối static sẽ được thực thi. Lý do sử dụngDưới đây là một số lý do để sử dụng khối static:
Lưu ý về khối static
Lớp con static trong JavaLớp con static, còn được gọi là lớp con dạng nested static, là một lớp con được định nghĩa bên trong một lớp cha và được đánh dấu với từ khóa static. Nó có thể truy cập các thành viên static của lớp cha mà không cần tạo ra một đối tượng của lớp cha. Lớp con static không có một tham chiếu đến một đối tượng của lớp cha tồn tại bên ngoài nó, điều này làm cho nó không thể truy cập các thành viên không-static của lớp cha. Ví dụ public class OuterClass { private static String staticMessage = “Hello from static member of OuterClass!”; // Lớp con static public static class StaticNestedClass { public void displayMessage() { System.out.println(staticMessage); // Truy cập biến static của lớp bên ngoài } } } public class Main { public static void main(String[] args) { // Tạo đối tượng của lớp con static OuterClass.StaticNestedClass nestedObject = new OuterClass.StaticNestedClass(); // Gọi phương thức displayMessage() của lớp con static nestedObject.displayMessage(); // Kết quả: Hello from static member of OuterClass! } } Lớp OuterClass với một biến static staticMessage và một lớp con static StaticNestedClass. Lớp con static này có một phương thức displayMessage() được sử dụng để in ra giá trị của biến staticMessage của lớp OuterClass. Lý do sử dụngMột số lý do để sử dụng các lớp con static trong mã:
Lưu ý về lớp staticCơ bản, một lớp con tĩnh không có quyền truy cập vào bất kỳ thành viên thực thể nào của lớp bên ngoài bao quanh. Nó chỉ có thể truy cập chúng thông qua một tham chiếu đối tượng.
Phương thức main và từ khóa static trong JavaỞ các phần trước, trong các ví dụ chúng ta thấy sự xuất hiện của phương thức main. Ở phần này chúng ta sẽ nói rõ hơn mới quan hệ giữa phương thức main và static trong Java. Để hiểu rõ hơn, hãy xem xét chữ ký của phương thức main: public static void main(String[] args) Phương thức main là nơi mọi chương trình Java bắt đầu. Khi chạy một chương trình Java, JVM – Java Virtual Machine sẽ tìm kiếm phương thức main và bắt đầu thực thi từ đó. Từ khóa static giúp cho phương thức main có thể được gọi mà không cần tạo ra một đối tượng của lớp mà nó thuộc về. Điều này rất quan trọng vì khi chương trình bắt đầu chạy, không có đối tượng nào được tạo ra ngay lập tức. static cho phép máy tính gọi phương thức main ngay khi chương trình được khởi động. Ví dụ, hãy tưởng tượng một chương trình Java đơn giản như sau: public class Greeting { public static void main(String[] args) { System.out.println(“Hello, world!”); } } JVM sẽ tìm đến phương thức main và thực thi lệnh và in ra màn hình dòng chữ “Hello, world!”. Ở đây, từ khóa static cho phép máy tính gọi phương thức main ngay khi chương trình được khởi động, mà không cần tạo ra một đối tượng của lớp Greeting. Như vậy, mối quan hệ giữa phương thức main và static trong Java là phương thức main phải được định nghĩa là static để chương trình có thể bắt đầu thực thi mà không cần tạo đối tượng của lớp chứa nó. Ứng dụng thực tế của Static trong JavaMột số ví dụ về việc sử dụng static trong các ứng dụng Java để giải quyết các vấn đề thực tế:
Kết luậnTrong bài viết này, chúng ta đã tìm hiểu về các khái niệm cơ bản về static trong Java và các ứng dụng thực tế của nó. Việc hiểu rõ về static sẽ giúp cho bạn có cách tiếp cận hiệu quả hơn khi thiết kế và triển khai các ứng dụng Java. Nếu bạn đang muốn tìm hiểu khóa học lập trình, tham khảo ngay Rikkei Academy! Với lộ trình tinh gọn, bám sát thực tế công việc và phương pháp đào tạo tiên tiến giúp bạn nhanh chóng trở thành lập trình viên chỉ trong 6 tháng! Đăng ký để nhận tư vấn miễn phí ngay hôm nay! |