Statisch in Java:
Static ist ein Modifikator ohne Zugriff. Das statische Schlüsselwort gehört zur Klasse als Instanz der Klasse. kann verwendet werden, um eine Variable oder Methode an eine Klasse anzuhängen.
Das statische Schlüsselwort kann verwendet werden mit:
Methode
Variable
Klasse in einer anderen Klasse verschachtelt
Initialisierungsblock
Kann nicht verwendet werden mit:
Klasse (nicht verschachtelt)
Konstrukteur
Schnittstellen
Methode Lokale innere Klasse (Differenz dann verschachtelte Klasse)
Methoden der inneren Klasse
Instanzvariablen
Lokale Variablen
Beispiel:
Stellen Sie sich das folgende Beispiel mit einer Instanzvariablen namens count vor, die im Konstruktor inkrementiert wurde:
package pkg;
class StaticExample {
int count = 0;// will get memory when instance is created
StaticExample() {
count++;
System.out.println(count);
}
public static void main(String args[]) {
StaticExample c1 = new StaticExample();
StaticExample c2 = new StaticExample();
StaticExample c3 = new StaticExample();
}
}
Ausgabe:
1 1 1
Da die Instanzvariable zum Zeitpunkt der Objekterstellung den Speicher erhält, verfügt jedes Objekt über die Kopie der Instanzvariablen. Wenn sie inkrementiert wird, wird sie nicht auf andere Objekte übertragen.
Wenn wir nun die Anzahl der Instanzvariablen in eine statische ändern, erzeugt das Programm eine andere Ausgabe:
package pkg;
class StaticExample {
static int count = 0;// will get memory when instance is created
StaticExample() {
count++;
System.out.println(count);
}
public static void main(String args[]) {
StaticExample c1 = new StaticExample();
StaticExample c2 = new StaticExample();
StaticExample c3 = new StaticExample();
}
}
Ausgabe:
1 2 3
In diesem Fall erhält die statische Variable den Speicher nur einmal. Wenn ein Objekt den Wert der statischen Variablen ändert, behält es seinen Wert bei.
Statisch mit Finale:
Die globale Variable, die als endgültig und statisch deklariert ist, bleibt für die gesamte Ausführung unverändert. Denn statische Elemente werden im Klassenspeicher gespeichert und in der gesamten Ausführung nur einmal geladen. Sie sind allen Objekten der Klasse gemeinsam. Wenn Sie statische Variablen als endgültig deklarieren, kann keines der Objekte seinen Wert ändern, da er endgültig ist. Daher werden als endgültig und statisch deklarierte Variablen manchmal als Konstanten bezeichnet. Alle Felder von Schnittstellen werden als Konstanten bezeichnet, da sie standardmäßig endgültig und statisch sind.
Bildressource: Endgültig statisch