值传递和引用传递的概念
- 值传递
在调用方法时,将实参的值拷贝一份传递给方法的形参,修改形参不会影响到实参
- 引用传递
在调用方法时,将实参的引用传递给方法的形参,修改形参将影响到实参
例子1
@Test
public void test() {
int a = 1;
System.out.println(a);
}
public void changeData(int origin) {
origin = origin + 1;
}
// 输出:1,根据值传递概念,说明是值传递
例子2
class User {
private int id;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
@Test
public void test() {
User user = new User();
user.setId(1);
changeData(user);
System.out.println(user.getId());
// 输出:1,根据值传递概念,说明是值传递
changeData2(user);
System.out.println(user.getId());
// 输出2:2,方法并没有改变user的值,而是改变的属性的值,根据引用传递的概念可以得知方法不是传递的引用
}
public void changeData(User user) {
user = new User();
user.setId(2);
}
public void changeData2(User user) {
user.setId(2);
}