关于java引用数据类型参数传递的问题!!

class Demo 
{     
   int x=3;
   public static void   main(String[] args){
       Demo d = new Demo();
       d.x=9;
       show(d);       
       System.out.println("x="+d.x);
    }

    public static void show(Demo d){
       d.x=4;
    }
}

菜鸟刚开始学。。这个代码执行出来的结果是x=3 但是这个结果不应该是4吗?求大牛解答
万分感谢!!

阅读 6.5k
5 个回答

你真得试过了?你确定你的这段程序输出是x=3

嗯,我知道原因了,你先把所有的.class文件都删掉,然后重复一遍整个过程你就知道问题出在哪里了。

命令行下用del *.class

首先,你应该知道:
1. 对于基本类型,在方法体内对方法参数进行重新赋值,并不会改变原有变量的值。
2. 对于引用类型,在方法体内对方法参数进行重新赋予引用,并不会改变原有变量所持有的引用。
3. 方法体内对参数进行运算,不影响原有变量的值。
4. 方法体内对参数所指向对象的属性进行运算,将改变原有变量所指向对象的属性值。
其次,对象和引用型变量被当作参数传递给方法时,在方法实体中,无法重新给原变量重新赋值,但是可以改变它所指向对象的属性。至于到底它是值传递还是引用传递,这并不重要,重要的是我们要清楚当一个引用被作为参数传递给一个方法时,在这个方法体内会产生什么变化,这才是最重要的。

试一下呗 看看跑完是啥子结果

楼主这算钓鱼么?有点略恶劣啊

题主是在钓鱼还是粗心?

推荐问题
logo
101 新手上路
子站问答
访问
宣传栏