Bekannt , dass folgende eine Variable als private static varName;jede andere von Deklaration einer Variablen private varName;?
Ja, beide sind unterschiedlich. Und der erste wird aufgerufen, class variableweil er dafür einen einzelnen Wert enthält, classwährend der andere aufgerufen wird, instance variableweil er für verschiedene Werte unterschiedliche Werte enthalten kann instances(Objects). Die erste wird nur einmal in jvm erstellt und die andere wird einmal pro Instanz erstellt. Wenn Sie also 10 Instanzen haben, haben Sie 10 verschiedene private varName;in jvm.
Gibt die Deklaration der Variablen staticandere spezielle Eigenschaften?
Ja, statische Variablen erhalten andere Eigenschaften als normale Instanzvariablen. Ich habe bereits einige erwähnt und lassen Sie uns hier einige sehen: class variables(Instanzvariablen, die als statisch deklariert sind) können direkt unter Verwendung des Klassennamens wie aufgerufen werden ClassName.varName. Und jedes Objekt dieser Klasse kann auf seinen Wert zugreifen und ihn ändern, im Gegensatz zu Instanzvariablen, auf die nur die jeweiligen Objekte zugreifen. Klassenvariablen können in statischen Methoden verwendet werden.
Was ist die Verwendung von a private static variablein Java?
Logischerweise unterscheidet private static variablees sich nicht von public static variabledem ersten, der Ihnen mehr Kontrolle gibt. IMO, können Sie buchstäblich ersetzen public static variabledurch private static variablemit Hilfe von public staticGetter und Setter - Methoden.
Ein weit verbreiteter Bereich private static variableist die Implementierung eines einfachen SingletonMusters, bei dem Sie nur eine einzige Instanz dieser Klasse auf der ganzen Welt haben. Hier staticspielt der Bezeichner eine entscheidende Rolle, damit diese einzelne Instanz für die Außenwelt zugänglich ist (natürlich spielt auch die öffentliche statische Getter-Methode die Hauptrolle).
public class Singleton {
private static Singleton singletonInstance = new Singleton();
private Singleton(){}
public static Singleton getInstance(){
return Singleton.singletonInstance;
}
}