Java表现出引用传递行为

时间:2015-03-24 23:04:06

标签: java pass-by-reference pass-by-value

编写代码以反转数组中的元素。方法1和方法2都执行相同的操作,但是在main中更改数组的值,尽管范围没有赋值。

import java.util.Arrays;
public class ReversingMatrix {
    public static void main(String[] args) {
        int values[] = {1, 2, 3, 4, 5, 6, 7};
        method1(values, 0, values.length - 1);
            // Values array is now : {7, 6 ... 1} --> why?
        method2(values);
    }
    public static void method1(int[] arr, int lPos, int rPos) {
        if(lPos >= rPos) System.out.println("1D Recursion Reverse: " + Arrays.toString(arr));
        else {
            int temp = arr[lPos];
            arr[lPos] = arr[rPos];
            arr[rPos] = temp;
            method1(arr, lPos + 1, rPos - 1);
        }
    }
    public static void method2(int[] arr) {
        int temp;
        for(int a = 0; a < arr.length / 2; a++) {
            temp = arr[a];
            arr[a] = arr[arr.length - (1+a)];
            arr[arr.length - (1+a)] = temp;
        }
        System.out.println("1D For Loop Reverse: " + Arrays.toString(arr));
    }
}

为什么值数组不会保留{1, 2, 3, 4, 5, 6, 7},所以我可以多次使用它?

0 个答案:

没有答案