2016-04-05 28 views
0

zunächst Entschuldigung, wenn diese Fragen bereits an anderer Stelle behandelt wurde. Ich bin ein totaler Anfänger und einige Themen sind viel zu kompliziert für mich.Java: Lebenszyklus einer Variablen innerhalb einer Methode

erklärte ich die Variable 'x=0 'am Anfang des Verfahrens und verwendet dann for() Verfahren, bei dem 'x' wurde

bis 45 aufgebaut, wenn der Block von "for() {}" an geschweiften Klammer beendet, warum 'x' noch 45 zurückgekehrt? Ich dachte, der Lebenszyklus von x innerhalb des Blocks wird nach Abschluss von für beendet {}?

Könnte jemand bitte dies klären?

Vielen Dank,

public class Demo4 { 
    public static void main(String args[]) { 
     int i; 
     int x = 0; 

     for (i = 0; i < 10; i++) { 
      x += i; 
     } 
     System.out.println(x); 
    } 
} 
+0

Meinst du, warum 'x' nicht 0 ist? Sie haben seinen Wert in seinem Umfang geändert. Wie hast du 45 von 10 bekommen? –

+0

Die Summe der Ganzzahlen von 0 bis 9 ist 45. –

Antwort

2

Eine lokale Variable von dem Punkt existiert, wo es bis zum Ende des innersten umschließenden Block deklariert wird. Es spielt keine Rolle, welche Konstrukte die Variable verwenden. In Ihrem Fall existiert x bis Ende main().

Allerdings gibt es eine Sonderregel für for Schleifen: Wenn Sie eine Variable als Teil des for Header deklarieren, werden Sie erreichen, was Sie wollen, wie die x nur während der Schleifenausführung existieren:

for (int i = 0, x = 0; i < 10; i++) { 
    x += i; 
} 

(Beachten Sie, dass dies auch i innerhalb der Schleife Kopf erklärt, wenn Sie es wollen außerhalb deklariert werden, müssen Sie diese auch außerhalb initialisieren und nur int x = 0 innerhalb der Schleife Header.)

Beachten Sie, dass dies unterscheidet sich von eine Variable insi deklarieren de die Schleife Körper, wie die Variable in jeder Iteration neu initialisiert werden:

for (int i = 0; i < 10; i++) { 
    int x = 0; 
    x += i; 
} 
0

Der Lebenszyklus einer Variablen in der Java im Block bleibt, in dem die Variable deklariert. Sie können die Blöcke in einem Block berücksichtigen, da sie untergeordnete Blöcke sind, und die im übergeordneten Block deklarierte Variable wird zum untergeordneten Block weitergeleitet. Wenn Sie jedoch eine Variable im inneren (untergeordneten) Block deklarieren, kann sie nicht im äußeren (übergeordneten) Block verwendet werden.

Wie im folgenden Code:

public static void main(String args[]) { 

    for (i = 0; i < 10; i++) { 
     int x = 0; 
     x += i; 
    } 
    System.out.println(x); 
} 

Wenn Sie den obigen Code verwenden, wird es Fehler geben. Da das x im for-Schleifenblock deklariert ist und sein Bereich nur innerhalb dieses Blocks außerhalb davon liegt.

Aber der Code, den Sie gepostet haben, hat x im äußeren Block und for-Schleife ist in diesem Block. Wenn Sie es innerhalb von for-Schleife verwenden, funktioniert es.

Verwandte Themen