Was stimmt nicht mit dem unten stehenden Code?
%Vor%Der String-Referenzname zeigt den Kompilierungsfehler an - Java-Fehler - unzulässiger Modifikator für den Parameternamen - Nur endgültig zulässig
Ich bin mit den unten angegebenen Vorschlägen einverstanden, aber ich möchte verstehen, warum das nicht erlaubt ist, obwohl beide statisch sind?
Sie haben Ihre Frage geändert, um zu fragen:
Ich möchte verstehen, warum es nicht erlaubt ist, obwohl beide statisch sind?
Variablen innerhalb einer Methode existieren nur im Stapelrahmen. Die JVM erstellt bei jedem Aufruf einer Methode einen neuen Stapelrahmen, der nach Abschluss der Methode verworfen wird.
Das Schlüsselwort public
wird für Klassen, Methoden und Felder verwendet, um den Zugriff zu steuern. Das ist kein Konzept des Zugriffs, der auf eine Stapel (lokale) Variable angewendet werden könnte. Es existiert nur innerhalb der Methode, wenn es aufgerufen wird, und kann nur innerhalb der Methode aufgerufen werden.
Das Schlüsselwort static
wird für Felder verwendet, um anzugeben, dass nur ein solches Mitglied in allen Instanzen einer Klasse vorhanden ist, und über Methoden, um sie als Mitglieder der Klasse zu erstellen, für die keine Instanz erforderlich ist. Es gibt kein Konzept eines statischen Zustands für irgendetwas auf dem Stapel; es ist vorübergehend. Der Stapelrahmen und alle darin enthaltenen lokalen Variablen werden nicht mehr angezeigt, wenn Sie von einem Methodenaufruf zurückkehren.
Grundsätzlich macht es keinen Sinn, wenn man über eine lokale Variable spricht.
public
und static
können nicht innerhalb einer -Methode -Definition verwendet werden. Dieser Fehler sagt Ihnen also, dass der einzige Modifizierer, der für eine Variable zulässig ist, die innerhalb einer -Methode definiert ist, final
ist.
Sie beheben es, indem Sie entweder die fehlerhaften Modifikatoren entfernen:
%Vor%oder Verschieben der Variablendefinition aus der Methode wie folgt
%Vor% Um zu verstehen, warum, müssen Sie verstehen, was jeder der drei Modifikatoren ( public
und static
und final
) allein bedeutet. String Name
sagt nur, dass wir einen String
im Auge behalten und ihn Name
nennen.
public
sagt, dass jeder Teil des Programms es lesen kann (sonst könnte es nur von Code gelesen werden, der in der Klasse MyClass
geschrieben wurde).
public
gibt an, welcher anderer Code Zugriff darauf hat. Innerhalb einer Methode macht das keinen Sinn. Auf Variablen, die in Methoden definiert sind, kann nur innerhalb dieser Methode zugegriffen werden, und sobald die Methode abgeschlossen ist, werden sie verworfen. Daher wäre es unmöglich, dass diese Variablen public
sind.
static
sagt, dass die Variable Name
ein Teil der Klasse selbst und nicht einer Instanz der Klasse ist. Mit anderen Worten, alle Instanzen der Klasse MyClass
teilen dieselbe Name
Variable.
static
gibt an, wie auf sie zugegriffen wird (entweder für eine Instanz der Klasse oder über die Klasse selbst). Innerhalb einer Methode ist dies nicht sinnvoll, da lokale Variablen nach dem Schließen der Methode verworfen werden, sodass nichts anderes darauf zugreift.
final
sagt, dass sich der Wert von Name
niemals ändert, sobald er zugewiesen wurde.
final
beschreibt, wie die Variable verwendet wird. Es macht Sinn innerhalb einer Methode, weil es nicht um den Zugriff geht.
Sie können den öffentlichen statischen Modifikator nicht für eine lokale Variable verwenden. Führen Sie einen der folgenden Schritte durch
%Vor%oder deklarieren Sie es als eine Membervariable
%Vor%Denken Sie daran, dass das letzte das einzige Modifier der lokalen Variablen ist
wie Sie die String-Variable deklarieren als public static final String Name="Robin Wilson";
Gemäß den Java-Regeln ist This String name die lokale Variable, da Sie sie in der Methode Main deklarieren. Also nur das Finale ist hier erlaubt. Sie können es als ** final String name="Robin Wilson"; ** in der Hauptmethode definieren. Für Lokale Variablen ist nur final zulässig.
Statische Deklaration einer Komponente macht auf Klassenebene verfügbar. Die Deklaration einer Komponente in einer Methode wird im Stapelspeicher der Methode verfügbar gemacht und kann daher nur über ein Objekt aufgerufen werden. Statik gehört zur ganzen Klasse. Daher hat es keinen Sinn, eine Variable statisch zu deklarieren. Sie erhalten sogar den Fehler Kompilierzeit, wenn Sie dies versuchen. Endgültiges Schlüsselwort hat nichts mit Speicher zu tun.
Tags und Links java