1.形参:用来接收调用该方法是传递的参数。在被调用时才分配内存空间,一旦调用结束就释放内存,作用域为方法内部。
public void swapValue(int a, int b) {
int temp = b;
b = a;
a = temp;
System.out.println(a + "\n" + b);
}
上面代码中的a和b为形参。
2.实参:传递值给被调用方法,且该值已有确定值。
swapValue(1, 2);
swapValue方法中a=1, b=2;其中1和2为实参。
3.值传递:传实参时,参数为基本数据类型,数据本身不会改变。
int m = 1, n = 2;
swapValue(m, n);
System.out.println(m + "\n" + n);//m == 1, n == 2
调用方法内部m, n交换了值,最后m和n的值没变。
4.引用传递:传的参数为引用数据类型,传递过程中实参的地址传给了形参,形参的改变是对实参的操作。
public class Demo {
public static void main(String[] args) {
Demo demo = new Demo();
Class1 class1 = new Class1();
System.out.println(class1.i + "\n" + class1.j);//i == 1, j == 2
demo.swapValue(class1);
System.out.println(class1.i + "\n" + class1.j);//i == 2, j == 1
}
public void swapValue(Class1 clazz) {
int temp = clazz.i;
clazz.i = clazz.j;
clazz.j = temp;
}
}
class Class1 {
int i = 1;
int j = 2;
}
i和j为Class1这个类内部的属性,通过传递Class1的实例对象到swap方法,属性i和j的最最终被交换。引用传递修改的是引用对象本身。