Java - 引用变量

时间:2013-06-25 02:09:50

标签: java

我遇到了问题。在我的主要班级,我有:

int  ints[] = Type.desc(1000);
int  auxi[] = new int [1000];
auxi = ints;

System.out.println("========== Init =========");
// Insertion Sort
Algoritmos.insertionSort(ints);
ints = auxi;

desc方法是:

public static int[] desc (int n){
    int aux[];
    aux = new int[n];
    int pos = 0;
    for (int i = n-1; i > 0; i--) {
        aux[pos++] = i;
    }

    return aux;
}

更改了int和auxi的值。

如何保存矢量整数的初始值?

4 个答案:

答案 0 :(得分:3)

  

如何保存矢量整数的初始值?

制作数组的副本,如下所示:

int[] copy = new int[orig.length];
System.arraycopy(orig, 0, copy, 0, orig.length);

请注意,这会生成数组的副本。它与原语无关,但对于参考类型,您可能需要做更多的工作来制作副本。

答案 1 :(得分:2)

int  ints[] = Type.desc(1000);
int  auxi[] = new int [1000];
auxi = ints;
  

如何保存矢量整数的初始值?

不要将它分配给另一个变量。上面第二行中的初始化是没有意义的,然后继续将ints分配给auxi。此步骤不会复制数组,它只是复制引用。如果要保留原始数组,请将第三行更改为复制元素的循环,或使用Arrays.copyOf()System.arraycopy()

答案 2 :(得分:1)

而不是这样做

auxi = ints;

使用

System.arrayCopy()

答案 3 :(得分:0)

您可以使用

int [] original_array_backup = new int [ints.length]
System.arraycopy(ints, 0, original_array_backup, 0)

所以你可以将original_array_backup传递给你的算法而不会丢失你的int数组的数据和顺序。