天天看点

Java中参数传递机制Java中参数传递机制

Java中参数传递机制

方法如下:

public static void main(String[]args){

	int a=1;
	int b=2;
	System.out.println(a);
	System.out.println(b);
	change(a,b);
	System.out.println(a);
	System.out.println(b);
}
public static void change(int a,int b){
    a=a+b;
    b=b+a;
}
           

输出结果为

1

2

1

2

这是Java中参数传递机制的问题。

先给大家介绍一下形参和实参

形参:用于接收调用该方法时传递的参数,只有在被调用的时候才分配内存,一但调用结束,就释放内存空间,因此仅仅在方法中有效。

例如:上面方法中change方法(int a,int b)就是形参。

实参:传递给调用方法的值,预先创建并赋予确定值。

例如:main方法中的int a=1 ,int b = 2,其中的a,b就是实参。

方法中的参数传递又分为值传递调用,引用传递调用。

值传递调用:传值调用的参数为基础数据类型,参数视为形参。

在上面方法调用中,实际上传给change方法中的是1,2这两个值,并不是数据在内存中的引用地址,并且被视为形参,所以在change方法调用之后,a,b两个值就以及被销毁了,仅在该方法中有效。而输出的值是main方法中的a,b。

引用传递调用:传值调用的参数为对象在内存中的引用地址,在方法的调用中,实参的地址传给了形参,形参的改变都发生在了实参上。

例如:

public void static void main(String[]args){
	int [] array = {1,2,3};
    System.out.println(array[0]);
    change(array);
    System.out.println(array[0]);
}
public void change(int[]array){
    array[0]=100;
}
           

输出结果为:

1

100

这里面发生的就是引用传递调用:在内存中传递的实际上是array数组的引用地址,类似“[[email protected]”这样的形式,而change方法中改变的值,就是该引用地址引用的数组的值。所以输出结果为1,100.