为什么我的阵列切换值?

时间:2014-02-27 01:01:32

标签: java arrays

我试图制作一个简短的代码来切换数组中的第一个和最后一个值,并输出一个与第一个数组相同的新数组但是切换了这些值。尝试几次之后,我意识到我的第一个(原始)数组保持切换其[0]值,我不知道为什么。这是代码。

import java.util.Arrays;
public class testing {
    public static void main(String[] args) {
       int[] original={1,2,3,4};
       int[] switched=original;
       switched[0]=original[original.length-1];
       switched[switched.length-1]=original[0];
       System.out.println(Arrays.toString(switched));

}

}

我希望输出为[4,2,3,1],但我总是得到[4,2,3,4]。

3 个答案:

答案 0 :(得分:1)

两者都是对同一个数组的引用

最初

1,2,3,4

switched[0]=original[original.length-1];

4,2,3,4

switched[switched.length-1]=original[0];

4,2,3,4

答案 1 :(得分:0)

因为switchedoriginal指向同一个对象。

执行:

import java.util.Arrays;
public class testing {
    public static void main(String[] args) {
        int[] original={1,2,3,4};
        int[] switched={1,2,3,4};
        switched[0]=original[original.length-1];
        switched[switched.length-1]=original[0];
       System.out.println(Arrays.toString(switched));
    }
}

答案 2 :(得分:0)

你应该知道一些魔法:)。

在这一行:int[] original={1,2,3,4};您创建数组 {1,2,3,4} ,并在变量original

中存储REFERENCE

在这一行:int[] switched=original;中,将original对该数组的REFERENCE值复制到变量switched中。

现在,您有两个引用同一个数组的变量!


要创建具有相同值的新数组,可以使用:

int [] switched = (int[])original.clone();