A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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;
        }
}

评分

参与人数 1技术分 +1 收起 理由
敏敏好学 + 1

查看全部评分

4 个回复

正序浏览
新手解答:

             也不知道解释的合理不,请参考。
             如果不对,请指正。

           1,X为局部变量,存在于栈内存中,为主函数,并且赋值为4.
           2,当主函数调用show方法时,它也进栈,但是不在一个区间,并且没有吧show方法里的X赋值给主函数里的X。 所以当调用完时,show就弹栈了
          所以输出的还是为主函数里的X。

         而引用型变量不同,他们会有指向,并且会覆盖。
        所以楼主是不是把这两者给混淆了。

点评

谢谢啊,整明白了。  发表于 2014-10-2 00:20
回复 使用道具 举报
局部变量,两码事

点评

明白了,但是能详细说一下吗?谢谢 啊  发表于 2014-10-2 00:24
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马