본문 바로가기

JAVA/배열 및 2차원배열

2차원 배열

1. 2차원 배열이란

자료형이 같은 1차원 배열의 묶음 으로 배열안에 다른 배열이 존재

할당된 공간마다 인덱스 번호 두개 부여, 각 인덱스 번호는 행과 열을 의미한다고 볼수있다. 

 

2. 선언 및 할당

 

자료형[][] 배열명;

자료형  배열명[][];

자료형[] 배열명[]

 

배열명 = new 자료형 [행크기][열크기];

ex) int[][] arr= new int[2][3];

 

arr의 구조

  열1 열2 열3
행1 [0,0] [0,1] [0,2]
행2 [1,0] [1,1] [1,2]

 

배열명에는 배열의 주소가 있으며,

HEAP 영역에 있는 해당 주소에는 각 행의 주소값이 들어가있다.

그리고 그 행의 주소에는 실재 값이 있는 형태이다.

 

STACK -> HEAP

  arr

(0x123)

(0x123)= arr[0](0x678)

->

 

->

(0x678)= arr[0,0] 값 arr[0,1]값 arr[0,2]값
arr[1](0x543) (0x543)= arr[1,0]값 arr[1,1]값 arr[1,2]값

또한 각 행마다 열의 크기를 다르게 지정할 수있다.

 

자료형[][] 배열명 = new 자료형[행크기][];

배열명[행의 인덱스] = new 자료형[열크기];

 

예시)

for문과 Scanner를 사용하여 각행마다 다른 크기지정가능하다.

Scanner sc = new Scanner(System.in);

int[][] arr2 = new int [3][];

for(int i = 0; i<arr2.length; i++){

   System.out.print(i +"행의 열의 크기를 설정하세요 : " );

    arr2[i] = new int[sc.nextInt()];

 -> 2, 3, 4 를 입력할 경우 0행에는 2열, 1행에는 3열, 2행에는 4열의 크기를 가진 2차원 배열이 생성된다.

 

 

2. 초기화 

1)인덱스를 이용한 초기화

배열명[행번호][열번호] = 값;

 

ex) arr[0][1] = 1;

 

2) for문을 이용한  초기화

int num = 0;

for(int row =0; row < arr.length; row++){<-arr.length는 행의 크기를 가져온다.

    for(int col = 0; col < arr[row].length; col++){ <-arr[row].length는 row행에 있는 열 크기를 가져온다.

       arr[row][col] = num;

        num++;

   }

}

 

3) 선언과 동시에 초기화

자료형[][] 배열명 = {{값1,값2,값3},{값1,값2,값3,값4}}; -> 2행의 배열이 생성되고,

                                                                 0번 인덱스 행은 3개의 열이 , 1번 인덱스 행은 4개의 열이 생성된며, 

                                                                 각  인덱스에는  각각의 값이 저장된다.

또는

자료형[][] 배열명 = new 자료형[][]{{값1,값2,값3},{값1,값2,값3,값4}};

과 동일하다.

 

4)출력방법

특정 인덱스 출력

System.out.print(배열[행번호][열번호]);

 

전체 출력은 출력은 중첩 포문을 이용해 출력한다.

for(int i = 0; i < 배열.length; i++){

    for(int j =0; j < 배열[i].length; j++){

       System.out.println(배열[i][j]);

    }

}

 

키보드를 이용해 행마다 다른 배열 크기를 지정하고, 배열에 0부터 1씩 증가 한 값을 넣고, 출력해보자.

'JAVA > 배열 및 2차원배열' 카테고리의 다른 글

배열의 복사  (0) 2019.12.14
배열  (0) 2019.12.14