logo

Unterschied zwischen statisch und nicht statisch in Java

Um zu verstehen, wie Klassen, Variablen und Methoden in Java funktionieren, ist es wichtig, die Begriffe statisch und nicht statisch zu verstehen. Nicht statische Mitglieder sind mit bestimmten Klasseninstanzen verknüpft, wohingegen statische Mitglieder mit der Klasse verbunden sind. In diesem Abschnitt werden wir statische und nicht statische Java-Komponenten gegenüberstellen und ihre Unterschiede und möglichen Anwendungen hervorheben.

Verknüpft mit

Statisch: Statische Mitglieder (Variablen und Methoden) sind der Klasse selbst und nicht einzelnen Instanzen zugeordnet.

Datenstrukturen in Java

Nicht statisch: Nicht statische Mitglieder sind für jede Instanz einer Klasse spezifisch, da sie an aus der Klasse erstellte Objekte gebunden sind.

Speicherzuweisung

Statisch: Statischen Mitgliedern wird beim Laden der Klasse nur einmal Speicher zugewiesen. Sie werden von allen Instanzen der Klasse gemeinsam genutzt.

Nicht statisch: Bei nicht statischen Mitgliedern wird der Speicher für jede Instanz der Klasse separat zugewiesen. Jedes Objekt verfügt über eine eigene Kopie nicht statischer Mitglieder.

Zugriff

Statisch: Auf statische Mitglieder kann direkt zugegriffen werden, indem der Klassenname gefolgt vom Mitgliedsnamen verwendet wird (z. B. Klassenname.Mitgliedsname). Sie sind von überall im Programm aus zugänglich.

Nicht statisch: Der Zugriff auf nicht statische Mitglieder erfolgt über eine Objektreferenz, gefolgt vom Mitgliedsnamen (z. B. objectReference.memberName). Sie sind spezifisch für eine bestimmte Instanz der Klasse.

Initialisierung

Statisch: Statische Member werden initialisiert, wenn die Klasse in den Speicher geladen wird, normalerweise während des Programmstarts. Die Initialisierung erfolgt nur einmal.

Nicht statisch: Nicht statische Mitglieder werden initialisiert, wenn jede Instanz der Klasse erstellt wird, normalerweise mit dem Schlüsselwort new. Die Initialisierung erfolgt für jedes Objekt separat.

Umfang

Statisch: Statische Mitglieder haben einen globalen Geltungsbereich und können von überall im Programm aus aufgerufen werden, auch ohne eine Instanz der Klasse zu erstellen.

Nicht statisch: Nicht statische Mitglieder haben einen lokalen Gültigkeitsbereich und können nur über eine Instanz der Klasse aufgerufen werden. Sie sind nicht zugänglich, ohne ein Objekt zu erstellen.

Zugang für Mitglieder

Statisch: Statische Mitglieder können nur auf andere statische Mitglieder innerhalb derselben Klasse zugreifen. Sie können nicht direkt auf nicht statische Mitglieder zugreifen.

Nicht statisch: Nicht statische Mitglieder können sowohl auf statische als auch nicht statische Mitglieder innerhalb derselben Klasse zugreifen. Sie haben direkten Zugriff auf alle Mitglieder.

Operatoren in der Python-Programmierung

Verwendung

Statisch: Statische Member werden häufig für Dienstprogrammmethoden, Konstanten oder Variablen verwendet, die nicht spezifisch für einzelne Instanzen sind. Zum Beispiel eine Math-Klasse, die mathematische Funktionen enthält.

Nicht statisch: Nicht statische Mitglieder werden für instanzspezifisches Verhalten verwendet, da sie für jedes Objekt spezifische Daten enthalten. Beispielsweise Instanzvariablen, die eindeutige Werte für jedes Objekt speichern.

Gedächtniseffizienz

Statisch: Statische Mitglieder verbrauchen Speicher nur einmal, unabhängig von der Anzahl der erstellten Instanzen. Sie können speichereffizient sein, wenn dieselben Daten von allen Objekten gemeinsam genutzt werden müssen.