黑马程序员技术交流社区

标题: 按值传递,没有搞明白啊,怎么结果不变呢? [打印本页]

作者: 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