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

Java中的方法参数传递方式有哪些?

发布时间:2023-08-06 15:13:37

Java中的方法参数传递方式有值传递和引用传递两种。

1. 值传递(Pass by value):

在值传递中,方法的参数是基本数据类型,传递的是参数的值,而不是参数的内存地址。在方法执行时,会将实际参数的值复制给形式参数,形式参数的改变不会影响实际参数。

例如:

   public class Main {
       public static void main(String[] args) {
           int num = 10;
           method(num);
           System.out.println(num); // 输出结果为10
       }
       
       public static void method(int value) {
           value = 20;
       }
   }
   

2. 引用传递(Pass by reference):

在引用传递中,方法的参数是引用类型(如对象、数组和接口),传递的是参数的内存地址,也就是堆内存中的对象实例。在方法执行时,形式参数和实际参数指向同一个对象,在方法中对对象的修改会影响到实际参数。

例如:

   public class Main {
       public static void main(String[] args) {
           int[] arr = {1, 2, 3};
           method(arr);
           System.out.println(arr[0]); // 输出结果为100
       }
       
       public static void method(int[] array) {
           array[0] = 100;
       }
   }
   

需要注意的是,Java中的方法传递都是按值传递,只是对于引用类型,传递的是引用的值(内存地址)。所以当引用类型作为参数传递给方法时,虽然看起来像是引用传递,但实际上还是通过值传递来传递引用的值。

另外,需要注意的是,Java中只有值传递,没有指针传递。指针传递是指将参数的地址传递给方法,方法可以通过改变地址中的内容来改变实际参数的值,而Java中的引用传递只是将引用的值(地址)传递给方法,在方法内改变引用所指向的对象时,不会改变引用本身的值(地址),也就无法改变实际参数的引用。