标题:这个程序的结果跟static有关系吗?
只看楼主
jack123son
Rank: 1
等 级:新手上路
帖 子:30
专家分:5
注 册:2011-10-8
结帖率:30%
已结贴  问题点数:2 回复次数:6 
这个程序的结果跟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 
2012-08-06 00:14
慢慢来
Rank: 1
等 级:新手上路
帖 子:4
专家分:1
注 册:2012-2-9
得分:1 
CHANGG()的static是因为main()是static的  不然无法调用  结果跟static没关系吧 操作全在test类内,x应该为8
2012-08-07 09:37
zhoufeng1988
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:北京
等 级:贵宾
威 望:27
帖 子:1432
专家分:6329
注 册:2009-5-31
得分:1 
支持楼上。

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

t.x++后应该是6。
change()方法中t.x += 2;后就应该是8。
2012-08-09 16:13
jack123son
Rank: 1
等 级:新手上路
帖 子:30
专家分:5
注 册:2011-10-8
得分:0 
回复 2楼 慢慢来
嗯,我清楚了!谢谢!
2012-08-19 09:54
jack123son
Rank: 1
等 级:新手上路
帖 子:30
专家分:5
注 册:2011-10-8
得分:0 
回复 3楼 zhoufeng1988
嗯,我能明白了,谢谢您的指点 !
2012-08-19 09:54
决斗
Rank: 2
等 级:论坛游民
威 望:1
帖 子:6
专家分:35
注 册:2012-8-24
得分:0 
学习了,这个其实用栈和堆来解释你可能更清楚
2012-08-26 19:15



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-374760-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.410370 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved