2015-04-27 44 views
1

考慮下面的代碼:標識符預計?

public class Test1 { 
    int i; 
    i = 4; 
} 

public class Test2 { 
    public static void main(String[] args) { 
     Test1 t1 = new Test1(); 
     System.out.println(t1.i); 
    } 
} 

爲什麼會當我嘗試編譯Test2的下面?

./Test1.java:3: error: <identifier> expected 
    i = 4; 
    ^
./Test1.java:3: error: cannot find symbol 
    i = 4; 
    ^
    symbol: class i 
    location: class Test1 
2 errors 
+0

您不能運行的方法之外的代碼中的任意行。將'i = 4;'移到方法或初始化塊中。 – azurefrog

+0

因爲這是錯誤的語法。可以直接用'int i = 4;'或'i = 4;'移動到一個方法或構造函數中,這就是可以執行代碼的地方。 – Kayaman

回答

0

您不能在類體中分配變量。試試這個:

public class Test1 { 
    int i; 
    { 
     i = 4; 
    } 
} 

作爲替代方案,你可以在構造函數中分配i,或在setter方法:

public class Test1 { 
    int i; 

    public Test1(int i) { 
     this.i = i; 
    } 

    public void setI(int i) { 
     this.i = i; 
    } 
} 
0

您聲明 「INT I」 內部類。你可以隨聲明一起分配,也可以使用getter和setter。

public class Test1 { 
    int i = 4; 
} 

OR

public class Test1 { 
    private int i = 4; 

    public int getI() { 
     return i; 
    } 

    public void setI(int i) { 
     this.i = i; 
    } 
}