有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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的规则是什么?我应该怎么做才能把arrlist分开呢


共 (1) 个答案

  1. # 1 楼答案

    int[] arr = list;不复制数组,它只声明一个指向同一数组实例的变量

    您需要使用int[] arr = list.clone();int[] arr = Arrays.copyOf(arr, 0, arr.length);


    但是请注意,您不需要对数组进行排序来检查它是否已排序:只需检查每个元素,看看下面的元素是否更小

    for (int i = 0; i < arr.length - 1; ++i) {
      if (arr[i + 1] < arr[i]) return false;
    }
    return true;