java为什么array=array1等于array1=array?
我正在尝试检查传递的数组是否已排序:
public static boolean isSorted(int[] list){
boolean isSorted = true;
int[] arr = list;
selectionSort(arr);
for (int i = 0; i < list.length; i++) {
if (arr[i] != list[i]){
isSorted = false;
break;
}
}
return isSorted;
}
我传递了数组list
,并使数组arr
等于list,结果是数组list
在排序后变得等于数组arr
java的规则是什么?我应该怎么做才能把arr
和list
分开呢
# 1 楼答案
int[] arr = list;
不复制数组,它只声明一个指向同一数组实例的变量您需要使用
int[] arr = list.clone();
或int[] arr = Arrays.copyOf(arr, 0, arr.length);
但是请注意,您不需要对数组进行排序来检查它是否已排序:只需检查每个元素,看看下面的元素是否更小