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);
}
}
我们来分析一下: