有关值传递和引用传递的论述
程序员文章站
2022-03-26 15:55:07
...
两种传递方式: 值传递和引用传递
- 值传递(基本数据类型的数据传递,栈中的数据):
基本数据类型的数据作为方法的参数进行传递,那么在方法中会另开辟一个新的内存空间,
跟原来的内存空间不是一个空间如果在方法中对参数的值进行修改,不会影响原来的内存空间的值,
除非把修改后的值返回,才能获取方法中修改后的值
//此方法演示值传递,但注意没有返回值
public void valueTransfer1(int a){
a = 100;
}
//此方法也是值传递,但注意有返回值
public int valueTransfer2(int b){
b = 100;
return b;
}
//在main函数中的代码,d1为Demo1类实例化的对象
int a = 10,b = 10;
d1.valueTransfer1(a);
System.out.println("a="+a);//结果为a = 10
b = d1.valueTransfer2(b);
System.out.println("b="+b)//结果为b = 100
- 引用传递(数组的传递,对象的传递,堆中的数据):
如果传递的是对象或数组,实际上是把对象或数据的引用传递到方法中去,
如果方法中对应用的对象或数组错任何修改都会影响原来的内存空间的值,
即修改了原来内存空间,其操作的是同一份空间
//引用传递
public void referenceTransfer(Student stu){
stu.setAge(stu.getAge()+1);
stu.setName("张三");
stu.setStuNo("S001");
}
//在main函数中的代码,Student是自己写的类里面属性有姓名,年龄和学号
Student stu = new Student();
d1.referenceTransfer(stu);
System.out.println("age="+stu.getAge());//age=1
System.out.println("name="+stu.getName());//name=张三
System.out.println("stuNo="+stu.getStuNo());//stuNo=S001