不好意思,想问个比较基础的问题,我知道题意是要考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过以后,指派给新的物件,应该会是不相关的两个
物件?