将数组的元素分配给另一个数组

时间:2014-12-15 20:45:24

标签: java arrays

public class Test {
    public static void main(String[] args) {
        int[] a = new int[] {1, 2, 3, 4, 5};
        int[] b = new int[4];
        b=a;

        for (int x : b)
            System.out.print(x);
    }
}

b数组可以包含4个元素,但我将5个a数组元素插入b中。输出为1,2,3,4,5。这怎么可能在Java?

4 个答案:

答案 0 :(得分:6)

ab引用变量。初始化后你实际上有这样的事情:

a - > [1,2,3,4,5]

b - > [0,0,0,0]

执行b=a时,您只需重新分配b以引用a引用的数组,并且 初始化的数组是根本不再引用。所以,你现在有:

(a和b) - > [1,2,3,4,5]

答案 1 :(得分:3)

当你做b = a时;你正在覆盖你以前的数组b,这样数组b就成了你的数组,其大小为5。

答案 2 :(得分:1)

通过将new int[4]分配给b,您将创建一个长度为4的空int数组。如果您编写b = a,则完全处理新创建的数组用数组a覆盖它,其长度为5,内容为a。这就是为什么你问题中的输出是12345

我猜你要做的就是用数组b中的值填充数组a

for (int i = 0; i < b.length; i++) {
    b[i] = a[i];
}

但是你不能将a的5个值插入到长度为4的数组b中。

答案 3 :(得分:1)

当你写b = a,b和a成为别名时。 b现在指向一个。 现在,如果您更改了a中的任何内容,它也将在b中更改,反之亦然

请参阅this