Я новичок в Java. У меня есть метод, который должен вернуть новый модифицированный массив. Но после выполнения кода массив, который является параметром, также изменяется. Пожалуйста, объясните, где я изменяю исходный массив. Как это можно исправить? Я в отчаянии, потому что я не понимаю, куда я передаю ссылку вместо значения.
import java.util.Arrays;
public class question {
public static void main(String[] args) {
final int[][] inputArray = new int[][]{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
System.out.println("Original array:");
System.out.println(Arrays.deepToString(inputArray));
//Display
//[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
System.out.println("Array after delete line:");
System.out.println(Arrays.deepToString((removeLine(1, inputArray))));
//Display - ok
//[[1, 2, 3], [7, 8, 9], [0, 0, 0]]
System.out.println("The original array after using in method:");
System.out.println(Arrays.deepToString(inputArray));
//Display
//[[1, 2, 3], [4, 5, 6], [0, 0, 0]]
//I don't understand this.
}
static int[][] removeLine(int k, int[][] inpArray) {
//I copy in resultArray to keep unchanged inpArray.
int[][] resultArray = new int[inpArray.length][inpArray[0].length];
System.arraycopy(inpArray, 0, resultArray, 0, inpArray.length);
//I change resultArray.
for (int i = k; i < resultArray.length - 1; i++) {
resultArray[i] = Arrays.copyOf(resultArray[i + 1], resultArray[i + 1].length);
}
Arrays.fill(resultArray[resultArray.length - 1], 0);
//I return resultArray.
return resultArray;
}
}