Là khai báo một biến là private static varName;bất kỳ khác với khai báo một biến private varName;?
Vâng, cả hai đều khác nhau. Và cái đầu tiên được gọi class variablebởi vì nó giữ giá trị duy nhất cho điều đó classtrong khi cái còn lại được gọi instance variablebởi vì nó có thể giữ giá trị khác nhau cho khác nhau instances(Objects). Cái đầu tiên chỉ được tạo một lần trong jvm và cái khác được tạo một lần cho mỗi thể hiện, tức là nếu bạn có 10 thể hiện thì bạn sẽ có 10 cái khác nhau private varName;trong jvm.
Có khai báo biến như staticcho nó các thuộc tính đặc biệt khác không?
Có, các biến tĩnh nhận được một số thuộc tính khác với các biến thể hiện bình thường. Tôi đã đề cập vài cái rồi và chúng ta hãy xem một số ở đây: class variables(các biến thể hiện được khai báo là tĩnh) có thể được truy cập trực tiếp bằng cách sử dụng tên lớp như thế nào ClassName.varName. Và bất kỳ đối tượng nào của lớp đó đều có thể truy cập và sửa đổi giá trị của nó không giống như các biến thể hiện chỉ được truy cập bởi các đối tượng tương ứng. Các biến lớp có thể được sử dụng trong các phương thức tĩnh.
Việc sử dụng một private static variabletrong Java là gì?
Về mặt logic, private static variablekhông khác gì so với public static variablecái đầu tiên giúp bạn kiểm soát nhiều hơn. IMO, bạn có thể thay thế public static variabletheo nghĩa đen bằng private static variablesự trợ giúp của các public staticphương thức getter và setter.
Một lĩnh vực được sử dụng rộng rãi private static variablelà triển khai Singletonmẫu đơn giản trong đó bạn sẽ chỉ có một thể hiện duy nhất của lớp đó trên toàn thế giới. Ở đây staticđịnh danh đóng vai trò quan trọng để làm cho cá thể đó có thể truy cập được bởi thế giới bên ngoài (Tất nhiên phương thức getter tĩnh công khai cũng đóng vai trò chính).
public class Singleton {
private static Singleton singletonInstance = new Singleton();
private Singleton(){}
public static Singleton getInstance(){
return Singleton.singletonInstance;
}
}