欢迎访问宙启技术站
智能推送

Java函数参数传递方式,你知道哪些?

发布时间:2023-06-18 10:21:12

Java函数参数传递是指在Java程序中调用函数时,如何将数据传递给函数。在Java中,有三种常见的函数参数传递方式,包括传值调用、传引用调用和传地址调用。

传值调用

传值调用是指将参数的值复制到函数的形式参数中,函数对参数值的修改不会影响到实际参数的值。例如:

public class Test {
   public static void main(String args[]) {
      int a = 10;
      int b = 20;

      swap(a, b);
      System.out.println("a = " + a + ", b = " + b);
   }

   public static void swap(int x, int y) {
      int temp = x;
      x = y;
      y = temp;
   }
}

输出结果为:a = 10, b = 20。

在上述代码中,main函数传递了参数a和b,但在swap函数中,对传递的参数进行交换后,并不影响main函数中参数的值。

传引用调用

传引用调用是指将参数的引用(地址)复制到函数的形式参数中,函数对参数引用所指向的对象的修改会影响实际参数的值。例如:

public class Test {
   public static void main(String args[]) {
      int[] arr = {10, 20};

      changeValue(arr);
      System.out.println("arr[0] = " + arr[0] + ", arr[1] = " + arr[1]);
   }

   public static void changeValue(int[] array) {
      int temp = array[0];
      array[0] = array[1];
      array[1] = temp;
   }
}

输出结果为:arr[0] = 20, arr[1] = 10。

在上述代码中,main函数传递了参数arr,而在changeValue函数中,直接修改了数组中元素的值,因此会影响实际参数的值。

传地址调用

传地址调用是指将参数的地址复制到函数的形式参数中,函数对参数地址所指向的内存空间的修改会影响实际参数的值。Java中没有实现传地址调用的机制,但可以通过引用类型和对象来模拟。

引用类型可以看做指针,指向实际对象的地址。因此,对引用类型对象的操作,本质上是对指向对象的地址进行操作。例如:

public class Test {
   public static void main(String args[]) {
      Student stu = new Student();
      stu.name = "Alice";

      changeName(stu);
      System.out.println("stu.name = " + stu.name);
   }

   public static void changeName(Student student) {
      student.name = "Bob";
   }
}

class Student {
   public String name;
}

输出结果为:stu.name = Bob。

在上述代码中,main函数创建了一个Student对象,并将其赋值给stu引用类型变量。在changeName函数中,对传递的引用类型对象进行名称修改,将其修改为“Bob”,因此会影响实际参数的值。

总结

在Java中,传参方式分为传值调用、传引用调用和传地址调用三种。其中传值调用只是将参数的值复制到函数中,不会对实际参数造成影响;而传引用调用和传地址调用会对实际参数造成影响,前者是将参数的地址复制到函数中,后者是直接传递参数的地址。在Java中没有明确的传地址调用机制,但可以通过引用类型和对象模拟实现。对于程序员来说,需要根据实际情况来选择合适的传参方式。