Java Arrays-复制与编辑它们

时间:2017-04-25 04:04:06

标签: java arrays

我理解当我们说某些东西等于另一个数组时,我们实际上是用新名称指向数组。如果我们想复制一个数组,我们需要逐个元素去,或者我们需要使用方法/ java包。

public class puzzle { 
    public static void main(String[] args) { 
        int [] x= {1,2,4,6}; 
        double [] u= 3.0, 4.0, 5.0, 6.0,7.0}; 
        double [] v = {2.0, 4.0, 5.0}; 

        puzzle(u,v,x); //1 

        puzzle (v,u,x); //2 
    }
    public static void puzzle(double [] first, double [] second, int [] third){
        double [] temp; 
        temp=first; 
        temp[2]=42.0; 
        **second= first;** 
        second[0]= 2.34; 
    }
}

我们希望看到x,u,v的值在运行之后是什么(u,v,x) 并为(v,u,x)

第二个谜题v中的

只有长度3,包含2.34,4.0,42.0。为什么它只有三个而不是六个(2.34,4.0,42.0,6.0,7.0)

这是否与阵列v只有三个长,因此固定大小为3并最终切断其他数字?
(我没有选择名字)

3 个答案:

答案 0 :(得分:1)

要复制数组,您必须遍历array1的每个元素并将其放入array2

int[] array1=new int[]{1,2,3,4,5};
int[] array2=new int[5];
for(int i=0;i<array2.length;i++){
     array2[i]=array1[i];
}

要编辑数组,请将新值放在指定的索引处:

array1[2]=9;

答案 1 :(得分:1)

temp [2]和first [2]之间没有区别:temp和first引用相同的数组。

答案 2 :(得分:0)

我想我理解你的问题(如果不理睬这个答案)。你必须要理解的是,当第一次执行拼图功能时,你做了第二次=第一次。之后执行第二个将指向与第一个相同。但这不会对你和v产生任何影响。它们总是指向与以前相同的位置。当拼图第二次执行时,同样重复。

以下图片可能会让您更清晰。 *地址值只是一个假设。 当第一次调用谜题函数并且在temp = first之后,情况就像这样enter image description here

第二次[0] = 2.34之后的情况是enter image description here

当第二次调用拼图功能时,在temp = first之后,情况就像这样enter image description here

第二次[0] = 2.34之后的情况是enter image description here

u和v指向的位置永远不会改变。