Wie deklariere ich eine statische Variable innerhalb der Main-Methode?

7

Können wir Static Variablen in Main method deklarieren? Weil ich eine Fehlermeldung bekomme:

%Vor%     
Priti 31.07.2010, 15:38
quelle

6 Antworten

26

Offensichtlich, nein, können wir nicht.

In% static bedeutet in Java, dass es sich um eine Variable / Methode einer Klasse handelt. Sie gehört zur gesamten Klasse, aber nicht zu einem ihrer bestimmten Objekte.

Dies bedeutet, dass das Schlüsselwort static nur in einem Klassenbereich verwendet werden kann, d. h. es hat keinen Sinn innerhalb von Methoden.

    
Roman 31.07.2010 15:40
quelle
6

Sie können statische Variablen innerhalb Ihrer main -Methode (oder einer anderen Methode) verwenden, aber Sie müssen sie in der Klasse deklarieren:

Das ist völlig in Ordnung:

%Vor%

Auch das ist in Ordnung, aber in diesem Fall ist someNumber eine lokale Variable, keine statische.

%Vor%     
MatrixFrog 31.07.2010 15:44
quelle
4

Da die statischen Variablen Speicher zum Zeitpunkt des Ladens der Klasse zugewiesen werden und der Speicher nur einmal zugewiesen wird. Wenn Sie nun eine statische Variable innerhalb einer Methode haben, dann fällt diese Variable unter den Geltungsbereich der Methode, nicht den Bereich der Klasse und JVM ist nicht in der Lage, Speicher zuzuweisen, da eine Methode mit Hilfe des Klassenobjekts aufgerufen wird, und zwar zur Laufzeit, nicht zum Laden der Klasse.

    
Shekhar 28.05.2011 14:06
quelle
3

Da statische Variablen für die gesamte Klasse verfügbar sind, können sie konzeptionell nur nach der Klasse deklariert werden, deren Geltungsbereich global ist, während alle statischen Blöcke oder Methoden ihren eigenen Geltungsbereich haben.

    
vivek 12.10.2012 16:00
quelle
2

Sie können nicht, warum möchten Sie das tun? Sie können es immer auf der Klassenebene deklarieren, wo es hingehört.

    
Karel Petranek 31.07.2010 15:41
quelle
1

In C können Sie lokal begrenzte Variablen statisch zuweisen. Leider wird dies in Java nicht direkt unterstützt. Aber Sie können den gleichen Effekt erzielen, indem Sie verschachtelte Klassen verwenden.

Zum Beispiel ist das Folgende erlaubt, aber es ist schlechtes Engineering, weil der Umfang von x viel größer ist, als es sein muss. Außerdem gibt es eine nicht offensichtliche Abhängigkeit zwischen zwei Mitgliedern (x und getNextValue).

%Vor%

Man möchte wirklich Folgendes tun, aber es ist nicht legal:

%Vor%

Sie können dies jedoch stattdessen tun,

%Vor%

Es ist bessere Technik auf Kosten von etwas Hässlichkeit.

    
John Henckel 03.02.2014 17:38
quelle

Tags und Links