ITPub博客

首页 > 数据库 > 数据库开发技术 > 传参传的到底是什么?

传参传的到底是什么?

原创 数据库开发技术 作者:FunTester 时间:2019-08-24 09:34:55 0 删除 编辑

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

首先这是错误的代码:

1     int a = 1, b = 2;
2        output("a:" + a, "b:" + b);
3        changeNum(a, b);
4        output("a:" + a, "b:" + b);

下面是交换数据的方法:

1public void changeNum(int a,int b) {
2        int i = a;
3        a = b;
4        b = i;
5    }

下面是控制台输出结果:

1第1个:a:1
2第2个:b:2
3第1个:a:1
4第2个:b:2

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

1     int a = 1, b = 2;
2        output("a:" + a, "b:" + b);
3        int i = a;
4        a = b;
5        b = i;
6        output("a:" + a, "b:" + b);

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

1     int a = 1, b = 2;
2        output("a:" + a, "b:" + b);
3        int[] abc = changeNum(a, b);
4        a = abc[0];
5        b = abc[1];
6        output("a:" + a, "b:" + b);

下面是封装的方法:

1public int[] changeNum(int a, int b) {
2        int[] abc = { b, a };
3        return abc;
4    }

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

往期文章精选

  1. java一行代码打印心形

  2. Linux性能监控软件netdata中文汉化版

  3. 接口测试代码覆盖率(jacoco)方案分享

  4. 性能测试框架

  5. 如何在Linux命令行界面愉快进行性能测试

  6. 图解HTTP脑图

  7. 写给所有人的编程思维

  8. 将json数据格式化输出到控制台

  9. 如何测试概率型业务接口

  10. 将swagger文档自动变成测试代码

  11. Mac+httpclient高并发配置实例

  12. httpclient处理多用户同时在线

公众号地图 ☢️ 一起来~FunTester

原文作者:FunTester;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2019-07-07

  • 博文量
    1037
  • 访问量
    420666