方法参数总是按值传递,
每次传递都是传递的是当前值的拷贝,
如果是基本类型原值不变,如果是对象类型,拷贝的是对象的内存地址,也就是"对象的指针"引用的是同一个对象。
对于争议Java是引用传递的反例:

    Employee a = new Employee("Alice",...);
    Employee b = new Employee("Bob",...);
    swap(a,b);
    public void swap(Employee x,Employee y){
        Employee temp = x;
        x = y;
        y = temp;
    }
    //does a now refer to Bob,b to to Alice

总结:

  1. 一个方法不不能修改一个基本数据类型的参数(即数值型和布尔型)。
  2. 一个方法可以改变一个对象参数的状态。
  3. 一个方法不能让对象参数引用一个新的对象。

Q.E.D.

知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议