4.11 参数传值机制
Java中,方法中所有参数都是“值传递”,也就是“传递的是值的副本”。 也就是说,我们得到的是“原参数的复印件,而不是原件”。因此,复印件改变不会影响原件。基本数据类型参数的传值
传递的是值的副本。 副本改变不会影响原件。
引用类型参数的传值
传递的是值的副本。但是引用类型指的是“对象的地址”。因此,副本和原参数都指向了同一个“地址”,改变“副本指向地址对象的值,也意味着原参数指向对象的值也发生了改变”。
下面我来看一组实例:
先写一个User对象:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23class User{
    int id;
    String name;
    String pwd;
    //无参构造
    public User() {
    }
    //带两个参数的构造
    public User(int id, String name) {
        this.id = id;
        this.name = name;
    }
    public void testParameterTransfer01(User u){
        u.name="风清扬";
    }
    public void testparametertransfer02(User u){
        u = new User(200,"东方不败");
    }
}
在写一个测试值传递的类(里面掉了user的方法):1
2
3
4
5
6
7
8
9
10
11
12public class Y_01_测试值传递 {
    public static void main(String[] args) {
        User user = new User(100,"张三丰");
        System.out.println(user.name);
        user.testParameterTransfer01(user);
        System.out.println(user.name);
        user.testparametertransfer02(user);
        System.out.println(user.name);
    }
}
我们来分析一下:



