ball ball路過大佬看下關(guān)于修改了static變量后的輸出結(jié)果的小小代碼
class?A {
static?int?i?= 0;
int?j?= 1;
A(int?j) {
this.j?= j;
i++;
}
}
class?Test?{
public?static?void?main(String[] args) {
A a1?= new?A(2);
A a2?= new?A(5);
System.out.println(a1.i?+ " "?+ a1.j?+ " "?+ a2.i?+ " "?+ a2.j);
}
}
為什么輸出的是2 2 2 5而不是1 2 25
2018-07-03
因為你輸出的是最終的結(jié)果,不是按順序輸出的結(jié)果。你輸出了兩次i,其實都是相同的,不是說構(gòu)造方法賦值不一樣,然后輸出的順序也不一樣。
除非在構(gòu)造方法里加上輸出i;這樣才能看到1到2的結(jié)果!
還有就是i不用a1.i這樣調(diào)用嗎,本來主方法就是靜態(tài)方法,靜態(tài)方法可以直接輸入名字調(diào)用靜態(tài)變量或者靜態(tài)方法。
2018-07-03
i作為靜態(tài)變量,可以理解為是跟類進行綁定的,也就是只要i發(fā)生了改變,那么所有該類的i都會隨之發(fā)生變化,所以你在最后進行輸出的時候,其實本質(zhì)輸出的都是A.i,這就是為什么輸出的都是一個值2了