Java|值传递和引用传递
-
Java中的值传递和引用传递本质上还是值传递
-
值传递是对基本类型(8种)而言的,引用传递是对对象型变量而言的。
- 基本类型的数据会直接保存在变量中。
- 而引用类型的变量中只保存指向实际对象的地址,实际对象中保存着内容。
- 对基本类型赋值时,变量内容会被覆盖
- 对引用类型赋值时,变量中的地址会被改变,但原先引用中的地址 指向的实际对象的内容 并不会消失。
示例:
num = 10;
num = 20;
//由于是基本类型,20直接覆盖了10,占据了10原先所在的变量的内存。
String str = "C++";
str = "Java";
//首先了解存放字符串内容C++的地址假设为0×0001,存放字符串内容Java的地址假设为0×0002
//原先变量存放的地址是0×0001,现在用=给str重新赋值,变量中存放的地址变为0×0002,指向的对象的内容是Java
//但原先0×0001指向的存放字符串C++的内存也并没有被释放,仍然存在(等待被垃圾回收器回收)。
- 调用方法时的参数传递
- 值传递是指在调用函数时,将实际参数 复制 一份传到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。
- 引用传递是指在调用函数时,将实际参数的地址 直接 传到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。
//暂时写到这吧,到时候再完善,会重新编辑。