Les static
Schlüsselwort ändert den Lebenszyklus einer Methode oder Variable innerhalb einer Klasse. A static
Methode oder Variable wird zum Zeitpunkt des Ladens einer Klasse erstellt. Eine Methode oder Variable, die nicht deklariert ist als static
wird nur erstellt, wenn die Klasse als Objekt instanziiert wird, z. B. durch Verwendung der new
Betreiber.
Der Lebenszyklus einer Klasse ist, grob gesagt, folgender:
- wird der Quellcode für die Klasse geschrieben und eine Vorlage oder Muster oder Stempel, der dann verwendet werden kann, um
- erstellen Sie ein Objekt mit der
new
Operator, der die Klasse verwendet, um eine Instanz der Klasse als tatsächliches Objekt zu erzeugen, und dann, wenn er mit dem Objekt fertig ist
- das Objekt zerstören und die Ressourcen, die es enthält, wie z. B. den Speicher, während der Garbage Collection zurückfordern.
Um einen ersten Einstiegspunkt für eine Anwendung zu haben, hat Java die Konvention übernommen, dass das Java-Programm eine Klasse haben muss, die eine Methode mit einem vereinbarten oder speziellen Namen enthält. Diese spezielle Methode heißt main()
. Da die Methode unabhängig davon existieren muss, ob die Klasse, die die Hauptmethode enthält, instanziiert wurde oder nicht, muss die main()
Methode muss mit der static
Modifikator, so dass, sobald die Klasse geladen ist, die main()
Methode verfügbar ist.
Wenn Sie Ihre Java-Anwendung über eine Befehlszeile starten, z. B. mit java helloworld
eine Reihe von Aktionen stattfinden. Zunächst wird eine virtuelle Java-Maschine hochgefahren und initialisiert. Dann wird die Datei helloworld.class, die den kompilierten Java-Code enthält, in die Java Virtual Machine geladen. Dann sucht die Java Virtual Machine nach einer Methode in der Datei helloworld
Klasse, die heißt main(String [] args)
. diese Methode muss static
so dass sie auch dann existiert, wenn die Klasse noch nicht als Objekt instanziiert worden ist. Die Java Virtual Machine erzeugt keine Instanz der Klasse, indem sie ein Objekt aus der Klasse erstellt. Sie lädt lediglich die Klasse und beginnt die Ausführung mit der main()
Methode.
Sie müssen also eine Instanz Ihrer Klasse als Objekt erstellen und können dann auf die Methoden und Variablen der Klasse, die nicht mit der static
Modifikator. Sobald Ihr Java-Programm mit dem main()
Funktion können Sie dann alle Variablen oder Methoden verwenden, die den Modifikator von static
da sie als Teil der geladenen Klasse existieren.
Die Variablen und Methoden der Klasse, die sich außerhalb der main()
Methode, die nicht über die static
Modifikator kann erst verwendet werden, wenn eine Instanz der Klasse als Objekt innerhalb der main()
Methode. Nach der Erstellung des Objekts können Sie dann die Variablen und Methoden des Objekts verwenden. Ein Versuch, die Variablen und Methoden der Klasse zu verwenden, die nicht die static
Modifikator zu verwenden, ohne ein Objekt der Klasse zu durchlaufen, wird vom Java-Compiler zur Kompilierzeit abgefangen und als Fehler gekennzeichnet.
import java.io.*;
class HelloWorld {
int myInt; // this is a class variable that is unique to each object
static int myInt2; // this is a class variable shared by all objects of this class
static void main (String [] args) {
// this is the main entry point for this Java application
System.out.println ("Hello, World\n");
myInt2 = 14; // able to access the static int
HelloWorld myWorld = new HelloWorld();
myWorld.myInt = 32; // able to access non-static through an object
}
}