Was bedeutet statisch in Java

Rashmi Patidar 12 Oktober 2023
  1. Verwendung des Schlüsselworts static zusammen mit Member-Variablen in Java
  2. Verwendung des Schlüsselworts static zusammen mit Memberfunktionen in Java
  3. Verwendung des Schlüsselworts static in einem Block in Java
Was bedeutet statisch in Java

In der Sprache Java ist statisch ein Schlüsselwort, das an verschiedenen Stellen verwendet werden kann. Das Schlüsselwort static wird zusammen mit einer Membervariablen, Memberfunktionen, Blöcken und verschachtelten Klassen verwendet. Die Anwendung von statischen Schlüsselwörtern findet überall dort statt, wo wir nicht jedes Mal eine neue Instanz erstellen möchten. Stattdessen verwenden wir es an Stellen, an denen die einzelne Kopie innerhalb der Klasse geteilt wird. Statische Variablen werden im Heap-Speicher gespeichert, der eine Art permanenter Speicher ist.

Verwendung des Schlüsselworts static zusammen mit Member-Variablen in Java

Der Codeblock erklärt, wie sich die statische Variable von nicht-statischen Variablen unterscheidet.

public class StaticVariableUsage {
  public static void main(String[] args) {
    InnerClass in = new InnerClass();
    InnerClass in1 = new InnerClass();

    InnerClass2 in2 = new InnerClass2();
    InnerClass2 in3 = new InnerClass2();
  }

  static class InnerClass {
    static int var4 = 0;
    InnerClass() {
      var4++;
      System.out.println("static variable : " + var4);
    }
  }

  static class InnerClass2 {
    int var5 = 0;
    InnerClass2() {
      var5++;
      System.out.println("non-static variable : " + var5);
    }
  }
}

Im obigen Codeblock gibt es eine öffentliche Klasse namens StaticVariableUsage. Es hat eine statische Methode und zwei innere Klassen. Die innere Klasse namens InnerClass hat eine statische Integer-Variable var4 und wird mit Null initiiert. Die Klasse hat einen Konstruktor, der die statische Integer-Variable inkrementiert und ihren Wert ausgibt.

Eine andere innere Klasse trägt den Namen InnerClass2 und enthält eine nicht-statische Variable var5. Auch diese Klasse hat einen Konstruktor, der die nicht-statische Variable inkrementiert und ihren Wert ausgibt.

Kommen wir zur Methode main, hier werden InnerClass und InnerClass2 zweimal instanziiert. Die Analyse kann abgeleitet werden, wenn beim Konstruktoraufruf ein Objekt mit einem neuen Schlüsselwort instanziiert wird.

Wie die Ausgabe sagt, wird die statische Variable initiiert und beibehalten. Der Wert wird zum ersten Mal inkrementiert und druckt den Wert als 1. Wenn wir das nächste Mal eine weitere Instanz erstellen, wird der Konstruktor erneut aufgerufen. Aber die statische Variable wird nicht wieder mit Null neu initialisiert. Stattdessen wird der zuvor gespeicherte Wert inkrementiert, wodurch der statische Variablenwert zwei wird.

Wenn eine Instanz von InnerClass2 erstellt wird, wird in ähnlicher Weise jedes Mal eine nicht statische Variable auf den Wert 0 initialisiert. Es gibt also beide Male den Wert als 1 in der Ausgabe aus.

static variable : 1
static variable : 2
non-static variable : 1
non-static variable : 1

Verwendung des Schlüsselworts static zusammen mit Memberfunktionen in Java

Wir haben eine äußere Klasse namens StaticFunctionUsage-Klasse, die die andere innere Klasse in der unteren Klasse enthält. InnerClass hat eine statische Funktion. Und eine andere innere Klasse namens InnerClass1 hat eine nicht statische Methode.

Wenn man nun zur Methode main übergeht, sieht man, dass die statische Funktion direkt mit dem Klassennamen zugänglich ist. Wir müssen das InnerClass-Objekt nicht instanziieren. Ebenso wird beim Versuch, mit dem Klassennamen auf die nicht statische Funktion function1 zuzugreifen, ein Kompilierzeitfehler ausgegeben. Wenn wir auf die Funktion zugreifen wollen, muss die Klasseninstanz erstellt werden, die wir mit dem Namen in Variable erstellt haben. Die Verwendung der Variablen dient zum Aufrufen von function1 und ist eine gültige Anweisung.

public class StaticFunctionUsage {
  public static void main(String[] args) {
    InnerClass.function();
    // InnerClass1.function1();
    InnerClass1 in = new InnerClass1();
    in.function1();
  }

  static class InnerClass {
    static void function() {
      System.out.println("In the static function");
    }
  }

  static class InnerClass1 {
    void function1() {
      System.out.println("In the non-static function");
    }
  }
}

Die Ausgabe des obigen Codeblocks ist wie folgt.

In the static function
In the non-static function

Verwendung des Schlüsselworts static in einem Block in Java

Die Verwendung von statischen Blöcken dient der Initialisierung statischer Variablen. Die Ausführung des Programms beginnt mit der Methode main. Wenn innerhalb einer Klasse ein statischer Block vorhanden ist, wird er vor der Ausführung der Hauptmethode ausgeführt.

Unten ist der Code, der den statischen Block erklärt.

public class StaticBlock {
  static {
    System.out.println("In the static block");
  }

  public static void main(String[] args) {
    System.out.println("In the main method");
  }
}

Die Ausgabe des Codes ist wie folgt. Wie wir sehen, wird die Anweisung im statischen Block zuerst ausgeführt.

In the static block
In the main method
Rashmi Patidar avatar Rashmi Patidar avatar

Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.

LinkedIn