Java方法的参数传递机制

Java方法的参数传递方法只有一种:值传递。

所谓值传递,就是将实际参数的副本传入方法,而参数本身不会受任何影响。

分为基本类型参数和引用类型参数两种传递考虑

1.基本类型参数传递

例如:

package parameter;

public class FundamentalType {
	public static void swap(int a,int b){
		int tmp=a;
		a=b;
		b=tmp;
		System.out.println("swap方法里,a的值是"+a+",b的值是"+b);
	}
	public static void main(String[] args){
		int a=6;
		int b=9;
		swap(a, b);
		System.out.println("交互结束后方法里,a的值是"+a+",b的值是"+b);
	}
}
结果为

swap方法里,a的值是9,b的值是6
交互结束后方法里,a的值是6,b的值是9

可见swap()方法里a,b的值是9,6;j交换结束后变量a,b的值依然是6,9并没有改变

也就是说main()方法里的变量a,b,并不是swap方法里的a,b

实际上,当系统开始执行方法时,系统为形参执行初始化,就是把实参变量的值附给方法的形参变量,方法里操作的并不是实际的实参变量。


2.引用类型参数传递

引用类型参数传递一样采用值传递的方式,只不过是在传值的时候,将实参所指向的地址值传给了形参,并没有改变栈内存中的实参,而是改变了他们所引用的堆内存的对象,这样在形参引用堆内存中的对象时,会对堆内存的对象进行修改,看起来就像传入实参本身一样

例如:

package parameter;

class DataWrap{
	int a;
	int b;
}

public class ReferenceType {
	public static void swap(DataWrap dw){
		int tmp=dw.a;
		dw.a=dw.b;
		dw.b=tmp;
		System.out.println("swap方法里,a成员变量的值是"+dw.a+",b成员变量的值是"+dw.b);
	}
	
	public static void main(String[] args){
		DataWrap dw=new DataWrap();
		dw.a=6;
		dw.b=9;
		swap(dw);
		System.out.println("交换结束后,a成员变量的值是"+dw.a+",b成员变量的值是"+dw.b);
	}
}
运行结果为

swap方法里,a成员变量的值是9,b成员变量的值是6
交换结束后,a成员变量的值是9,b成员变量的值是6

示意图:





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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值