在JAVA中
值传递:基本数据类型
引用传递:一般都是对象
public class Test1{
public static void main(String[] args){
//在堆中开辟一个Student类型得空间,将其首地址给在栈中得变量s,相当于该s就指向堆中开辟得Student类空间
Student s = new Student();
//将在堆中开辟的空间中的属性stuId的值赋为10
s.stuId = 10;
system.out.println(s.stuId);
//执行method方法,将以上操作中的地址,s的值传给method中的形式参数,则该形式参数
指向原开辟的空间,在method中的操作即是对原空间中的数值或者方法进行操作
method(s);
system.out.println(s.stuId);
}
public static void method(Student s){
s.stuId = 100;
}
}
注意:
引用传递只开辟了一个空间,实参将开辟空间的地址传给形参,形参得到的地址就相当于原开辟空间的指向,方法中所有的操作就全在原开辟的空间中执行,所以改变与否都在原空间原地址,这就是所谓的只开辟了一个空间;然而,在值传递中就是开辟了两块空间,对其各自进行操作。