不好意思,想問個比較基礎的問題,我知道題意是要考static與 non-static,但我看了
很久都想不通,如下:
class Ans{
int ns;
static int s;
Ans(int ns){
if(s<ns){
s=ns;
this.ns=ns;
}
}
void print( ){
system.out.println(“ns= ”+ns+“ s= ”+s);
}
}
public class Test{
public static void main(String[ ] args){
Ans a = new Ans(50);
Ans b = new Ans(125);
Ans c = new Ans(100);
a.print( );
b.print( );
c.print( );
}
}
我以為結果會是 ns=50 s=50
ns=125 s=125
ns=100 s=100
但結果是 ns=50 s=125
ns=125 s=125
ns=0 s=125
我知道全域變數int在沒有設定的情況下,系統會預設為0
所以在new Ans(50);時,經過if判斷式,會被兩個變數設為50
所以我以為答案是我想的那樣,
但從正確答案看來,static int s;會留著之前的50,而int ns;卻會重新歸0
想請問這是為什麼呢?我以為重新new過以後,指派給新的物件,應該會是不相關的兩個
物件?