前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >传参传的到底是什么?

传参传的到底是什么?

作者头像
FunTester
发布2019-08-27 14:38:13
4950
发布2019-08-27 14:38:13
举报
文章被收录于专栏:FunTester

本人在封装一些基本方法的时候遇到过一个问题,我把对象当做参数传到方法里,然后在方法中对这个对象进行了一些修改,但是等我再去输出对象的值和属性时,却发现这些数据并没有修改成功。经过查阅资料发现,方法传参传进去的只是值,修改这些值不会对对象本身造成什么影响,下面用两个int类型的对象交换数据来演示这个错误时如何发生的。

首先这是错误的代码:

代码语言:javascript
复制
     int a = 1, b = 2;
        output("a:" + a, "b:" + b);
        changeNum(a, b);
        output("a:" + a, "b:" + b);

下面是交换数据的方法:

代码语言:javascript
复制
public void changeNum(int a,int b) {
        int i = a;
        a = b;
        b = i;
    }

下面是控制台输出结果:

代码语言:javascript
复制
第1个:a:1
第2个:b:2
第1个:a:1
第2个:b:2

可以看出来,什么都没有变化。下面是正确的代码:

代码语言:javascript
复制
     int a = 1, b = 2;
        output("a:" + a, "b:" + b);
        int i = a;
        a = b;
        b = i;
        output("a:" + a, "b:" + b);

可以看到a和b的值已经完成了交换。如果是想写一个交换数据的方法,只能在返回值上做文章了,代码如下:

代码语言:javascript
复制
     int a = 1, b = 2;
        output("a:" + a, "b:" + b);
        int[] abc = changeNum(a, b);
        a = abc[0];
        b = abc[1];
        output("a:" + a, "b:" + b);

下面是封装的方法:

代码语言:javascript
复制
public int[] changeNum(int a, int b) {
        int[] abc = { b, a };
        return abc;
    }

这个例子举得有些不巧当,封装过之后更麻烦了,方法总结起来就是一句话,在处理完数据之后,一定要有一步赋值的代码,这样才能保证数据跟对象名有正确的映射。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-08-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FunTester 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档