Java Static Keyword mit Beispielen erklärt

Was bedeutet statisch?

Wenn Sie eine Variable oder eine Methode als statisch deklarieren, gehört sie zur Klasse und nicht zu einer bestimmten Instanz. Dies bedeutet, dass nur eine Instanz eines statischen Elements vorhanden ist, selbst wenn Sie mehrere Objekte der Klasse erstellen oder wenn Sie keine erstellen. Es wird von allen Objekten gemeinsam genutzt.

Das statische Schlüsselwort kann mit Variablen, Methoden, Codeblöcken und verschachtelten Klassen verwendet werden.

Statische Variablen

Beispiel:

public class Counter { public static int COUNT = 0; Counter() { COUNT++; } }

Die COUNTVariable wird von allen Objekten dieser Klasse gemeinsam genutzt. Wenn wir Objekte unserer Counter-Klasse in main erstellen und auf die statische Variable zugreifen.

public class MyClass { public static void main(String[] args) { Counter c1 = new Counter(); Counter c2 = new Counter(); System.out.println(Counter.COUNT); } } // Outputs "2"

Das Outout ist 2, da die COUNTVariable statisch ist und jedes Mal, wenn ein neues Objekt der Counter-Klasse erstellt wird, um eins erhöht wird. Sie können auf die statische Variable auch mit einem beliebigen Objekt dieser Klasse zugreifen, z c1.COUNT.

Statische Methoden

Eine statische Methode gehört eher zur Klasse als zu Instanzen. Somit kann es aufgerufen werden, ohne eine Instanz der Klasse zu erstellen. Es wird zum Ändern des statischen Inhalts der Klasse verwendet. Es gibt einige Einschränkungen bei statischen Methoden:

  1. Die statische Methode kann keine nicht statischen Elemente (Variablen oder Funktionen) der Klasse verwenden.
  2. Statische Methode kann nicht thisoder superSchlüsselwörter verwenden.

Beispiel:

public class Counter { public static int COUNT = 0; Counter() { COUNT++; } public static void increment(){ COUNT++; } }

Statische Methoden können auch von der Instanz der Klasse aufgerufen werden.

public class MyClass { public static void main(String[] args) { Counter.increment(); Counter.increment(); System.out.println(Counter.COUNT); } } // Outputs "2"

Die Ausgabe ist 2, da sie durch eine statische Methode erhöht wird increament(). Ähnlich wie bei statischen Variablen kann auch auf statische Methoden mithilfe von Instanzvariablen zugegriffen werden.

Statische Blöcke

Statische Codeblöcke werden verwendet, um statische Variablen zu initialisieren. Diese Blöcke werden unmittelbar nach der Deklaration statischer Variablen ausgeführt.

Beispiel:

public class Saturn { public static final int MOON_COUNT; static { MOON_COUNT = 62; } }
public class Main { public static void main(String[] args) { System.out.println(Saturn.MOON_COUNT); } } // Outputs "62"

Die Ausgabe ist 62, da der Variablen MOON_COUNTdieser Wert im statischen Block zugewiesen wird.

Statisch verschachtelte Klassen

Eine Klasse kann eine statisch verschachtelte Klasse haben, auf die über den Namen der äußeren Klasse zugegriffen werden kann.

Beispiel:

public class Outer { public Outer() { } public static class Inner { public Inner() { } } }

Im obigen Beispiel Innerkann direkt auf die Klasse als statisches Mitglied der Klasse zugegriffen werden Outer.

public class Main { public static void main(String[] args) { Outer.Inner inner = new Outer.Inner(); } }

Einer der Anwendungsfälle für statisch verschachtelte Klassen in Builder Pattern, die häufig in Java verwendet werden.