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吗?求大牛解答
万分感谢!!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
你真得试过了?你确定你的这段程序输出是
x=3
?嗯,我知道原因了,你先把所有的
.class
文件都删掉,然后重复一遍整个过程你就知道问题出在哪里了。命令行下用
del *.class
首先,你应该知道:
1. 对于基本类型,在方法体内对方法参数进行重新赋值,并不会改变原有变量的值。
2. 对于引用类型,在方法体内对方法参数进行重新赋予引用,并不会改变原有变量所持有的引用。
3. 方法体内对参数进行运算,不影响原有变量的值。
4. 方法体内对参数所指向对象的属性进行运算,将改变原有变量所指向对象的属性值。
其次,对象和引用型变量被当作参数传递给方法时,在方法实体中,无法重新给原变量重新赋值,但是可以改变它所指向对象的属性。至于到底它是值传递还是引用传递,这并不重要,重要的是我们要清楚当一个引用被作为参数传递给一个方法时,在这个方法体内会产生什么变化,这才是最重要的。
试一下呗 看看跑完是啥子结果
楼主这算钓鱼么?有点略恶劣啊
题主是在钓鱼还是粗心?