Java中的值传递和引用传递

java 中没有引用传递,都是值传递的,可以通过传递副本修改对象的,副本交换,并不影响原引用



package Object.reference; public class People { private String name; private int age; public People(){ } public People(String name, int age) { super(); this.name = name; this.age = age; } public String toString(){ return "name:" + name + " age:" + age; } public String getName() { return name; } public int getAge() { return age; } public void setName(String name) { this.name = name; } public void setAge(int age) { this.age = age; } }

  

package Object.reference;

/*  java 中的值传递和引用传递
	http://www.cnblogs.com/clara/archive/2011/09/17/2179493.html
	java 中没有引用传递,都是值传递的
*/
public class Test {


	public static void swap(People a, People b, boolean flag) {
		if (flag) {
			// 可以通过传递副本修改对象的值
			a.setName("changeName");
			a.setAge(100);
		} else {
			//副本交换,并不影响主程序的指针
			People c = a;
			a = b;
			b = c;
		}
	}

	public static void main(String[] args) {


		People p1 = new People("yingjie", 23);
		People p2 = new People("yuexin", 20);

		swap(p1, p2,false);//传递的是p1,p2的副本,函数调用前后p1,p2没任何改变
		
		swap(p1, p2,true);//传递的是p1,p2的副本,可以通过传递副本修改对象的值,函数调用前后p1对象内容改变

	}
}

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mmyzlinyingjie

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值