0

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.

Mark Rotteveel
  • 90,369
  • 161
  • 124
  • 175
3x3cut0r
  • 1
  • 1

0 Answers0