Java-引用变量

Java-引用变量,java,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  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;
}
ints和auxi的值已更改

如何保存向量int的初始值?

而不是执行此操作

auxi = ints;
使用

而不是这样做

auxi = ints;
使用

如何保存向量int的初始值

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

如何保存向量int的初始值

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

如何保存向量int的初始值

制作阵列的副本,如下所示:

int[] copy = new int[orig.length];
System.arraycopy(orig, 0, copy, 0, orig.length);
请注意,这将创建数组的浅拷贝。这对于基本体并不重要,但是对于引用类型,您可能需要做更多的工作来创建副本

如何保存向量int的初始值

制作阵列的副本,如下所示:

int[] copy = new int[orig.length];
System.arraycopy(orig, 0, copy, 0, orig.length);
请注意,这将创建数组的浅拷贝。这对于原语并不重要,但是对于引用类型,您可能需要做更多的工作来制作副本。

您可以使用

int [] original_array_backup = new int [ints.length]
System.arraycopy(ints, 0, original_array_backup, 0)
因此,您可以将原始的\u数组\u备份传递到您的算法中,而不会丢失ints数组的数据和顺序。

您可以使用

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

因此,您可以将原始的数组备份传递到您的算法中,而不会丢失ints数组的数据和顺序。

@RenatoShumi不太可能,不:您也可以使用
clone()
并强制转换到
int[]
,或
Arrays.copyOf()
。只要您不使用更高级的数据结构,如
ArrayList
。。。对(除了EJP提到的,即自己循环或copyOf(),我的意思是)。@RenatoShumi不太可能,不可能:你也可以使用
clone()
并强制转换到
int[]
,或者
Arrays.copyOf()
。只要你不使用像
ArrayList
这样的高级数据结构。。。对(除了EJP提到的,即自己循环或copyOf(),我的意思是)。