2013-06-25 129 views
1

我有問題。在我的主類,我有:Java - 參考變量

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

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

的說明方法是:

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; 
} 

的整數和AUXI的值被改變。

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

回答

3

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

使數組的一個副本,就像這樣:

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

注意,這使得陣列的副本。對於原語不重要,但對於參考類型,您可能需要做更多工作才能製作副本。

+0

這是唯一的方法嗎? –

+0

@RenatoShumi不是,不,也可以使用'clone()'並將其轉換爲'int []'或Arrays.copyOf()。 – dasblinkenlight

+0

只要你不使用更高級的數據結構,比如'ArrayList' ......是的......(除了EJP提到的,即自己循環或者copyOf(),我的意思是)。 –

1

而不是做這個

auxi = ints; 

使用

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

如何節省向量整數的初始valeu?

不要將它分配給另一個變量。上面第二行的初始化沒有意義,因爲您隨後將ints指定爲auxi。這一步不復制數組,它只是複製引用。如果要保留原始數組,請將第三行更改爲複製元素的循環,或使用Arrays.copyOf()System.arraycopy()

0

你可以使用

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

所以,你可以通過original_array_backup到你的算法,而不會失去你的整數陣列的數據和命令。