参数传递、值传递

举个例子,是我在学习过程中遇到的,应该是参数传递方面的知识(ps:概念不是很清楚,错了请指正)
第一个:

        StringBuffer a=new StringBuffer("A");
        StringBuffer b=new StringBuffer("B");
        new TestStringBuffere().operate(a,b);
        System.out.println(a+","+b);

        public void operate(StringBuffer a, StringBuffer b) {
            a.append(b);
            System.out.println("a:"+a);
            b=a;
            System.out.println("b:"+b);
        }
//输出结果
a:AB
b:AB
AB,B //我原以为这里应该是AB,AB

初学的时候,这个输出结果让我很不解,所以深入学习了一番。

        StringBuffer a=new StringBuffer("A");
        StringBuffer b=new StringBuffer("B");

执行到上面这一句的时候内存图如下:
这里写图片描述
当执行到

new TestStringBuffere().operate(a,b);

这里的时候内存图如下
首先是为形参分配内存,并且该形参变量和变量b引用同一个对象
这里写图片描述
接着进入函数内部

a.append(b);

这时候,a的引用对象发生了改变,并且形参b重新指向了a的引用对象
这里写图片描述

到此为止,不难发现,从始至终我们的变量b都没发生改变。
所以最后的输出结果不言而喻,就是

//输出结果
a:AB
b:AB
AB,B 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值