new 키워드는 배열의 크기에 따라 힙 위치에서 메모리를 할당한다.
int[] arr = new int[3];

arr[1];
int arr[ ][ ] = new int[3][4];


다차원 배열 역시, 배열 참조는 스택 메모리 위치에 저장되고 배열 요소는 힙 내부에 저장된다.
스택 메모리에 저장된 값은 힙 내부의 이차원 배열의 주소값이다.
각 행 인덱스에 접근하면, 행의 첫 번째 요소 참조 값이 출력된다.
arr[0] // [I@5594a1b5
arr[1] // [I@6a5fc7f7
arr[2] // [I@3b6eb2ec
정리: 스택에 저장된 것은 이차원 배열의 참조이며, 힙 영역 내부로 들어가 참조를 따라가면 이차원 배열의 행 주소를 찾을 수 있다. 각 주소는 각 행의 첫 번째 요소의 주소값, 즉 시작 주소이므로 각 행 정보와 인덱스 번호를 통해 각 요소에 접근할 수 있다(ex: arr[0][1]).