关于java引用数据类型参数传递的问题!!
迷茫
迷茫 2017-04-17 11:49:40
[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吗?求大牛解答
万分感谢!!

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(5)
ringa_lee

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

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

命令行下用del *.class

迷茫

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

黄舟

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

巴扎黑

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

伊谢尔伦

题主是在钓鱼还是粗心?

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号