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

Java 中的函数参数传递方式

发布时间:2023-06-06 04:05:39

Java中的函数参数传递方式是指参数在方法调用时是如何被传递的。Java中的函数参数传递方式主要有两种:值传递和引用传递。

值传递

值传递是指将实际参数的值传给形式参数,即在方法调用时,将实参的值拷贝给形参。在方法内部对形参的修改不会影响实参的值。 Java中的基本数据类型和String类型都是采用值传递方式。

示例代码:

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);
   }
   
   private static void swap(int num1, int num2) {
      int temp = num1;
      num1 = num2;
      num2 = temp;
   }
}

输出结果为:

a = 10, b = 20

我们可以看到,在swap()方法内部交换了num1和num2的值,但是在main()方法中,a和b的值并没有发生变化,这说明在Java中,基本数据类型是采用值传递的方式传递参数的。

引用传递

引用传递是指将实际参数的地址传给形式参数,形参和实参指向同一个内存地址。在方法内部对形参的修改将会影响实参的值。Java中的对象类型都是采用引用传递方式。

示例代码:

public class Test {
   public static void main(String args[]) {
      int[] arr = {1, 2, 3, 4, 5};
      change(arr);
      for(int i=0;i<arr.length;i++){
          System.out.println(arr[i]);
      }
   }
   
   private static void change(int[] array) {
      for(int i=0;i<array.length;i++){
          array[i] = array[i]*2;
      }
   }
}

输出结果为:

2
4
6
8
10

我们可以看到,在change()方法内部,修改了array数组中的元素值。而在main()方法中,输出的arr数组中的元素值也都被修改了,这说明在Java中,对象类型是采用引用传递的方式传递参数的。

需要注意的是,虽然对象类型是采用引用传递的方式传递参数,但是如果在方法内部改变了形式参数的引用,那么实际参数的引用并不会改变。

示例代码:

public class Test {
   public static void main(String args[]) {
      int[] arr = {1, 2, 3, 4, 5};
      change(arr);
      for(int i=0;i<arr.length;i++){
          System.out.println(arr[i]);
      }
   }

   private static void change(int[] array) {
      array = null;
   }
}

输出结果为:

1
2
3
4
5

我们可以看到,在change()方法中将array赋值为null,但是在main()方法中,输出的arr数组并没有变为null,这说明在Java中,在方法内部改变形式参数的引用并不会影响实际参数的引用。

综述

Java中的函数参数传递方式主要有值传递和引用传递两种方式。基本数据类型和String类型采用值传递方式传递参数,对象类型采用引用传递方式传递参数。在方法内部修改形式参数的值会影响实际参数的值,但是修改形式参数的引用并不会影响实际参数的引用。