I have a little program:
public class Ex2c {
public static void main(String[] args) {
int[][] matrix = {{1, 2, 3}, null};
int[] array = {5, 6};
System.out.println(array); // 0x0001
foo(matrix, array);
System.out.println(array); // 0x0001 < confuses me
System.out.println(matrix[0][0]); // 5
System.out.println(matrix[1][1]); // 9
System.out.println(array[1]); // 9
}
public static void foo(int[][] matrix, int[] array){
System.out.println(array); // 0x0001
matrix[1] = array;
array = matrix[0];
System.out.println(array); // 0x0002
matrix[0] = matrix[1];
array[0] = 42;
matrix[0][1] = 9;
}
}
The second 9 confuse me. Why are the changes to the array inside foo() not affected after foo()? I don't get this.