我正在学习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
我希望多巴保持未分类状态。
最佳答案
数组是Java中的对象,因此,在使用数组变量时,实际上是在使用对数组的引用。
因此线
float[] temp=dopas;
只会将引用复制到数组
dopas
。之后,dopas
和temp
指向相同的数组,因此在使用sort()
之后,它们都将显示为已排序。使用
System.arrayCopy
或Arrays.copyOf
创建数组的副本。