veröffentlicht am: 27.04.2022 zuletzt aktualisiert am: 06.02.2023
Das Schlüsselwort Java static wird verwendet, um statische Methoden, statische Variablen und statische Klassen zu erstellen. Schauen wir uns nun an, wie wir das Java static Schlüsselwort verwenden können, um ebendiese Sachen realisieren zu können. Also, los geht’s!
Die statischen Methoden in Java werden mit dem Schlüsselwort Java static erstellt. Diese Arten von Methoden gehören zu der Klasse, in der sie definiert sind. Deshalb werden die statischen Methoden in Java auch Klassenmethoden genannt.
Schauen wir uns nun an, wie wir solch eine Methode erstellen können.
Als erstes definieren wir eine statische Methode namens nachrichtAusgeben() in der Klasse Mitarbeiter:
class Mitarbeiter { public static void nachrichtAusgeben() { System.out.println("Hi! Ich heisse Tim."); } }
Im Anschluss rufen wir aus unserer Klasse Main innerhalb der public static void main String args-Methode die statische Methode nachrichtAusgeben auf!
public class Main { public static void main(String[] args) { Mitarbeiter.nachrichtAusgeben(); } }
Beachte, dass wir kein Objekt der Klasse Mitarbeiter für den Zugriff auf die Methode nachrichtAusgeben() erstellt haben; stattdessen verwenden wir den Klassennamen und können direkt auf die Methode zugreifen ohne Objekte der Klasse Mitarbeiter zu erstellen!
Wenn wir nun den obigen Code ausführen würden, würden wir folgende Ausgabe auf der Konsole erhalten:
Wenn Objekte in Java erstellt werden, enthält jedes Objekt seine eigene Kopie der in der Klasse deklarierten Variablen.
Im folgenden Beispiel erstellen wir zwei Objekte der Klasse „Mitarbeiter“ mit den Namen: mitarbeiterEins und mitarbeiterZwei:
class Mitarbeiter { int alter; } public class Main { public static void main(String[] args) { Mitarbeiter mitarbeiterEins = new Mitarbeiter(); Mitarbeiter mitarbeiterZwei = new Mitarbeiter(); } }
So weit so gut. Wir haben nun zwei Objekte, welche jeweils einen anderen Wert in die Objekteigene Variable alter speichern können. Wir können aber Java static verwenden, um einen Wert innerhalb einer statischen Variable in der Klasse zu speichern, welche von den Objekten nicht direkt verändert werden kann und für alle Objekte denselben Wert hält.
class Mitarbeiter { static int mitarbeiterAnzahl; } public class Main { public static void main(String[] args) { Mitarbeiter.mitarbeiterAnzahl = 20; System.out.println("So viele Mitarbeiter haben wir: " + Mitarbeiter.mitarbeiterAnzahl); } }
Wenn wir nun den Code ausführen würden, würden wir folgende Konsolenausgabe erzeugen:
Wie du wahrscheinlich merkst, macht es nur Sinn Variablen als statisch zu deklarieren, wenn der Wert für alle Objekte der Klasse gleich sein soll. Das könnte beispielsweise für die Mitarbeiteranzahl oder ähnliche Informationen verwendet werden. Jedoch macht es für das Alter eines Mitarbeiters keinen Sinn, da jeder Mitarbeiter höchstwahrscheinlich ein anderes Alter hat.
Wenn du einige Berechnungen zur Initialisierung der statischen Variablen durchführen möchtest, deklariere einen statischen Block und füge die erforderliche Funktionalität hinzu. Dieser statische Block wird einmal ausgeführt, wenn er in den Speicher geladen wird.
In unserer Klasse Mitarbeiter fügen wir zwei statische Variablen hinzu, name und alter. Dann definieren wir zwei statische Blöcke, um die Variablen name auf Alex und die Variable alter auf 30 zu initialisieren:
class Mitarbeiter { static String name; static int alter; static { System.out.println("Initialiserung der statischen Variable name"); name = "Alex"; } static { System.out.println("Initialiserung der statischen Variable alter"); alter = 30; } static void informationenAufrufen() { System.out.println("Name des Mitarbeiters: " + name); System.out.println("Alter des Mitarbeiters: " + alter); } }
Im Anschluss rufen wir nun die statische Methode informationenAufrufen() innerhalb der main-Methode auf.
public class Main { public static void main(String[] args) { Mitarbeiter.informationenAufrufen(); } }
Wenn wir nun den Code ausführen, erhalten wir folgende Ausgabe, welche Zeile für Zeile die statischen Blöcke ausführt. Schauen wir uns die daraus resultierende Konsolenausgabe an:
Wenn eine Klasse innerhalb einer anderen Java-Klasse erstellt wird, wird sie als innere oder auch verschachtelte Klasse bezeichnet. Um eine statische innere Klasse zu erstellen, musst du den Modifikator static vor dem Klassennamen angeben.
Im folgenden Beispiel ist die Klasse Mitarbeiter eine statische innere Klasse der äußeren Klasse MeineKlasse:
public class MeineKlasse { private static String name = "Simon"; private static int alter = 30; static class Mitarbeiter { public void informationenAufrufen() { System.out.println("Name des Mitarbeiters: " + name); System.out.println("Alter des Mitarbeiters: " + alter); } } }
Die Methode informationenAufrufen() ist eine nicht-statische Methode der Klasse Mitarbeiter. Um sie aufzurufen, müssen wir also eine Instanz der Klasse Mitarbeiter erstellen:
public static void main(String[] args) { MeineKlasse.Mitarbeiter mitarbeiterSimon = new MeineKlasse.Mitarbeiter(); mitarbeiterSimon.informationenAufrufen(); }
Wenn nun die Methode informationenAufrufen() ausgeführt wird, greift sie auf die Werte der statischen Variablen name und alter zu und gibt sie auf der Konsole aus:
Wie du siehst, musst du, um auf die innere Klasse zugreifen zu können, zuerst den äußeren Klassennamen angeben, gefolgt von einem Punkt und dem inneren (in unserem Falle statischen) Klassennamen.
Der Java static Modifikator wird hauptsächlich verwendet, um statische Methoden, statische Variablen, statische Blöcke und statische innere Klassen zu erstellen. Wenn ein statisches Element in einer Java-Klasse deklariert wird, können alle ihre Instanzen es gemeinsam nutzen, aber du kannst seinen Wert nicht ändern. Außerdem kann auf ein statisches Mitglied zugegriffen werden, ohne ein Objekt der entsprechenden Java-Klasse zu erstellen.
😩 Gelangweilt von den Udemy & YouTube-Tutorials?!
Lerne spielerisch Java und komme deiner gutbezahlten (und an der 🌴 liegenden) Traumkarriere einen Schritt weiter.
"Für Leute die gerne Python oder Java lernen wollen ist Codegree klasse. Ist nicht wie bei anderen Konkurrenten auf Videokursen aufgebaut..."
- Lennart Sparbier
100% kostenlos registrieren · keine Kreditkarte notwendig
Im Gegensatz zu der Abendschule oder der alteingesessenen Uni lernst du bei codegree die Sprachen & Pakete, die wirklich im Jobmarkt gesucht werden.
100% kostenlos registrieren · keine Zahlungsdaten notwendig