java 是值传递还是引用传递
阅读原文时间:2023年07月05日阅读:1

首先要明白,修改一个对象,可以是 修改对象的属性值,也能使建立新的引用(指向另一个对象)两种情况

值传递

在函数调用的过程中,参数是 变量的副本,就是复制出来的一个对象,函数中无论怎么修改和原来的变量都没关系

引用传递

在函数调用的过程中,参数是 变量的引用,函数中如果更改,变量本身也会同步修改

共享对象传递

在函数调用的过程中,参数是 变量引用的副本,和变量指向同一个对象,a(实参) ==> obj,b(形参) ==> obj

情况1:如果修改对象属性,a 和 b 都会修改;情况2:如果修改引用(比如 b 指向 obj2),这种情况 a 是不变的,还是指向 obj

结论

共享对象传递是值传递的特殊情况,流程大体一样,只不过一个是复制值,一个是复制引用

java 是共享对象传递没毛病,java 是值传递也没毛病,但是 java 不是引用传递