java基础——值传递和应用传递

public class StringTest {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
StringBuffer a = new StringBuffer("A");
StringBuffer b = new StringBuffer("B");
operate(a,b);
System.out.println(a.toString() + "," + b);
}

static void operate(StringBuffer x, StringBuffer y) {
// TODO Auto-generated method stub
y.append(x);
// System.out.println("=============");
// System.out.println("y=:"+y+"这是传入的b");
// System.out.println("x=:"+x+"这是传入的a");
y = x;
// System.out.println(y = x);
// System.out.println("-------------");
// System.out.println("y=:"+y);
// System.out.println("x=:"+x);
// System.out.println("=============");
}

}

结果:A,BA

 

  比如string a=A这里字符"A"会开辟一个物理地址来储"A"这个值,引用a也会开辟一个物理地址用来存放字符"A"存储的所在地址。当你用string b = a来赋值的时候,是把a的物理地址传递给b而不是字符"A"的地址。这时候改变b引用的内容,丝毫不会影响到a引用的内容。然后方法结束后这两个临时的变量a和b都被抛弃了,这丝毫不会改变y所引用的对象。

 

转载于:https://www.cnblogs.com/0914lx/p/6483691.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值