2017-05-07 124 views
0

我知道靜態變量是類的一部分,而不是對象的一部分。如何代碼工作的以下行沒有任何問題Java中的靜態變量

class M 
{ 
    static int i=0; 
    void Inc() 
    { 
    System.out.println("Global "+M.i); 
    System.out.println("Local "+this.i); 
    } 
}  

public class StaticTest 
{ 
    public static void main(String args[]) 
    { 
    M m1=new M(); 
    m1.i=99;  //How can the m1 object access i variable of the class 
    m1.Inc(); 
    } 
} 

輸出我得到的是

Global 99 
Local 99 

如何之類的M1對象訪問我的變量?

+0

所有實例變量共享該靜態變量。你引用了它不正確,但它仍然運行 –

+0

http://stackoverflow.com/questions/17242649/can-non-static-methods-modify-static-variables –

回答

1

在兩種情況下它都是非常相同的變量。

不幸的是,java允許您使用non-static語法訪問靜態字段。

這就是這一切,沒有任何其他背後。

0

是的,它允許非靜態成員訪問和更新靜態成員。

查看更多的信息here