JAVA:为什么数组在方法中没有改变



我想更改数组中的第一个和最后一个元素,但它不起作用。我尝试调试我的代码,数组更改仅在方法reverseArray中进行,但不在main方法中进行。那么,您可以解释一下它是如何在Java中工作的吗。

导入java.util.Arrays;公共类解决方案{

public static void main(String[] args) {
int[] array = {11, 22, 33, 44, 55, 66, 77, 88, 99};
printArray(array);
reverseArray(array);
printArray(array);
System.out.println(Arrays.toString(array));
}
public static void reverseArray(int[] array) {
int[] testArray = new int[array.length];
for (int i = testArray.length-1;i>0;i--)
testArray[i] = array[Math.abs(i - array.length+1)]; // Swap first and last element of array
System.out.println(Arrays.toString(testArray)); //Check  testArray changed
array = testArray;                             // 1 way 
System.out.println(Arrays.toString(array));     // Check that array change by 1 way
array =  Arrays.copyOf(testArray, array.length); // 2 way
System.out.println(Arrays.toString(array)); // 
}
public static void printArray(int[] array) {
for (int i : array) {
System.out.print(i + ", ");
}
System.out.println();
}

}

尝试在reverseArray((方法中执行此操作。它将更新数组。

for(int i=0; i<array.length; i++){
arr[i] = testarray[i];
}

你所做的,即简单地更改数组引用,不会让调用者看到区别,因为调用者仍然保留旧的引用。

相关内容

  • 没有找到相关文章

最新更新