以下是一种可能的实现方式:

public class ValuePassingDemo {
    
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        System.out.println("Before swapping:");
        System.out.println("a = " + a);
        System.out.println("b = " + b);
        swap(a, b);
        System.out.println("After swapping:");
        System.out.println("a = " + a);
        System.out.println("b = " + b);
        
        int[] array = {1, 2, 3};
        System.out.println("Before modifying array:");
        System.out.println("array[0] = " + array[0]);
        System.out.println("array[1] = " + array[1]);
        System.out.println("array[2] = " + array[2]);
        modifyArray(array);
        System.out.println("After modifying array:");
        System.out.println("array[0] = " + array[0]);
        System.out.println("array[1] = " + array[1]);
        System.out.println("array[2] = " + array[2]);
    }
    
    public static void swap(int x, int y) {
        int temp = x;
        x = y;
        y = temp;
    }
    
    public static void modifyArray(int[] arr) {
        arr[0] = 10;
        arr[1] = 20;
        arr[2] = 30;
    }
}

输出结果:

Before swapping:
a = 10
b = 20
After swapping:
a = 10
b = 20
Before modifying array:
array[0] = 1
array[1] = 2
array[2] = 3
After modifying array:
array[0] = 10
array[1] = 20
array[2] = 30

解释:

  • 在第一个示例中,swap()方法使用了值传递机制。当swap(a, b)被调用时,ab的值被复制到xy,在方法内部进行交换操作,并不会影响到ab的值。因此,在交换后,ab仍然保持原来的值。
  • 在第二个示例中,modifyArray()方法使用了引用传递机制。当modifyArray(array)被调用时,array的引用被复制到arr,在方法内部修改arr所指向的数组元素,会影响到原始的array。因此,在修改后,array的元素值发生了变化
画图实现:需求:演示java基本数据类型值传递机制和引用数据类型值传递机制的区别

原文地址: https://www.cveoy.top/t/topic/hSSj 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录