почему иногда ссылочная переменная, переданная в функцию, не может изменить значение основной функции в java - PullRequest
0 голосов
/ 27 мая 2020

Когда я использую swapIside, мое значение массива numbers1 может быть изменено в основной функции, в то время как, когда я использую функцию swap, массивы в основной функции не меняются.

public class Main {
    public static void main(String[] args) {

        int[] numbers1 = new int[]{1, 2};
        int[] numbers2 = new int[]{2, 3};
        System.out.println("Original numbers1 "+Arrays.toString(numbers1));
        System.out.println("Original numbers2 "+Arrays.toString(numbers2));

        swap(numbers1, numbers2);
        System.out.println(Arrays.toString(numbers1));
        System.out.println(Arrays.toString(numbers2));
        int[] num = numbers1;
        numbers1= numbers2;
        numbers2 = num;
        System.out.println(Arrays.toString(numbers1));
        System.out.println(Arrays.toString(numbers2));

        swapInside(numbers1);
        System.out.println(Arrays.toString(numbers1));
    }
    public static void swap(int[] num1,int[] num2){
        int[] num = num1;
        num1 = num2;
        num2 = num;
        System.out.println("num1"+Arrays.toString(num1));
        System.out.println("num2"+Arrays.toString(num2));
    }
    public static void swapInside(int[] nums){
        int num = nums[0];
        nums[0] = nums[1];
        nums[1] = num;
    }
}
...