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 variable
weil er dafür einen einzelnen Wert enthält, class
während der andere aufgerufen wird, instance variable
weil 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 static
andere 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 variable
in Java?
Logischerweise unterscheidet private static variable
es sich nicht von public static variable
dem ersten, der Ihnen mehr Kontrolle gibt. IMO, können Sie buchstäblich ersetzen public static variable
durch private static variable
mit Hilfe von public static
Getter und Setter - Methoden.
Ein weit verbreiteter Bereich private static variable
ist die Implementierung eines einfachen Singleton
Musters, bei dem Sie nur eine einzige Instanz dieser Klasse auf der ganzen Welt haben. Hier static
spielt 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;
}
}