Skip to content

Latest commit

 

History

History
34 lines (27 loc) · 1.52 KB

Multi-Dementinal-Array.md

File metadata and controls

34 lines (27 loc) · 1.52 KB

Multi-Dementional Array(다차원배열)

다차원 배열은 말 그대로 여러 차원의 배열이다.

int[] arr = new int[2];

라고 한다면 { 0, 1 } 로 되어있는 힙 메모리 영역의 int type을 자료구조로 하는 배열이 만들어 질 것이다. 그런데 만약 다차원 배열을 만든다면

int[][] multi_arr = new int[2][2];

{ { 0.0, 0.1 }, { 1.0, 1.1 } } 2차원의 배열은 이렇게 만들어 질 것이다.
근데 C를 배울 땐 다차원 배열은 사실 1차원 배열에서 행이 구분된 것이라고 배웠다.
정말 자바도 그럴까?

정답은 그렇지않다.이다
자바는 포인터가 존재하지 않는 Call by value의 성격을 가지고, 메모리는 jvm에 의해 할당된다.
그러면 다차원 배열에서 행의 존재를 자바는 참조만으로 어떻게 판별할까? arr이 가질 수 있는 건 배열의 0번주소 뿐인데?

실제 자바에서의 다차원 배열

실제로 자바에서 각 단계는

  1. int[][] multi_arr = new int[2][2];
  2. int[][] multi_arr;
  3. multi_arr = new int[2][];
  4. multi_arr = new int[0][4];
  5. multi_arr = new int[1][4];
    의 방식으로 이루어진다.
    배열을 받는 변수 multi_arr이 존재하고, multi_arr은 배열의 [0]과 [1]을 참조한다.
    그리고 배열[0]과 [1]은 새로운 배열의 [0] ~ [1]을 참조한다.

실제로 우리는 배열의 [0]과 [1]밖에 모르지만, 배열이 배열을 참조하며 우리는 다차원 배열을 사용할 수 있는 것이다.