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(),我的意思是)。