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.