Java static erklärt: Variablen, Methoden und Blöcke – Praxisbeispiele
In Java tritt das static-Schlüsselwort in drei unterschiedlichen Kontexten auf: statische Variablen, statische Methoden und statische Blöcke. Jeder spielt eine einzigartige Rolle im Lebenszyklus einer Klasse und ihrer Instanzen.
Statische Variablen in Java
- Es existiert nur eine Kopie, die von allen Instanzen geteilt wird.
- Direkt über
Klassenname.variablenNamezugänglich, ohne ein Objekt zu erstellen. - Wird vor allen Instanzfeldern initialisiert.
Syntax:
public static int count;
Statische Methoden in Java
Statische Methoden gehören zur Klasse und nicht zu einer bestimmten Instanz. Sie können aufgerufen werden, ohne ein Objekt zu erstellen, und können nur auf statische Daten zugreifen.
- Können andere statische Methoden aufrufen, aber keine Instanzmethoden.
- Werden mit
Klassenname.methodeName()aufgerufen. - Können
thisodersupernicht verwenden, da sie an keine Instanz gebunden sind.
Alle main-Methoden sind statisch, damit die JVM eine Anwendung starten kann, bevor Objekte existieren.
Praxisbeispiel: Statische Variablen und Methoden verwenden
Das folgende Programm demonstriert, wie ein statischer Zähler über mehrere Student-Objekte geteilt wird.
public class Demo {
public static void main(String[] args) {
Student s1 = new Student();
s1.showData();
Student s2 = new Student();
s2.showData();
// Student.b++; // einkommentieren, um den Zähler zu ändern
// s1.showData();
}
}
class Student {
int a; // Instanzvariable, Standardwert 0
static int b; // statischer Zähler, einmalig auf 0 initialisiert
Student() {
b++; // Zähler bei jeder Student-Erstellung inkrementieren
}
public void showData() {
System.out.println("Value of a = " + a);
System.out.println("Value of b = " + b);
}
}
Kompilieren und mit java Demo ausführen, um folgende Ausgabe zu sehen:

Das folgende Diagramm veranschaulicht, wie Referenzvariablen und Objekte erstellt werden und wie die statische Variable b über Instanzen geteilt wird.

Um von außerhalb der Klasse auf die statische Variable zuzugreifen, verwenden Sie Klassenname.variablenName:
Student.b++; // inkrementiert den geteilten Zähler
s1.showData(); // zeigt aktualisierten Wert von b
Der Versuch, von einem statischen Kontext auf eine Instanzvariable zuzugreifen, führt zu einem Kompilierfehler:
error: non-static variable a cannot be referenced from a static context
a++;
Dies geschieht, weil statische Methoden nicht direkt mit Instanzfeldern interagieren können.
Statische Blöcke in Java
Ein statischer Block ist ein spezieller Codeblock, der einmal ausgeführt wird, wenn die Klasse erstmals in die JVM geladen wird. Er eignet sich ideal für die Initialisierung statischer Felder, die mehr als eine einfache Zuweisung erfordern.
class Test {
static int a;
static int b;
static {
a = 10;
b = 20;
}
}
Das folgende Programm demonstriert die Ausgabe eines statischen Blocks:
public class Demo {
static int a;
static int b;
static {
a = 10;
b = 20;
}
public static void main(String[] args) {
System.out.println("Value of a = " + a);
System.out.println("Value of b = " + b);
}
}
Ausgabe:
Value of a = 10 Value of b = 20
Java
- Javas final-Schlüsselwort verstehen: Variablen, Methoden und Klassen
- Java instanceof-Operator: Ein umfassender Leitfaden
- Java statische verschachtelte Klassen verstehen: Nutzung, Unterschiede und Beispiele
- Java anonyme innere Klassen meistern: Definition, Syntax und praktische Beispiele
- Java Singleton-Pattern erklärt: Sichere Implementierung und Verwendung
- Java Reflection meistern: Klassen, Methoden und Felder zur Laufzeit inspizieren
- Java Exception Handling meistern: Try, Catch, Finally, Throw & Throws erklärt
- Java ObjectOutputStream meistern: Serialisierung, Methoden und praktische Beispiele
- Java Generics meistern – Wiederverwendbaren, typsicheren Code erstellen
- Java-Dateioperationen mit java.io meistern – Erstellen, Lesen, Schreiben & Löschen