当前位置: 代码迷 >> Java相关 >> 这个程序的结果跟static有关系吗?
  详细解决方案

这个程序的结果跟static有关系吗?

热度:101   发布时间:2012-08-06 00:14:02.0
这个程序的结果跟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呀!求解释!
搜索更多相关的解决方案: void  正确答案  public  change  

----------------解决方案--------------------------------------------------------
CHANGG()的static是因为main()是static的  不然无法调用  结果跟static没关系吧 操作全在test类内,x应该为8
----------------解决方案--------------------------------------------------------
支持楼上。

change方法接受一个Test类的对象引用,它把对象的x变量改变了。注意:这是引用传递,在方法内的改动是对原对象产生影响的。

t.x++后应该是6。
change()方法中t.x += 2;后就应该是8。
----------------解决方案--------------------------------------------------------
回复 2楼 慢慢来
嗯,我清楚了!谢谢!
----------------解决方案--------------------------------------------------------
回复 3楼 zhoufeng1988
嗯,我能明白了,谢谢您的指点 !
----------------解决方案--------------------------------------------------------
学习了,这个其实用栈和堆来解释你可能更清楚
----------------解决方案--------------------------------------------------------
  相关解决方案