我正在学习Arrays.sort(...)在Java中的工作方式。

为什么变量:tempdopas都在唯一排序的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

我希望多巴保持未分类状态。

最佳答案

数组是Java中的对象,因此,在使用数组变量时,实际上是在使用对数组的引用。

因此线

float[] temp=dopas;

只会将引用复制到数组dopas。之后,dopastemp指向相同的数组,因此在使用sort()之后,它们都将显示为已排序。

使用System.arrayCopyArrays.copyOf创建数组的副本。

10-07 19:21