Definition von Instanzvariablen und Klassenvariablen
Bei der Deklaration von Mitgliedsvariablen werden diejenigen, die mit dem Schlüsselwort „static“ geändert werden, als Klassenvariablen bezeichnet. Klassenvariablen werden auch als statische Variablen oder statische Variablen bezeichnet, während diejenigen, die nicht mit dem Schlüsselwort „static“ geändert werden, als Instanzvariablen bezeichnet werden.
Zum Beispiel:
classMain{floatx;//Instanzvariable staticinty;//Klassenvariable}
Beachten:
Das Schlüsselwort static muss vor dem Typ der Variablen platziert werden.
Der Unterschied zwischen Instanzvariablen und Klassenvariablen
1. Die Instanzvariablen verschiedener Objekte unterscheiden sich voneinander:
Mithilfe des neuen Operators kann eine Klasse mehrere verschiedene Objekte erstellen. Die den verschiedenen Objekten zugewiesenen Instanzvariablen haben keine Auswirkungen auf die anderen Instanzvariablen des Objekts.
2. Alle Objekte teilen sich Klassenvariablen:
Wenn die Klasse Klassenvariablen enthält und der neue Operator zum Erstellen mehrerer verschiedener Objekte verwendet wird, belegen die diesen Objekten zugewiesenen Klassenvariablen denselben Speicher. Das Ändern der Klassenvariablen eines Objekts wirkt sich auf die Klasse anderer Objekte aus bedeutet, dass Objekte Klassenvariablen gemeinsam nutzen.
3. Greifen Sie direkt über den Klassennamen auf Klassenvariablen zu:
Wenn ein Java-Programm ausgeführt wird, wird die Bytecode-Datei der Klasse in den Speicher geladen. Wenn die Klasse kein Objekt erstellt, wird den Instanzvariablen in der Klasse kein Speicher zugewiesen. Allerdings wird den Klassenvariablen in der Klasse beim Laden der Klasse in den Speicher entsprechender Speicherplatz zugewiesen. Wenn diese Klasse Objekte erstellt, unterscheiden sich die Instanzvariablen verschiedener Objekte voneinander, dh es werden unterschiedliche Speicherplätze zugewiesen, und die Klassenvariablen weisen keinen Speicher mehr zu. Alle Objekte teilen sich Klassenvariablen, dh die Klassenvariablen von Alle Objekte sind gleich. Der von Klassenvariablen belegte Speicherplatz wird erst beim Beenden des Programms freigegeben.
Daher kann auf eine Klassenvariable nicht nur über ein Objekt, sondern auch direkt über den Klassennamen zugegriffen werden, während auf die Instanzvariablen eines Objekts über das Objekt, jedoch nicht über den Klassennamen, zugegriffen werden kann.