值传递的特点以及例子说明

值传递

     在编程语言中,有值传递和引用传递,而Java中用到的都是值传递
	值传递是指在调用方法时将实际参数"复制"一份传递给形参,这样在方法中对形参的修改将不会影响到实 际参数的值。
	引用传递是指在调用方法时将实际参数的地址直接传递到形参,那么在方法中对参数所进行的修改,将会 影响到实际参数的值。
	在Java中对象名是储存在栈中,对象是储存在堆中,对象名只是储存对象的地址,并不是代表这个对象,所以在将对象名赋值给其他变量时,只是把对象所在堆中的地址赋值,所以当你new多个对象时,其中一个变量改变对象里的值,并不会改变其他对象的值,但是当你两个变量指向同一个对象时(都储存同一个对象地址),其中一个变量改变对象的值,其他变量调用对象的值时,也会改变。
	也就是说,只要有new这个关键字出现,就会在堆中创建不同的对象。下面用例子来说明:
public class A {
	// 初始化两个属性(成员变量)
	public int a = 0;
	public int b = 0;

	// 创建一个方法

	public static void main(String[] ages) {
		// 创建一个对象名为q的对象
		A q = new A();
		// 给a,b赋值
		q.a = 1;
		q.b = 2;
		// 获取a,b的值
		int qx = q.a;
		int qy = q.b;
		// 输出a,b的值
		System.out.print("a="+qx);
		System.out.println(",b="+qy);
		// 创建一个对象名为w的对象
		A w = new A();
		// 获取a,b的值
		int wx = w.a;
		int wy = w.b;
		// 输出a,b的值
		System.out.print("a="+wx);
		System.out.println(",b="+wy);
		// q赋值给e
		A e = q;
		// 获取a,b的值
		int ex = e.a;
		int ey = e.b;
		// 输出
		System.out.print("a="+ex);
		System.out.println(",b="+ey);

	}
}

这里插入图片描述 由上面的一个小例子可以清晰看出,main方法中只new了两个对象,q和e都指向同一个对象,所以当q改变a,b的值时,e调用a,b时a,b的值也改变。而调用a,b的值却没有改变。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值