java--值传递与引用传递
1.实质:一切引用传递的本质上就是传值;
2.基本类型与引用类型:
int num=10; num是基本类型,值就是直接保存在变量中。
String str="hello"; str是引用类型,变量中保存的只是实际对象的地址,一般称这种变量为“引用”,引用指向实际对象,实际对象中保存着内容。
3.搞清楚赋值运算符(=)的作用
num = 20; 对于基本类型num,赋值运算符会直接改变变量的值,即原来的值会被覆盖掉。
str = "java"; 对于引用类型str,赋值运算符会改变引用中保存的地址,原来的地址会被覆盖掉。但是原来的对象不会改变(重要),("hello"的字符串对象没有被改变,但是没有被任何引用指向的对象是垃圾,会被垃圾回收器回收。)。
4.值传递,实质上就是复制一个实际参数的副本,将副本给你,调用的函数可以改变副本的值,但是原本的值并不会改变;
引用传递,是指在调用函数时将实际参数的地址直接传递到函数中,那么在函数中对参数所进行的修改,将会影响到实际参数。
5.本质区别:值传递和引用传递的区别并不是传递的内容,而是实参有没有被复制一份传给形参;