2016-06-08 22 views
0
public class MainClass { 
    static final int i = GetI(); 
    static int j = 9; 

    public static void main(String[] args) { 
     System.out.println("i value : " + i); 
    } 

    static int GetI() { 
     return j; 
    } 
} 

Above Code druckt ‚i-Wert: 0‘
1. Aber soll das Verfahren den Wert von j zurück, die 9 ist und so den Wert von Ich werde 9 sein.
2. Wenn wir Variable j als endgültig machen, dann wird der output 'ich Wert: 9', was in Ordnung ist.Instanz statisches Variable nicht in Verfahren initialisieren, wenn Methode über sie genannt wird

Was könnte der Grund sein?
Danke.

Antwort

1

Sie haben Variable j deklariert, nachdem Variable i initialisiert wurde. In der Hauptmethode haben Sie i eingegeben, die die GetI() Methode aufruft. Die Methode GetI() gibt j zurück, bis zu dem Zeitpunkt, an dem j nicht initialisiert wird. Sie haben auch keinen Fehler beim Zugriff auf j erhalten, weil es als statische Variable deklariert ist. Ausgabe ist - 0, da der Standardwert von int 0 ist, der verwendet wird, wenn er nicht initialisiert wird. Versuchen - Variable j vor i dann Ausgang wird 9 sein, die Sie wollen. Dadurch wird Variable j initialisiert, bevor sie später verwendet wird. Hoffe diese Hilfe.