static关键字问题
public class B {
int n;
static int sum=0;
void setN(int n){
this.n=n;
}
int getSum(){
for(int i=1;i<=n;i++){
sum=sum+i;
}
return sum;
}
}
public class A {
public static void main(String args[]){
B b1=new B();
B b2=new B();
b1.setN(3);
b2.setN(5);
int s1=b1.getSum();
int s2=b2.getSum();
System.out.println(s1+s2);
}
}
运行后输出为27,我想问为什么不是45呢?
我的想法是这样的:第一次b1.getSum();这里执行后sum的值是6,那么执行b2.getSum();
这里的时候sum=6;然后做循环的话就应当相当于
int sum=6;
for(int i=1;i<=5;i++){
sum=sum+i;
}
这样的话结果就应该是45了。
------解决方案--------------------b1.setN(3);/*sum依次为1,3,6*/
b2.setN(5);/*sum依次为7,9,12,16,21*/
你算错了
------解决方案--------------------
这样子 不对 看我的
static new的时候 sum从新变回了0
所以s1 和 s2 开始的时候是一样的都是从sum=0开始
s1。get=1+2+3=6
s2.get=1+2+3+4+5=21
固 ————》》》 6+21=27
楼主,明白?
------解决方案--------------------我也对static不是太懂,但这个看懂了
------解决方案--------------------不知道啊!所以试试啊
------解决方案--------------------static 静态变量,在编译时就分配内存了,所以2个类操作的都是同一个内存地址!数学没学好,搞编程也老火啊