Was ist der Unterschied zwischen einer Instanz und einer (statischen) Klassenvariablen in Java [closed]

8

Der Titel dieser Frage ist eigentlich eine vorherige Prüfungsfrage und ich suche nach einer Klärung / einer Antwort darauf.

Bitte beachten Sie, dass ich Java lerne und mich mit dessen Syntax vertraut mache.

Ich verstehe, dass diese Frage vielleicht schon einmal gestellt wurde und wenn ja, kann mir bitte jemand zeigen, wo ich auf die Frage zugreifen kann, wenn möglich? Ich bitte um Entschuldigung, wenn dies der Fall ist. Um zu zeigen, dass ich diesen Bereich erforscht habe, ist mein Verständnis, dass Instanzvariablen zu den Objekten / Instanzen einer bestimmten Klasse (Vorlage) gehören und innerhalb dieser Instanz / des Objekts bei Bedarf geändert (mutiert) werden können.

>

Eine Klassenvariable ist eine Variable, die nur eine Kopie hat und auf die zugegriffen werden kann, aber nicht geändert werden kann (mutiert?), aber für alle Klassen verfügbar ist?

Bin ich hier richtig?

Was genau macht das "Static"? Ist eine Instanz einer Klasse nur statisch, wenn sie sich in der Hauptinstanz einer Klasse befindet?

Vielen Dank.

    
PrimalScientist 18.03.2013, 20:34
quelle

3 Antworten

20

Eine statische Variable wird von allen Instanzen der Klasse gemeinsam genutzt, während eine Instanzvariable für jede Instanz der Klasse eindeutig ist.

Der Speicher einer statischen Variablen wird zur Kompilierungszeit zugewiesen, sie werden zum Zeitpunkt des Ladens geladen und zur Zeit der Klasseninitialisierung initialisiert. Im Fall einer Instanzvariable wird alles oben zur Laufzeit ausgeführt.

Hier ist ein hilfreiches Beispiel:

Eine Instanzvariable ist eine pro Objekt: Jedes Objekt hat eine eigene Kopie seiner Instanzvariablen.

%Vor%

Sowohl t1 als auch t2 haben ihre eigene Kopie von x.

Eine statische Variable ist eine pro Klasse: Jedes Objekt dieser Klasse hat dieselbe statische Variable.

%Vor%

Sowohl t1 als auch t2 teilen sich das gleiche x.

    
Ajay S 18.03.2013, 20:36
quelle
5

Sie können mehrere Instanzen Ihrer Klasse erstellen. Wenn Sie eine Instanzvariable deklarieren, erhält jede Instanz eine eigene Kopie dieser Variablen. Wenn Sie eine statische Variable deklarieren, ist dies die gleiche Variable und der gleiche Wert für alle Instanzen.

%Vor%     
Robert Harvey 18.03.2013 20:35
quelle
1

Eine statische Variable speichert einen Wert, der von allen Instanzen (oder der Nicht-Instanz) der Klasse geteilt wird, in der sie definiert ist. Wo als Instanz Variable nach Namen erstellen Sie eine neue Kopie jedes Mal.Wenn das neue Objekt erstellt wird.

    
Pragnani 18.03.2013 20:41
quelle