Heim > Java > javaLernprogramm > Was ist der Unterschied zwischen statischen Java-Variablen und Instanzvariablen?

Was ist der Unterschied zwischen statischen Java-Variablen und Instanzvariablen?

WBOY
Freigeben: 2023-05-05 15:40:07
nach vorne
1736 Leute haben es durchsucht

Es gibt zwei Arten von Mitgliedsvariablen der

Java-Klasse: Eine davon ist eine durch das Schlüsselwort static geänderte Variable, die als Klassenvariable oder Statische Variable bezeichnet wird; die andere wird nicht durch Static geändert und ist eine Instanzvariable .

Der Unterschied in der grammatikalischen Definition: Das Schlüsselwort static muss vor statischen Variablen hinzugefügt werden, jedoch nicht vor Instanzvariablen.

Der Unterschied bei der Ausführung des Programms: Instanzvariablen gehören zu den Attributen eines Objekts. Bevor der darin enthaltenen Instanzvariablen Speicherplatz zugewiesen wird, kann diese Instanzvariable verwendet werden. Statische Variablen gehören nicht zu einem Instanzobjekt, sondern zu einer Klasse und werden daher auch als Klassenvariablen bezeichnet. Solange das Programm den Bytecode der Klasse lädt, ohne Instanzobjekte zu erstellen, wird den statischen Variablen Speicherplatz zugewiesen Es können statische Variablen verwendet werden. Kurz gesagt, Instanzvariablen müssen ein Objekt erstellen, bevor sie über dieses Objekt verwendet werden können, während auf statische Variablen direkt über den Klassennamen verwiesen werden kann.

Für das folgende Programm wird beispielsweise immer nur eine staticVar-Variable zugewiesen, und jedes Mal, wenn ein Instanzobjekt erstellt wird, wird diese staticVar bei jedem Erstellen einer Instanz um 1 erhöht Wenn ein Objekt erstellt wird, wird es zugewiesen. Eine InstanzVar bedeutet, dass mehrere InstanzVar zugewiesen werden können und der Wert jeder InstanzVar nur einmal erhöht wird.

public class VariantTest  {  public static int staticVar = 0;  public int instanceVar = 0;  public VariantTest()  {  staticVar++;  instanceVar++;  System.out.println(“staticVar = ”++staticVar “, instanceVar = ” ++instanceVar);  }  }
Nach dem Login kopieren

Es ​​gibt nur eine statische Variable einer Klasse im Speicher. Die Java Virtual Machine reserviert während des Ladevorgangs der Klasse Speicher für die statische Variable. Die statische Variable befindet sich im Methodenbereich und wird von allen Instanzen von geteilt die Klasse. Auf statische Variablen kann direkt über den Klassennamen zugegriffen werden, und ihr Lebenszyklus hängt vom Lebenszyklus der Klasse ab.

Und Instanzvariablen hängen von der Instanz der Klasse ab. Jedes Mal, wenn eine Instanz erstellt wird, weist die Java Virtual Machine den Instanzvariablen Speicher zu. Die Instanzvariablen befinden sich im Heap-Bereich und ihr Lebenszyklus hängt vom Lebenszyklus der Instanz ab.

public class Temp {  int t; //实例变量  public static void main(String args[]){  int t=1; //局部变量  System.out.println(t); //打印局部变量  Temp a= new Temp(); //创建实例  System.out.println(a.t); //通过实例访问实例变量  }  }
Nach dem Login kopieren

Das Ergebnis ist:

1

0 (Mitgliedsvariablen haben Standardwerte, lokale Variablen jedoch nicht)

Ändern Sie den Code in:

public class Temp {  static int t; //类变量  public static void main(String args[]){  System.out.println(t); //打印类变量  int t=1; //局部变量  System.out.println(t); //打印局部变量  Temp a= new Temp(); //创建实例  System.out.println(a.t); //通过实例访问实例变量  }  }
Nach dem Login kopieren

Das Ergebnis ist

0

1

0

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen statischen Java-Variablen und Instanzvariablen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage