参考文文章:https://zhuanlan.zhihu.com/p/388486387
    总结:
    1、 java 中只存在值传递,对于 基本类型、引用类型以及对象类型均是如此,因此调用了一个对某个传递过来的参数进行赋值操作的时候,均不会影响原来的值。
    2 、对于对象类型,若直接修改了它的具体属性,当出现在调用方法之后,会发生改变的原因是:在 java 中,对象类型的值是对象引用,在调用过程中,传递的是一份对象引用的拷贝进行传递的,但是原引用和拷贝的引用依旧指向的是堆中的同一份值,因此,这份值做了改变,原来的 对象类型本身就发生了变化。

    1. public class Main7 {
    2. public static void main(String[] args) {
    3. List<String> list = new ArrayList<>();
    4. list.add("1");
    5. setValue(list);
    6. System.out.println(list);
    7. }
    8. public static void setValue(List<String> list){
    9. list = null;
    10. }
    11. }
    12. // 结果还是 [1],并没有被置为null