JAVA值传参与引用参数
参数根据调用后的效果不同,即是否改变参数的原始数值,又可以分为两种:按值传递的参数与按引用传递的参数。按值传递的参数原始数值不改变,按引用传递的参数始数值改变!这是为什么呢?其实相当简单:我们知道基本数据类型的变量存放在栈里面,变量名处存放的就是变量的值,那么当基本数据类型的变量作为参数时,传递的就是这个值,只是把变量的值传递了过去,不管对这个值如何操作,都不会改变变量的原始值。而对引用数据类型的变量来说,变量名处存放的地址,所以引用数据类型的变量作为传参时,传递的实际上是地址,对地址处的内容进行操作,当然会改变变量的值了!
经典实例
public class StringTest {
public static void main(String[] args) {
String stu_Name = "zhangsan";
StringTest st= new StringTest ();
System.out.println("方法调用前:" + stu_Name);
st.strChange(stu_Name);
System.out.println("方法调用后:" + stu_Name);
}
public void strChange(String str) {
str = "lishi";
System.out.println("方法体中的str:" + str);
}
}
结果:
方法调用前:zhangsan
方法体中的str:lishi
方法调用后:zhangsan |