黑马程序员技术交流社区
标题:
按值传递,没有搞明白啊,怎么结果不变呢?
[打印本页]
作者:
dark_horse_xu
时间:
2014-10-1 20:06
标题:
按值传递,没有搞明白啊,怎么结果不变呢?
class Demo
{
public static void main(String[] args)
{
int x = 4;//栈内存中就有个变量 x = 4;
show(x);//调用show();方法,把x=4传递给了show()方法,x = 2,x不就变成2 了?
System.out.println(x);//在输出x,为什么等于4呢?
}
public static void show(int x)
{
x = 2;
}
}
作者:
付江涛
时间:
2014-10-1 20:20
局部变量,两码事
作者:
白金角斗士
时间:
2014-10-1 20:58
新手解答:
也不知道解释的合理不,请参考。
如果不对,请指正。
1,X为局部变量,存在于栈内存中,为主函数,并且赋值为4.
2,当主函数调用show方法时,它也进栈,但是不在一个区间,并且没有吧show方法里的X赋值给主函数里的X。 所以当调用完时,show就弹栈了
所以输出的还是为主函数里的X。
而引用型变量不同,他们会有指向,并且会覆盖。
所以楼主是不是把这两者给混淆了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2