Loading

Java的值传递

1. 形参和实参

  • 实参(实际参数) :用于传递给函数/方法的参数,必须有确定的值。
  • 形参(形式参数) :用于定义函数/方法,接收实参,不需要有确定的值

2. 值传递和引用传递

  • 值传递 :方法接收的是实参值的拷贝,会创建副本。
  • 引用传递 :方法接收的直接是实参所引用的对象在堆中的地址,不会创建副本,对形参的修改将影响到实参

3. Java的值传递

/*
   用于说明java是值传递
 */
public static void main(String[] args) {
    int a = 0;
    System.out.println(a);
    method1(a);
    System.out.println(a);
    User zhangsan = new User("zhangsan");
    User lisi = new User("lisi");
    method2(zhangsan, lisi);
    System.out.println("zhangsan:"+zhangsan.getName());
    System.out.println("lisi:"+lisi.getName());
}
//传递基本数据类型
public static void method1(int num){
    num = 1;
    System.out.println("num:"+num);
}
//传递引用数据类型
public static void method2(User person1, User person2){
    User person3 = person1;
    person1 = person2;
    person2 = person3;
    System.out.println("person1:"+person1.getName());
    System.out.println("person2:"+person2.getName());
}

运行结果:

0
num:1
0
person1:lisi
person2:zhangsan
zhangsan:zhangsan
lisi:lisi

4. 结论

1. 在传递基本数据类型时,明显时值传递,形参会创建副本,对形参的操作,都是在这个副本上进行的
2. 在传递引用数据类型时,我们会错误的认为是引用传递,但其实依旧是值传递,只不过传递的是实参的地址罢了
	在上面的例子中,形参只是把里面地址的值换了,并没有影响实参,可见是值传递;实参指向的还是那个空间地址
posted @ 2022-07-27 14:34  苏无及  阅读(268)  评论(0编辑  收藏  举报