2017-02-17 3 views
-2

wenn wir versuchen,Warum können wir keine Zuweisung im Klassenkörper machen?

class A{ 
int a = 5 ; 
a=6; // we will get error 
} 

ich es diese Frage wie meine sah zu tun, aber nicht das gleiche Why can't I do assignment outside a method?

aber die Antworten mich nicht überzeugen, wie here

wir diese Erklärung sind Erklärung siehe wie auch die Zuordnung, so dass die Klasse geschweifte Klammern der Block des Codes sein sollte, der sie enthält, auch jede Anweisung ist in einem Block von Code sicher in der Klasse als oberste Ebene oder Methoden als niedriger, so wie sie sagen, muss eine Anweisung nur innerhalb einer sein Block von Code?

ich brauche eine antwort oder eine referenz bitte? danke fürs lesen.

+0

„so dass die Klasse Klammern der Code-Block sein sollten“ - nein, eine Klassendeklaration nicht als Block zählt. Es ist nicht wirklich klar, was Sie hier erreichen wollen. Sie * können keine willkürlichen Anweisungen in einer Klasse schreiben - nur Deklarationen oder Initialisierungsblöcke. Sie können die [JLS] (http://docs.oracle.com/javase/specs/jls/se8/html/index.html) für alle Details lesen, aber grundsätzlich müssen Sie akzeptieren, dass dies die Regeln sind. –

+1

Ich bin mir nicht sicher, was Sie fragen. Warum sollten sich "class" Zahnspangen so verhalten, wie Sie glauben, dass sie sollten? Sie tun es nicht; das ist nur Java. –

+0

so das hat nicht funktioniert, weil 1) der Klassenkörper ist kein Block, wenn dies wahr ist, so wie es akzeptiert eine Deklaration als der Link sagt, es braucht auch einen Block von Code. 2) der Klassenkörper akzeptiert nur die Deklaration. Ich denke, das ist die nahe Antwort. – Sam

Antwort

0

In den Beispielen, die Sie gepostet haben, zeigen sie Ihnen nicht den vollständigen Code. Sie machen tatsächlich Aufgaben in Methoden. Das heißt nicht, dass die Zuweisung in einer Klasse nicht möglich ist.

class A { 
    int a = 5; 
} 

Dadurch wird eine Klassenvariable erstellt, auf die alle Methoden in dieser Klasse zugreifen können. Die Variable kann jedoch nicht außerhalb einer Methode neu zugewiesen werden. Dies liegt daran, dass Klassenvariablen nicht wie Code ausgeführt werden (nicht sequenziell).

ich gelesen würde, wie Variablen arbeitet in Java

+0

int a = 5; Dies ist eine Initialisierung, keine Zuweisung. Wie du sagst, wird die Neuzuweisung im Klassenkörper nicht funktionieren. weil es nicht als Code akzeptiert wird! – Sam

+0

int a = 5; ist eine Deklaration und Initialisierung. Zuordnung war eine schlechte Arbeit zu verwenden, sorry, Initialisierung ist besser. Technisch ist es alles Code, der Grund, warum ich sagte, dass Klassenvariablen nicht gleich behandelt werden, ist, dass Klassenvariablen beim Laden der Klasse einmal in den Speicher initialisiert werden. Es wird nicht jedes Mal sequenziell ausgeführt, wenn es wie eine Methode aufgerufen wird. – ShaneNal

+0

thx ich begann zu bekommen es wird jetzt mehr suchen. – Sam

Verwandte Themen