Es gibt kein Konzept für globale Variablen, aber wir können ein „pseudoglobales“ Konzept durch „statisch“ implementieren. „Statisch“ bedeutet, dass es zum Ändern von Mitgliedsvariablen und Mitgliedsmethoden verwendet wird. Natürlich können auch Codeblöcke geändert werden.
Java unterteilt den Speicher in Stapelspeicher und Heapspeicher. Der Stapelspeicher wird zum Speichern einiger grundlegender Arten von Variablen, Arrays und Objektreferenzen verwendet, und der Heapspeicher speichert hauptsächlich einige Objekte. Wenn die JVM eine Klasse lädt und die Klasse über statisch geänderte Mitgliedsvariablen und Mitgliedsmethoden verfügt, wird ein Speicherbereich mit fester Größe für diese Mitgliedsvariablen und Mitgliedsmethoden an einem festen Ort geöffnet. Mit diesen „festen“ Funktionen verfügt die JVM können sehr bequem darauf zugreifen. Gleichzeitig bleiben ihre Handles unverändert, wenn statische Mitgliedsvariablen und Mitgliedsmethoden ihren Gültigkeitsbereich nicht verlassen. Gleichzeitig bedeutet das in static enthaltene Konzept von „statisch“, dass es unwiederbringlich ist, das heißt, wenn Sie es an dieser Stelle ändern, wird es nicht in seinen ursprünglichen Zustand zurückkehren, und wenn Sie es bereinigen, wird es nicht wiederhergestellt nicht zurückkommen.
Die durch Static geänderten Mitgliedsvariablen und Mitgliedsmethoden sind unabhängig von der Klasse. Sie hängen nicht von einer bestimmten Instanzvariablen ab, was bedeutet, dass sie von allen Instanzen der Klasse gemeinsam genutzt wird. Die Referenzen aller Instanzen verweisen auf denselben Ort, und Änderungen an einer Instanz führen zu Änderungen an anderen Instanzen.
public class User { private static int userNumber = 0 ; public User(){ userNumber ++; } public static void main(String[] args) { User user1 = new User(); User user2 = new User(); System.out.println("user1 userNumber:" + User.userNumber); System.out.println("user2 userNumber:" + User.userNumber); } } ------------ Output: user1 userNumber:2 user2 userNumber:2
Statik kann zum Ändern von Mitgliedsvariablen und Mitgliedsmethoden verwendet werden. Wir nennen sie statische Variablen und statische Methoden, auf die direkt über den Klassennamen zugegriffen werden kann.
ClassName.propertyName
ClassName.methodName(……)
Der statische modifizierte Codeblock stellt einen statischen Codeblock dar, der ausgeführt wird, wenn die JVM den Klassencode lädt sehr nützlich. (Für die Einführung der Verwendung von Codeblöcken in den letzten Tagen bleiben Sie bitte dran)
2.1. Statische Variablen
Durch statische Variablen geänderte Variablen werden als statische Variablen bezeichnet, und Variablen, die dies nicht sind Mit Static geänderte Variablen sind Instanzvariablen Dafür teilen sich einmal alle Instanzen einer Klasse statische Variablen, auf die direkt über den Klassennamen zugegriffen werden kann.
Aber die Instanzvariable ist anders. Sie wird von der Instanz begleitet. Jedes Mal, wenn eine Instanz erstellt wird, wird eine Instanzvariable generiert, die mit der Instanz lebt und stirbt.
Daher verwenden wir im Allgemeinen statische Variablen in diesen beiden Situationen: Datenaustausch zwischen Objekten und einfacher Zugriff.
2.2. Statische Methode
Die statische modifizierte Methode wird als statische Methode bezeichnet und wir rufen sie direkt über den Klassennamen auf. Da es beim Laden der Klasse vorhanden ist, hängt es von keiner Instanz ab. Daher muss die statische Methode implementiert werden, was bedeutet, dass es sich nicht um eine abstrakte Methode handeln kann.
Eine statische Methode ist eine spezielle Methode in einer Klasse. Wir deklarieren Methoden nur dann als statisch, wenn wir sie wirklich benötigen. Beispielsweise sind alle Methoden der Math-Klasse statisch.
2.3. Statischer Codeblock
Der durch Statik geänderte Codeblock wird zusammen mit dem Laden der Klasse ausgeführt und kann platziert werden nach Belieben. Kann überall existieren.
3. Einschränkungen von Static
1. Es können nur statische Variablen aufgerufen werden.
2. Es können nur statische Methoden aufgerufen werden.
3. Auf This und Super darf in keiner Form verwiesen werden.
4. Statische Variablen müssen initialisiert werden, wenn sie definiert werden, und die Initialisierungszeit muss früher sein als bei nicht statischen Variablen.
Zusammenfassung: Unabhängig davon, ob es sich um eine Variable, eine Methode oder einen Codeblock handelt, ist sie beim Laden der Klasse „bereit“, wenn sie mit Static geändert wird, dh sie kann verwendet werden oder hat ausgeführt wurde und vom Objekt getrennt und ausgeführt werden kann. Im Gegenteil, wenn keine statische Aufladung vorhanden ist, muss sie von der Objektinstanz abhängen.
Achtung, Studierende, die Java lernen! ! ! Wenn Sie während des Lernprozesses auf Probleme stoßen oder Lernressourcen erhalten möchten, können Sie gerne der Java-Lernaustauschgruppe beitreten: 159610322 Lassen Sie uns gemeinsam Java lernen!
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der statischen Schlüsselwortinstanzen in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!