2차원 배열

Brogod97·2022년 12월 14일
0

KH TIL

목록 보기
13/37
post-thumbnail

2차원 배열

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

2차원 배열은 할당된 공간마다 인덱스 번호 두 개 부여
(앞 번호는 행, 뒷 번호는 열 [0][0] )

{{ , }, { , }, { , }}이런 식으로 생김

  • 1차원 배열: 변수를 묶음으로 다루는 것

  • 2차원 배열: 1차원 배열묶음으로 다루는 것

  • 이 외 3차원 이상의 배열도 있음, []를 추가로 작성
    ex) int[][][] arr;


배열 선언

자료형[][] 배열명 ; 

자료형 배열명[][] ;

자료형[] 배열명[]; // 가독성 별로, 비추

[] 배열 기호 하나가 1차원을 의미하고, 개수는 차원 의미
→ 3개 있으면, 3차원


배열 할당

자료형[ ][ ] 배열명 = new 자료형[행크기][열크기]; 
int[][] arr = new int[3][4];

자료형 배열명[ ][ ] = new 자료형[행크기][열크기] ;
int arr[][] = new int[3][4];

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

→ new 이후가 실제 할당 부분


2차원 배열 구조

// 예시
int [][] arr = new int[2][4];
  1. int[][] 을 참조하는 변수 arr을 선언

  2. Heap 영역에 새롭게 2행 4열(가로 2줄, 세로4줄)에 int 2차원 배열을 할당(생성)

  3. 생성된 int 2차원 배열의 시작 주소를 arr에 대입

즉, 2차원 배열은 참조형의 참조형이다.
(2차원 배열 참조 변수 == 1차원 배열 참조변수의 묶음을 참조)

🟢 참고
String의 메모리 구조도 참조형을 참조하는 형태인데, 2차원 배열은 아님


2차원 배열 초기화

  1. 인덱스를 이용한 초기화
arr[0][0] = 1;
    
arr[1][1] = 2;
  1. for문을 이용한 초기화
for(int i = 0; i < arr.length; i++) {
    for(int j = 0; j < arr[i].length; j++) {
    	arr[i][j] = j;
    }
}
  1. 선언과 동시에 초기화
  int[][] arr = {{1, 2, 3, 4}, {5, 6, 7, 8}};
  int[][] arr = new int[][] {{1, 2, 3, 4}, {5, 6, 7, 8}};
  String fruit[][] = {{"사과", "딸기", "석류"}, {"바나나", "참외", "레몬"}};

가변 배열

: 다차원 배열 생성 시 마지막 배열차수의 크기를 지정하지 않고, 나중에 서로 크기가 다른 배열로 지정한 배열.

2차원 가변 배열 예시

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

행의 크기는 설정하고, 열의 크기는 설정하지 않음

0개의 댓글