为什么说Java是值传递?
值传递和引用传递的区别
值传递:指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。
引用传递:是指在调用函数时将实际参数的地址直接传递到函数中(的形参),那么在函数中对参数所进行的修改,将影响到实际参数
Java中的基本数据类型是值传递
只是将实际参数复制一份传递给形参,在函数中对参数进行修改不会影响到实际参数的值
Java中的引用数据类型也是值传递
在上面参数传递的过程中,实际参数的地址0x123456被拷贝给了形参,在函数中,并没有对形参本身进行修改,而是修改形参持有地址中存储的内容。
; 在内存中会重新开辟一块空间0x456789赋值给xingCan,后面对形参的任何操作都不会影响0x123456改地址的对象
我们先来看Test2该类的例子:
实参是一个对象,形参又通过new创建了一个新的对象,因此实参和形参不是同一个参数
通过打印出来的结果来看,实参也没有被改变,因此引用数据类型不是一个引用传递
画图来理解一下: