java 方法的参数传递之引用对象

public class Test7 {

	public static void swap(DataSwap ds1) {
		ds1.a=6;
		System.out.println("在swap方法中ds1.a的值:"+ds1.a);
	}	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		DataSwap dSwap=new DataSwap();
		System.out.println("在调用swap方法之前ds1.a的 值:"+dSwap.a);
		swap(dSwap);
		System.out.println("在调用swap方法之后ds1.a的 值"+dSwap.a);		
	}
}

在调用swap方法之前ds1.a的 值:0
在swap方法中ds1.a的值:6
在调用swap方法之后ds1.a的 值6
  1. DataSwap dSwap=new DataSwap();new DataSwap()存到了堆内存中,假设地址是BE2500.
  2. dSwap是引用对象,它存到栈中,假设地址是AD9500,此时值就是 new DataSwap()对象在堆中的地址BE2500
  3. 调用swap方法,先将dSwap这个引用对象保存到栈中,假设地址是AD9600,它存的值是来源于实参dSwap,也就是dSwap在栈中存的值BE2500,这个值实际上就是之前new DataSwap()对象在堆内存中的地址。
  • 到第三步的时候,实际上dSwap、ds1)其实都是指向同一个对象,这个对象就是在堆内存中地址是BE2500保存的对象。
  • dSwap、ds1 是引用对象,存的是对象实际在堆中的地址。
  • 堆是对象实际存储的地方.

方法的参数传递
1.如果方法的参数是基本数据类型,那么实参(实际的数据)向形参传递参数时,就是直接传递值。把实参的值复制给形参。
2.如果方法的形参是对象,那么实参(实际的参数),向形参传递参数的时候,也是把值给形参。这个值是实参在栈内存中的值,也就是引用对象在堆内存中的地址

基本数据类型都是保存在栈内存中
引用对象在栈内存中保存的是引用对象的地址
方法的参数传递是传递值(是变量在栈内存中的值

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值