czy*_*czy 9 java arrays sorting
我正在学习如何Arrays.sort(...)在Java中工作.
为什么变量:temp并且dopas在唯一排序后排序temp?
System.out.println("Before");
for (int i = 0; i < POP; i++)
System.out.println(dopas[i]+""); //dopas is unsorted
System.out.println("After");
float[] temp=dopas;
Arrays.sort(temp); //sort temp
for (int i = 0; i < POP; i++)
System.out.println(temp[i]+" "+dopas[i]); //Both temp and dopas are now sorted
Run Code Online (Sandbox Code Playgroud)
我预计多巴仍未分类.
sle*_*ske 22
数组是Java中的对象,因此在使用数组变量时,实际上是使用对数组的引用.
这样就行了
float[] temp=dopas;
Run Code Online (Sandbox Code Playgroud)
只会复制对数组的引用dopas.此后, dopas和 temp指向同一阵列;因此,这两会出现使用之后排序sort().
使用System.arrayCopy或Arrays.copyOf创建数组的副本.
temp只是一个参考dopas.实际上内存中只有一个数组.
如果您想temp成为副本dopas,请尝试:
float[] temp = Arrays.copyOf(dopas, dopas.length);
Run Code Online (Sandbox Code Playgroud)
通过这种方式,您将深层复制数组,而不是浅层复制它!