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)
通过这种方式,您将深层复制数组,而不是浅层复制它!
归档时间: |
|
查看次数: |
11187 次 |
最近记录: |