这个程序的结果跟static有关系吗?
public class Test{int x=5;
public static void main(String argv[]){
Test t=new Test();
t.x++;
change(t);
System.out.println(t.x);
}
static void change(Test m){
m.x+=2;
}
}
输出的结果是8。
static void change(Test m)这个方法不是void的吗?也就是没有返回值啊!所以执行完m.x+=2;x的值还是5。然后x++,x就变成了6,可是正确答案是8呀!求解释!
----------------解决方案--------------------------------------------------------
CHANGG()的static是因为main()是static的 不然无法调用 结果跟static没关系吧 操作全在test类内,x应该为8
----------------解决方案--------------------------------------------------------
支持楼上。
change方法接受一个Test类的对象引用,它把对象的x变量改变了。注意:这是引用传递,在方法内的改动是对原对象产生影响的。
t.x++后应该是6。
change()方法中t.x += 2;后就应该是8。
----------------解决方案--------------------------------------------------------
回复 2楼 慢慢来
嗯,我清楚了!谢谢! ----------------解决方案--------------------------------------------------------
回复 3楼 zhoufeng1988
嗯,我能明白了,谢谢您的指点 ! ----------------解决方案--------------------------------------------------------
学习了,这个其实用栈和堆来解释你可能更清楚
----------------解决方案--------------------------------------------------------