Java基础-Java方法是值传递还是引用传递

值传递和引用传递的概念

  • 值传递
    在调用方法时,将实参的值拷贝一份传递给方法的形参,修改形参不会影响到实参
  • 引用传递
    在调用方法时,将实参的引用传递给方法的形参,修改形参将影响到实参

例子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);
  }
posted @ 2023-02-02 11:16  啊发包  阅读(24)  评论(0)    收藏  举报