Czy deklarowanie zmiennej private static varName;różni się od deklarowania zmiennej private varName;?
Tak, oba są różne. Pierwsza jest nazywana, class variableponieważ ma jedną wartość dla tego, classpodczas gdy druga jest nazywana, instance variableponieważ może mieć różne wartości dla różnych instances(Objects). Pierwsza jest tworzona tylko raz w jvm, a druga jest tworzona raz na instancję, tzn. Jeśli masz 10 instancji, będziesz mieć 10 różnych private varName;w jvm.
Czy zadeklarowanie zmiennej jako staticnadaje jej inne specjalne właściwości?
Tak, zmienne statyczne mają inne właściwości niż zwykłe zmienne instancji. Wspomniałem już o kilku i zobaczmy kilka tutaj: class variables(zmienne instancji, które są zadeklarowane jako statyczne) można uzyskać bezpośrednio za pomocą nazwy klasy, takiej jak ClassName.varName. Każdy obiekt tej klasy może uzyskiwać dostęp i modyfikować swoją wartość, w przeciwieństwie do zmiennych instancji, do których dostęp mają tylko odpowiednie obiekty. Zmienne klas mogą być używane w metodach statycznych.
Jakie jest zastosowanie a private static variablew Javie?
Logicznie rzecz biorąc, private static variablenie różni się od tego public static variable, że pierwszy daje większą kontrolę. IMO można dosłownie zastąpić public static variableza private static variablepomocą metod public staticpobierających i ustawiających.
Jednym z szeroko używanych obszarów private static variablejest implementacja prostego Singletonwzorca, w którym będziesz mieć tylko jedną instancję tej klasy na całym świecie. Tutaj staticidentyfikator odgrywa kluczową rolę, aby to pojedynczy przypadek jest przystosowany światem zewnętrznym (metody Oczywiście publicznej pochłaniacza statycznych odgrywa również główną rolę).
public class Singleton {
private static Singleton singletonInstance = new Singleton();
private Singleton(){}
public static Singleton getInstance(){
return Singleton.singletonInstance;
}
}